###position:absolute;を指定した小要素の高さが計算されてしまう。
サムネイルにclick/mouseonで、画像が表示されるやつです。
html
1<!DOCTYPE html> 2 3<html> 4 5 <head> 6 <meta name="viewport" content="width=device-width,initial-scale=1"> 7 <style> 8 *{ 9 box-sizing:border-box; 10 margin:0; 11 padding:0; 12 } 13 body{ 14 display:flex; 15 flex-wrap:wrap; 16 align-content:flex-start; 17 width:100vw; 18 background:#ddd; 19 padding:10px; 20 overflow:auto; 21 } 22 h1,hr{width:100%;} 23 24 .wrap{ 25 box-sizing:content-box; 26 position:relative; 27 display:flex; 28 flex-wrap:wrap; 29 align-content:flex-start; 30 max-width:700px; 31 border:1px solid #888; 32 margin:2em auto; 33 background:green; 34 } 35 36 .wrap img{ 37 display:block; 38 width:100%; 39 } 40 41 .thumb{ 42 flex: 1 1 auto; 43 width:30%; 44 border:1px solid #ccc; 45 } 46 47 .img{ 48 flex: 1 1 auto; 49 width:100%; 50 transition:0.1s; 51 opacity:0; 52 border:1px solid #ccc; 53 } 54 #img000{ 55 /*position:absolute;*//*この記述はいらないはず*/ 56 /*bottom:0;*//*この記述はいらないはず*/ 57 opacity:1; 58 } 59 #img001, 60 #img003, 61 #img004, 62 #img005, 63 #img006{ 64 position:absolute; 65 bottom:0; 66 } 67 68 #thumb001input, 69 #thumb002input, 70 #thumb003input, 71 #thumb004input, 72 #thumb005input, 73 #thumb006input{display:none;} 74 75 #thumb001input:checked ~ #img001, 76 #thumb002input:checked ~ #img002, 77 #thumb003input:checked ~ #img003, 78 #thumb004input:checked ~ #img004, 79 #thumb005input:checked ~ #img005, 80 #thumb006input:checked ~ #img006{opacity:1;z-index:100;} 81 #thumb001:hover ~ #img001, 82 #thumb002:hover ~ #img002, 83 #thumb003:hover ~ #img003, 84 #thumb004:hover ~ #img004, 85 #thumb005:hover ~ #img005, 86 #thumb006:hover ~ #img006{opacity:1;z-index:101;} 87 88 </style> 89 </head> 90 91 <body> 92 93 <h1>demo</h1> 94 95 <hr> 96 <style> 97 #tab01in,#tab02in{display:none;} 98 #tab01,#tab02{ 99 flex: 1 1 auto; 100 width:45%; 101 color:#ccc; 102 font-size:20px; 103 text-align:center; 104 padding:1em; 105 margin-right:1px; 106 background:#eee; 107 transition:0.1s; 108 } 109 #tab02{margin:0;} 110 111 #tab_cont1, 112 #tab_cont2{ 113 display:none; 114 flex: 1 1 auto; 115 width:90%; 116 background:#fff; 117 } 118 119 #tab01in:checked ~ #tab01, 120 #tab02in:checked ~ #tab02{ 121 color:#555; 122 outline: 1px solid #ddd; 123 outline-offset: -3px; 124 background:#fff; 125 } 126 127 #tab01in:checked ~ #tab_cont1, 128 #tab02in:checked ~ #tab_cont2{ 129 display:block; 130 } 131 132 </style> 133 <input id="tab01in" type="radio" name="tab_radio" checked="checked"></input> 134 <label for="tab01in" id="tab01">Pattern1</label> 135 <input id="tab02in" type="radio" name="tab_radio"></input> 136 <label for="tab02in" id="tab02">Pattern2</label> 137 138 <div id="tab_cont1"> 139 140 <style> 141 142 </style> 143 144 <div class="wrap"> 145 <input id="thumb001input" type="radio" name="myradio2"></input> 146 <label for="thumb001input" id="thumb001" class="thumb"> 147 <img src="1.png"> 148 </label> 149 <input id="thumb002input" type="radio" name="myradio2"></input> 150 <label for="thumb002input" id="thumb002" class="thumb"> 151 <img src="2.png"> 152 </label> 153 <input id="thumb003input" type="radio" name="myradio2"></input> 154 <label for="thumb003input" id="thumb003" class="thumb"> 155 <img src="3.png"> 156 </label> 157 <input id="thumb004input" type="radio" name="myradio2"></input> 158 <label for="thumb004input" id="thumb004" class="thumb"> 159 <img src="4.png"> 160 </label> 161 <input id="thumb005input" type="radio" name="myradio2"></input> 162 <label for="thumb005input" id="thumb005" class="thumb"> 163 <img src="5.png"> 164 </label> 165 <input id="thumb006input" type="radio" name="myradio2"></input> 166 <label for="thumb006input" id="thumb006" class="thumb"> 167 <img src="6.png"> 168 </label> 169 <div id="img000" class="img"><img src="0.png"></div> 170 <div id="img001" class="img"><img src="1.png"></div> 171 <div id="img002" class="img"><img src="2.png"></div> 172 <div id="img003" class="img"><img src="3.png"></div> 173 <div id="img004" class="img"><img src="4.png"></div> 174 <div id="img005" class="img"><img src="5.png"></div> 175 <div id="img006" class="img"><img src="6.png"></div> 176 </div> 177 178 </div> 179 180 <div id="tab_cont2"> 181 182 <style> 183 184 </style> 185 186 another content 187 188 </div> 189 190 <hr> 191 192 </body> 193 194</html>
ほんとは「0」の画像の上に「1」〜「6」の画像がかぶるはず(小要素にposition:absolute;を指定すると、親要素はその子要素の大きさを無視したサイズで描画される)
でも、実際にはしっかりと小要素の高さが算出されてしまっています。
cssでコメントアウトした部分を有効にすれば、期待通りの表示にはなりますが、この方法は個人的にしっくりきません。
どなたか原因に心当たりはないでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/17 14:28