2017-02-14 7 views
1

グリッドとして表示したいWebページのデータリストがあります。古典的には、私は<table>を使ってこれを行ったかもしれませんが、データは意味論的な表形式ではないので、固定数の列を持つ理由はありません(セルが自動的に折り返して、変更)。罫線崩れのあるHTMLグリッドレイアウト

表示要素をdisplay: inline-blockに設定し、widthに設定することでこれを行うことができます。これは私がレイアウトの点で欲しいものです。しかし、それはまた、borderを設定したいときに問題を引き起こします。境界線は要素間で倍増し、外側では1つだけ表示されます。

テーブルを使用していた場合は、border-collapse: collapseと設定しても問題ありません。しかし、これはinline-blockソリューションでは何もしないようです。

inline-blockの連続する要素の境界をどのように崩壊できますか?またはこれを可能にするグリッドレイアウトを作成する他の方法がありますか?

+1

これが役立つことがあります。ボーダーのために

、あなたは影からそれらを描き、それらをオーバーラップするように、負のマージンを追加することができインラインブロック要素](https://css-tricks.com/fighting-the-space-between-inline-block-elements/) –

答えて

1

現在フレックスを使用している可能性があります。 [の間のスペースをファイティング:

ul , li{ 
 
    display:flex; 
 
    flex-wrap:wrap; 
 
    padding:1em; 
 
} 
 
li { 
 
    min-width:40px;/* you can let content decide */ 
 
    min-height:40px;/* you can let content decide */ 
 
    box-shadow:inset 0 0 0 1px; 
 
    margin:0 -1px -1px 0; 
 
    /* flex makes also x,y alignement easy */ 
 
    align-items:center; 
 
    justify-content:center; 
 
}
<ul> 
 
    <li>1</li> 
 
    <li>2</li> 
 
    <li>3</li> 
 
    <li>4</li> 
 
    <li>5</li> 
 
    <li>6</li> 
 
    <li>7</li> 
 
    <li>8</li> 
 
    <li>9</li> 
 
    <li>10</li> 
 
    <li>11</li> 
 
    <li>12</li> 
 
    <li>13</li> 
 
    <li>14</li> 
 
    <li>15</li> 
 
    <li>16</li> 
 
    <li>17</li> 
 
    <li>18</li> 
 
    <li>19</li> 
 
    <li>20</li> 
 
    <li>21</li> 
 
    <li>22</li> 
 
    <li>23</li> 
 
    <li>24</li> 
 
    <li>25</li> 
 
    <li>26</li> 
 
    <li>27</li> 
 
    <li>28</li> 
 
    <li>29</li> 
 
    <li>30</li> 
 
    <li>31</li> 
 
    <li>32</li> 
 
    <li>33</li> 
 
    <li>34</li> 
 
    <li>35</li> 
 
    <li>36</li> 
 
    <li>37</li> 
 
    <li>38</li> 
 
    <li>39</li> 
 
    <li>40</li> 
 
    <li>41</li> 
 
    <li>42</li> 
 
    <li>43</li> 
 
    <li>44</li> 
 
    <li>45</li> 
 
    <li>46</li> 
 
    <li>47</li> 
 
    <li>48</li> 
 
    <li>49</li> 
 
    <li>50</li> 
 
    <li>51</li> 
 
    <li>52</li> 
 
    <li>53</li> 
 
    <li>54</li> 
 
    <li>55</li> 
 
    <li>56</li> 
 
    <li>57</li> 
 
    <li>58</li> 
 
    <li>59</li> 
 
    <li>60</li> 
 
    <li>61</li> 
 
    <li>62</li> 
 
    <li>63</li> 
 
    <li>64</li> 
 
    <li>65</li> 
 
    <li>66</li> 
 
    <li>67</li> 
 
    <li>68</li> 
 
    <li>69</li> 
 
    <li>70</li> 
 
    <li>71</li> 
 
    <li>72</li> 
 
    <li>73</li> 
 
    <li>74</li> 
 
    <li>75</li> 
 
    <li>76</li> 
 
    <li>77</li> 
 
    <li>78</li> 
 
    <li>79</li> 
 
    <li>80</li> 
 
    <li>81</li> 
 
    <li>82</li> 
 
    <li>83</li> 
 
    <li>84</li> 
 
    <li>85</li> 
 
    <li>86</li> 
 
    <li>87</li> 
 
    <li>88</li> 
 
    <li>89</li> 
 
    <li>90</li> 
 
    <li>91</li> 
 
    <li>92</li> 
 
    <li>93</li> 
 
    <li>94</li> 
 
    <li>95</li> 
 
    <li>96</li> 
 
    <li>97</li> 
 
    <li>98</li> 
 
    <li>99</li> 
 
    <li>100</li> 
 
</ul>

http://codepen.io/gc-nomade/pen/BpMpZb

+0

'margin:-1px'の設定は' inline-block'メソッドで動作します。よく –

+1

@TomHuntはいそれは適切な表示またはフロートで行います。フレックスに関することは次のとおりです:行のすべてのボックスが、コンテンツによってオーバーフローする可能性のある高さを修正しない限り、floatまたはinline-block/inline-tableが失敗する同じ高さになります。 –

1

私の頭部に浮かぶ可能性のある解決策:

1)ブロックのマージンは、どこにあるかに応じて設定します。境界線が重なるように、クラス(つまり、右端、左端、サンドイッチ)を持ち、余白を操作できます。

2)中央のブロックの左右の境界を0pxに設定します。

CSS 
.sandwiched {border:1px 0px 1px 0px;} 
.sandwiched {border-left:0px; border-right:0px;} 

EDIT::二つの方法私はで行くと思いますそれはコメントににリンクされている空白迷惑を学ぶことをお勧めします。この修正を適用すると、調整する必要があるピクセルが移動することに注意してください。