我有四个单选按钮来切换:
包括金矿在内的
全硅磷化金
这些地雷是地图上的圆形元素:
<a href="#mine1" id="mine1" style="top: 74.72%; left: 25.89%; width: 1vw; height: 1vw;" class="sili phosp"></a>
<a href="#mine2" id="mine2" style="top: 45.25%; left: 45.21%; width: 1vw; height: 1vw;" class="phosp"></a>
<a href="#mine3" id="mine3" style="top: 54.22%; left: 25.89%; width: 1vw; height: 1vw;" class="gold"></a>
<a href="#mine4" id="mine4" style="top: 41.75%; left: 75.34%; width: 1vw; height: 1vw;" class="phosp gold"></a>
<a href="#mine5" id="mine5" style="top: 78.72%; left: 25.49%; width: 1vw; height: 1vw;" class="sili phosp gold"></a>
<a href="#mine6" id="mine6" style="top: 47.42%; left: 88.65%; width: 1vw; height: 1vw;" class="phosp"></a>
<a href="#mine7" id="mine7" style="top: 21.85%; left: 10.42%; width: 1vw; height: 1vw;" class="phosp"></a>
<a href="#mine8" id="mine8" style="top: 14.21%; left: 32.85%; width: 1vw; height: 1vw;" class="sili gold"></a>
<a href="#mine9" id="mine9" style="top: 65.64%; left: 31.21%; width: 1vw; height: 1vw;" class="sili"></a>
例如,当选中“硅矿”按钮时,我希望那些带有硅的地雷是可见的,而那些没有这个属性的地雷要隐藏起来。
如何将地雷显示设置为可见/隐藏,根据哪个单选按钮被选中?
发布于 2021-01-26 20:15:15
您需要一个结构,在那里可以使用筛选选择器,父选择器在纯CSS中是不会雪崩的。因此,您需要从标签中提取输入,并使用for属性将每个标签与其相关的输入链接起来(没有它可以工作,但单击标签将无法使用)。
可以与:checked
pseud类和筛选器~
一起使用的结构示例
/* Demo : toggle display from an id attribute to later sibblings of a specific class */a {
border: solid;
display: none;
}
a:before {/* show them by their class names */
display: inline-block;
content: attr(class);
padding:0.15em 0.5em;
}
#map {margin:1em;padding:1em;border:solid;}
#sili:checked ~ #map .sili,
#phos:checked ~ #map .phosp,
#gold:checked ~ #map .gold,
#allmines:checked ~ #map a {
display: inline;
}
<input type="radio" name="mineRadio" id="allmines" checked> <label for='allmines'> All
</label>
<input type="radio" name="mineRadio" id="sili"><label for='sili'> Silicium
</label>
<input type="radio" name="mineRadio" id="phos"> <label for='phos'> Phosphate
</label>
<input type="radio" name="mineRadio" id="gold"> <label for='gold'> Gold
</label> The mines are circle-shaped elements on top of a map:
<div id="map">
<a href="#mine1" id="mine1" style="top: 74.72%; left: 25.89%; width: 1vw; height: 1vw;" class="sili phosp"></a>
<a href="#mine2" id="mine2" style="top: 45.25%; left: 45.21%; width: 1vw; height: 1vw;" class="phosp"></a>
<a href="#mine3" id="mine3" style="top: 54.22%; left: 25.89%; width: 1vw; height: 1vw;" class="gold"></a>
<a href="#mine4" id="mine4" style="top: 41.75%; left: 75.34%; width: 1vw; height: 1vw;" class="phosp gold"></a>
<a href="#mine5" id="mine5" style="top: 78.72%; left: 25.49%; width: 1vw; height: 1vw;" class="sili phosp gold"></a>
<a href="#mine6" id="mine6" style="top: 47.42%; left: 88.65%; width: 1vw; height: 1vw;" class="phosp"></a>
<a href="#mine7" id="mine7" style="top: 21.85%; left: 10.42%; width: 1vw; height: 1vw;" class="phosp"></a>
<a href="#mine8" id="mine8" style="top: 14.21%; left: 32.85%; width: 1vw; height: 1vw;" class="sili gold"></a>
<a href="#mine9" id="mine9" style="top: 65.64%; left: 31.21%; width: 1vw; height: 1vw;" class="sili"></a>
</div>
关于双输入/标签的信息:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label
HTML元素表示用户界面中某项的标题。
for属性
对于与<label>
元素相同的文档中可标记的与表单相关的元素的<label>
。文档中具有与for
属性值匹配的id的第一个元素是该label元素的标记控件(如果它是一个可标记元素)。如果它不是可标记的,那么for
属性就没有效果。如果还有其他元素也与id
值相匹配,则在文档的后面不考虑这些元素。注意:只要属性指向包含的控件元素,<label>
元素就可以同时具有for属性和包含的控件元素。
关于筛选选择器的信息:https://css-tricks.com/child-and-sibling-selectors/
https://stackoverflow.com/questions/65906158
复制相似问题