下面这段代码为什么实现不了鼠标悬浮列表出现

下面这段代码为什么实现不了鼠标悬浮列表出现


<!DOCTYPE html>

<html>


<head>

    <meta charset="UTF-8">

    <title>display属性</title>

    <style type="text/css">

    div {

        width: 200px;

    }

    /*补充样式*/

    li{display:none;}

    a:hover li{display:line;}

    </style>

</head>


<body>

    <div>

        <h2><a href="">家电</a></h2>

        <ul>

            <li>冰箱</li>

            <li>空调</li>

            <li>洗衣机</li>

        </ul>

    </div>

</body>


</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

5回答
全栈小白哥 2019-08-02 16:55:38

选择器使用匹配错误,可以通过h2:hover~ul li{display:line}实现

好帮手慕糖 2019-07-24 19:11:29

同学你好,css是无法实现移入子级,改变父级的,不过后面学习了js之后,可以用js来实现。可以继续往后学习哦。

希望能帮助到你,祝学习愉快!

coffeehyh 2019-07-15 11:13:41

这是因为

a:hover li{} 表示的是 匹配li,li要满足条件:li是a的后代节点。

而这里,a其实是跟ul为兄弟节点,li是ul的后代节点,所以li不是a的后代节点,因此该css代码是无效的。

另外,同学你display的属性值也写错了,应该是inline而不是line

这里可以使用这种办法,即:div:hover li {display: inline}。即悬停到祖先元素控制后代元素的显示与隐藏,这样,可以避免,当你鼠标移动到li上的时候,li又隐藏了的情况:

比方说,代码改为:

ul {display: none;}

h2:hover+ul{display:block}

你会发现,当你鼠标悬停再h2上的时候,可以让ul显示出来,但是,当你鼠标移动到列表上的时候,ul就又隐藏了。

实际应用应当是通过悬停来控制菜单的显示与隐藏,如果使用后一种方法,则显示出来的菜单还是没法进行点击选择,因此意义不大。

结论:比较好的实现方法就是:

A {display:none;}
A的父元素:hover A {display: inline;}/*or block inline-block*/

ps: 上面的+号表示后面的元素是前面元素的相邻兄弟节点。

  • 提问者 笑笑之淳 #1
    谢谢。那我想操作子元素时,父元素发生变化怎么办?
    2019-07-24 18:53:57
  • coffeehyh 回复 提问者 笑笑之淳 #2
    这个问题可能意义不大。 因为你经过子元素的时候,由于子元素就是在父元素的里面,所以其实同时经过了父元素。 所以你这个问题可以改为,经过某个元素A及其内部的子元素时,如何控制元素A的变化? 答案时直接A:hover {/*样式内容*/}即可。
    2019-07-25 21:27:36
好帮手慕糖 2019-07-15 11:09:28

同学你好,1、这里的hover应该设置给div,一个空格的话是后代元素,而a与li不是后代关系哦。建议:可以设置给div。

2、设置为行内元素,应该是inline,少了一个in。如下:

http://img1.sycdn.imooc.com//climg/5d2beda80001307d03880180.jpg

3、建议:可以使用通配符去掉元素的内外边距,例:

http://img1.sycdn.imooc.com//climg/5d2bee000001c6a902600130.jpg

4、建议:可以设置下a的样式,字体颜色与下划线等,例:

http://img1.sycdn.imooc.com//climg/5d2bee520001f83803840125.jpg

希望能帮助到你,欢迎采纳。

祝学习愉快!


  • 提问者 笑笑之淳 #1
    那我要是想经过子元素的时候,父元素发生变化,怎么做?
    2019-07-24 18:51:29
  • coffeehyh 回复 提问者 笑笑之淳 #2
    这个问题可能意义不大。 因为你经过子元素的时候,由于子元素就是在父元素的里面,所以其实同时经过了父元素。 所以你这个问题可以改为,经过某个元素A及其内部的子元素时,如何控制元素A的变化? 答案时直接A:hover {/*样式内容*/}即可。
    2019-07-25 21:27:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师