事实上,用相对定位解决确实不好,两栏之间会凭空多出一行空行。
后来一想,直接去掉span,把文字写在label里,这时候checkbox就有点碍事儿了
height: 0 在 iE11 下效果非常棒,话说,Checkbox 在 IE11 下可以随意变大变小的,不过在 Firefox 下就不行了,死活有 13px 高度。
display: none 居然成功了,虽然看不到checkbox,但是它还是存在的。label也可以很好的接收点击。
现在的代码:
HTML 部分:
div,
input {
margin: 0;
padding: 0;
box-sizing: border-box;
}
div.cards {
width: 200px;
min-height: 40px;
}
div.cards input {
display: none; /*直接不显示就好*/
}
div.cards label {
display: block;
width: 100%;
height: 40px;
background-color: #66aadd;
line-height: 40px; /*令文字居中*/
text-align: center;
}
div.cards div {
width: 100%;
height: 240px;
background-color: #abcdef;
display: block;
height: 0px;
transition-duration: 0.2s;
overflow: hidden;
padding: 0 5px;
}
div.cards input:checked + div {
height: 240px;
}
div.cards img {
margin: 0;
padding: 0;
background-color: #123456;
float: left;
margin: 5px;
margin-top: 10px;
}
div.cards p {
margin: 0;
padding: 0;
margin: 5px;
}
html部分
<div class="cards">
<label for="b1">123</label>
<input type="checkbox" id="b1" />
<div>
<img width="50" height="70" />
<p>
wqej qke lklk kjlqjle llz kljs skjflks slkjf, sjf slfj. sfhk, kjsf skfn,
uheifw. wefhwef oqjiweoij kqwe oo qwei sc skhnfj sd, wfkh kwejf kjwef
hnwjek kjwfeh wke, kwejfk kjf.
</p>
</div>
</div>
<div class="cards">
<label for="b2">345</label>
<input type="checkbox" id="b2" />
<div>
<p>
wqej qke lklk kjlqjle llz kljs skjflks slkjf, sjf slfj. sfhk, kjsf skfn,
uheifw. wefhwef oqjiweoij kqwe oo qwei sc skhnfj sd, wfkh kwejf kjwef
hnwjek kjwfeh wke, kwejfk kjf.
</p>
</div>
</div>
<div class="cards">
<label for="b3">567</label>
<input type="checkbox" id="b3" />
<div>
<h3>Title 3</h3>
</div>
</div>
在每一部分里可以实现图文混排,纯文字等等,当然这就是另一回事儿了 效果图:
IE11:
Firefox:

Opera, 现在的opera是webkit内核的吧:
