4-7编程题为何不生效
来源:4-7 编程练习
vivi_li
2020-04-18 09:53:44
<style type="text/css">
/*样式补充*/
/*取消默认样式*/
body,div,h3,ul,li{
padding: 0;
margin: 0;
}
li{
list-style: none;
}
div.big{
width: 100px;
margin: 10px auto;
border: 1px solid #E1E1E1;
text-align: center;
}
h3{
border-bottom: 1px solid #E1E1E1;
background-color: #EEEEEE;
}
.div2 h3, .div3 h3 {
border-top: 1px solid #E1E1E1;
}
li{
display: none;
}
.div1:hover .elec{
display: block;
}
</style>
</head>
<body>
<div class="big">
<div class="div1">
<h3>家电</h3>
<ul class="elec">
<li>冰箱</li>
<li>洗衣机</li>
<li>空调</li>
</ul>
</div>
<div class="div2">
<h3>洗护</h3>
<ul class="wash">
<li>洗衣液</li>
<li>消毒液</li>
<li>柔顺剂</li>
</ul>
</div>
<div class="div3">
<h3>衣物</h3>
<ul class="clothes">
<li>衬衫</li>
<li>裤子</li>
<li>卫衣</li>
</ul>
</div>
</div>
</body>
3回答
同学你好,因为.big h3:hover li这种写法是后代选择器,表示鼠标移入h3时,让它的后代元素li显示出来,但html结构中li不是h3后代元素,而是h3的相邻兄弟元素ul的后代元素,所以无法实现效果。如下:
可以给div里面的h3设置hover样式,但是需要使用到后面学习的css3选择器,即:相邻兄弟选择器。
老师这里给同学写个示例,同学先了解下,后面讲解了,同学自然就懂了。
祝学习愉快~
好帮手慕慕子
2020-04-18
同学你好, 因为一开始是给li设置display属性为none让其隐藏,在鼠标移入时,设置ul的display属性为block, 无法让li显示,所以没有效果。
建议:可以调整为初始设置ul隐藏,鼠标移入也让ul显示即可
另,可以统一给big下的div添加伪类hover,找到对应的ul, 让其显示出来,简化代码书写。
同学可以测试理解下,祝学习愉快~
vivi_li
提问者
2020-04-18
如果在ul外面再包裹一个div标签 则设置div的display 显示与隐藏 可以生效 所以请解答下
相似问题