【发布时间】:2015-07-17 21:59:49
【问题描述】:
如果单选按钮可以放在一行中,我想以不同的方式设置它们的样式。例如:
第一个容器没有足够的空间来容纳单行中的所有单选按钮。因此,它们垂直显示为普通的单选按钮。
第二个容器有足够的空间。因此,单选按钮显示为按钮。
是否有可能仅使用 CSS 来实现此行为?
如果没有,欢迎使用 Javascript “hack”。
HTML
<div class="container radio">
<div>
<input id="a1" type="radio" name="radio">
<label for="a1">Yes,</label>
</div>
<div>
<input id="a2" type="radio" name="radio">
<label for="a2">it</label>
</div>
<div>
<input id="a3" type="radio" name="radio">
<label for="a3">is</label>
</div>
<div>
<input id="a4" type="radio" name="radio">
<label for="a4">possible</label>
</div>
<div>
<input id="a5" type="radio" name="radio">
<label for="a5">to</label>
</div>
<div>
<input id="a6" type="radio" name="radio">
<label for="a6">achieve</label>
</div>
<div>
<input id="a7" type="radio" name="radio">
<label for="a7">this</label>
</div>
</div>
<div class="container buttons">
<div>
<input id="b1" type="radio" name="buttons">
<label for="b1">Yes,</label>
</div>
<div>
<input id="b2" type="radio" name="buttons">
<label for="b2">it</label>
</div>
<div>
<input id="b3" type="radio" name="buttons">
<label for="b3">is</label>
</div>
<div>
<input id="b4" type="radio" name="buttons">
<label for="b4">possible</label>
</div>
</div>
CSS (LESS)
.container {
display: flex;
width: 220px;
padding: 20px;
margin-top: 20px;
border: 1px solid black;
&.radio {
flex-direction: column;
}
&.buttons {
flex-direction: row;
> div {
input {
display: none;
&:checked + label {
background-color: #ADFFFE;
}
}
label {
padding: 5px 10px;
margin: 0 1px;
background-color: #ccc;
}
}
}
}
【问题讨论】:
-
虽然非常感谢 JS Bin 复制的链接,但您必须在问题本身中发布相关代码以防止链接腐烂。如果您的目标是提供演示(再次感谢:非常感谢!),那么您可以简单地使用 Stack Overflow 的“Stack Snippets”功能。
标签: javascript html css flexbox