我希望在没有JS的情况下按#test
来最小化#btn
。我写的是这样的:
CSS
#test {
width: 400px;
height: 600px;
background-color: green;
transition: all 350ms;
-o-transition: all 350ms;
-moz-transition: all 350ms;
-webkit-transition: all 350ms;
overflow: hidden;
}
#wrapper:first-child:active #test {
width: 0px;
}
HTML
<div id = "wrapper">
<button id = "btn">BTN!!</button>
<div id = "test">e wvwe</div>
</div>
不幸的是,:active
与#wrapper
有关,而与:first-child
无关(即#btn
)。
怎么做我想要的?
答案 0 :(得分:1)
有几件事。您可能想查看这篇方便的文章:http://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048
您的第一胎选择无效,因为#wrapper不是第一个孩子。 :first-child
与同一父母的子女有关。
同样地,您之前的选择器试图选择 在内的第一个孩子而你的div不在按钮内的ID:即使第一个子选择器已经工作了。
所以你需要选择一个按钮元素,它是#wrapper的直接子元素,因此选择>
,然后选择需要+
的相邻兄弟。
你得到了......
#wrapper > button:active + #test {
width: 0px;
}
最后,您应该知道:active
仅在按住鼠标按钮时有效。如果你想将其切换为“点击”,你需要Javascript(或像JQuery这样的JS库)。
答案 1 :(得分:1)
将您的选择器更新为element+element
选择器,如下所示:
#wrapper button:active+#test {
width: 0px;
}
答案 2 :(得分:1)