nicepainkiller 2019-06-21
关于:hover这个伪类选择器的使用方法,之前耽误了我超多时间,测试了蛮久,拿出来说下。
通过伪元素、伪类无法实现子元素选择父元素,后面的元素选择前面的元素。
.grandfather { height: 300px; background: gray; } .father { height: 200px; background: blue; } .grandfather div p { margin: 0; background: yellow; border: solid 1px red; }
<div class="grandfather"> <div class="father"> <p class="chlid1" id="child1-1">1</p> <p class="chlid2">2</p> <p class="chlid3">3</p> </div> </div>
问题:从父元素向子元素选择时:hover后面能选择什么?
/*从父元素向子元素【类名】选择——无效*/ .father:hover .child1 { background: black; } /*从父元素向子元素【ID名】选择——无效*/ .father:hover #child1 { background: black; } /*从父元素向子元素【标签名】选择——有效*/ .father:hover p { background: black; } /*从父元素向子元素选择——有效*/ .grandfather:hover div p { background: black; } /*从父元素向子元素选择——无效*/ .grandfather:hover .grandfather div p { background: black; }
结论: :hover后面可选择标签名,但不可以选择类名、ID名【有都不能有】。
问题:怎么选择自己?
/*这样选择自己——有效*/ .grandfather:hover { background: black; } /*这样选择自己——有效*/ div.grandfather:hover { background: black; }
结论:选择自己可以使用div.类名或者直接用类名
问题:在:hover前加一个空格会怎样?
/*这样选择——有效【但是只针对鼠标悬浮的位置,且.grandfather不算在内】*/ .grandfather :hover { background: black; } /*这样选择子元素——无效*/ .grandfather :hover div p { background: black; }
结论:可以在:hover前加空格,但是它之后不可再用别的标签。
:hover后面可选择标签名,但不可以选择类名、ID名【有都不能有】。
选择自己可以使用div.类名或者直接用类名
可以在:hover前加空格,但是它之后不可再用别的标签。