这是问题所在:focus-within 适用于标记示例中的所有子元素:
<a class="open" href="#">open menu</a>
<div class="parent">
<a class="link1" href="#">link1</a>
<a class="link2" href="#">link2</a>
<div class="menu2">...123</div>
<a class="link3" href="#">link3</a>
<div class="menu3">...456</div>
</div>
在此示例中,我使用 a.link2 和 a.link3 在它们处于焦点时打开菜单。我需要设置 a.link1 来关闭 div.parent 我已经做到了:
<style>
.parent{width:200px;height:100%;position:fixed;left:-30em;background:lightyellow;}
.open:focus + .parent,.parent:hover{left:0;}/*opening sidebar*/
.parent:focus-within{left:-20em;}/*closing sidebar*/
.parent:focus-within + a.link1{left:-20em}/*closing sidebar*/
</style>
当我点击 a.link2 和 a.link3 时,它也会关闭侧边栏,我只想申请 a.link1 才能关闭侧边栏!
我如何设置 a.link1 以关闭侧边栏而不是(a.link2 和 a.link3 和 ....)只有 css,没有 JavaScript?有什么办法吗?
.parent{width:200px;height:100%;position:fixed;left:-30em;background:lightyellow;}
.open:focus + .parent,.parent:hover{left:0;}/*opening sidebar*/
.parent:focus-within{left:-20em;}/*closing sidebar*/
.parent:focus-within + a.link1{left:-20em}/*closing sidebar*/
<a class="open" href="#">open menu</a>
<div class="parent">
<a class="link1" href="#">link1</a>
<a class="link2" href="#">link2</a>
<div class="menu2">...123</div>
<a class="link3" href="#">link3</a>
<div class="menu3">...456</div>
</div>