如何允许使用箭头键在组中导航收音机,并使它们不可见并占用零 space?
How to allow navigating radios in a group with arrow keys, and also make them invisible and take up zero space?
在下面的代码片段中,您可以点击 select 选项,也可以使用箭头键在它们之间导航。
但是在左边隐藏单选按钮的地方有一个space,因为它占用了space。
可以通过将收音机的 display
设置为 none
来删除此 space,但这会破坏箭头键导航功能。
如何在不破坏箭头键导航的情况下摆脱 space?
* {
margin: 0;
padding: 0;
}
body {
background-color: DodgerBlue;
}
div {
background-color: black;
color: white;
}
input[type=radio] {
float: left;
opacity: 0;
}
input[type=radio]:checked~label>div {
background-color: white;
color: black;
}
ul {
list-style: none;
}
<ul>
<li>
<input type="radio" name="group" id="a">
<label for="a">
<div>foo</div>
</label>
</li>
<li>
<input type="radio" name="group" id="b">
<label for="b">
<div>bar</div>
</label>
</li>
<li>
<input type="radio" name="group" id="c">
<label for="c">
<div>baz</div>
</label>
</li>
</ul>
您可以将它们设置为 position: absolute
以将它们从布局的标准流程中删除。您还可以给它们一个非常高的 top
值以在屏幕上渲染它们。
* {
margin: 0;
padding: 0;
}
body {
background-color: DodgerBlue;
}
div {
background-color: black;
color: white;
}
input[type=radio] {
position: absolute;
opacity: 0;
top: -9999px;
}
input[type=radio]:checked~label>div {
background-color: white;
color: black;
}
ul {
list-style: none;
}
<ul>
<li>
<input type="radio" name="group" id="a">
<label for="a">
<div>foo</div>
</label>
</li>
<li>
<input type="radio" name="group" id="b">
<label for="b">
<div>bar</div>
</label>
</li>
<li>
<input type="radio" name="group" id="c">
<label for="c">
<div>baz</div>
</label>
</li>
</ul>
在下面的代码片段中,您可以点击 select 选项,也可以使用箭头键在它们之间导航。
但是在左边隐藏单选按钮的地方有一个space,因为它占用了space。
可以通过将收音机的 display
设置为 none
来删除此 space,但这会破坏箭头键导航功能。
如何在不破坏箭头键导航的情况下摆脱 space?
* {
margin: 0;
padding: 0;
}
body {
background-color: DodgerBlue;
}
div {
background-color: black;
color: white;
}
input[type=radio] {
float: left;
opacity: 0;
}
input[type=radio]:checked~label>div {
background-color: white;
color: black;
}
ul {
list-style: none;
}
<ul>
<li>
<input type="radio" name="group" id="a">
<label for="a">
<div>foo</div>
</label>
</li>
<li>
<input type="radio" name="group" id="b">
<label for="b">
<div>bar</div>
</label>
</li>
<li>
<input type="radio" name="group" id="c">
<label for="c">
<div>baz</div>
</label>
</li>
</ul>
您可以将它们设置为 position: absolute
以将它们从布局的标准流程中删除。您还可以给它们一个非常高的 top
值以在屏幕上渲染它们。
* {
margin: 0;
padding: 0;
}
body {
background-color: DodgerBlue;
}
div {
background-color: black;
color: white;
}
input[type=radio] {
position: absolute;
opacity: 0;
top: -9999px;
}
input[type=radio]:checked~label>div {
background-color: white;
color: black;
}
ul {
list-style: none;
}
<ul>
<li>
<input type="radio" name="group" id="a">
<label for="a">
<div>foo</div>
</label>
</li>
<li>
<input type="radio" name="group" id="b">
<label for="b">
<div>bar</div>
</label>
</li>
<li>
<input type="radio" name="group" id="c">
<label for="c">
<div>baz</div>
</label>
</li>
</ul>