css实现菜单栏效果以及用hover属性去控制另一个元素样式的问题

Posted huihuifighting

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css实现菜单栏效果以及用hover属性去控制另一个元素样式的问题相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>浮动</title>
    <style type="text/css">
            *{
                margin: 0;
                padding: 0;
            }
            .one{
                text-decoration: none;
                color:red;
                font-size: 20px;
         /*position: relative;*/ } .two{ width: 200px; height: 100px; background: blue; display: none;
         /*position: absolute;*/
         
} .one:hover + .two{ display: block; } </style> </head> <body> <div class="one">
            你好
            <div class="two">我一点也不好</div>    
        </div>    
        
        <div style="width: 100px; height: 100px; background-color: yellow">我是下面的元素</div> </body> </html

实现鼠标经过   你好   显示    我一点也不好  的效果方法:

首先使用display:none 隐藏要显示的菜单栏元素,当鼠标经过一个元素时将它的display改成block。

 

鼠标经过one元素时怎么选择two元素的问题:

1.当两个p元素为包含关系时,选择器应该这样写.one:hover .two

     <p class="one">
        你好    <p class="two">我一点也不好</p>
     </p>

 

2.当两个p元素为并列关系时,选择器应该这样写.one:hover  + .two

    <p class="one">你好</p>    
        <p class="two">我一点也不好</p> 

 

  经过验证,1的写法不能显示效果,因为浏览器默认把one的开始标签和two的结束标签 认为是一个...嗯...整体标签。此时改变其中一个p标签为div,或者两个p标签都改成div就有效果。为什么div可以,p就不行?

好像块状元素可包含内联元素或某些块元素,但内联元素不可包含块元素,只能包含内联元素。

     <p class="one">
        你好    
          <p class="two">我一点也不好</p> 
     </p>

 

这个时候在下面再加入一个元素

<body>
        <p class="one">
            你好
        </p>    
        <p class="two">我一点也不好</p>    
        <div style="width: 100px; height: 100px; background-color: yellow">我是下面的元素</div>
</body>

 

鼠标未移到one时效果:

 

技术图片

鼠标移上去之后效果,下面的元素会被顶开:

技术图片

解决办法:因为.two 显示时是存在于文档流中的,给.one设置position:relative,.two设置position:absolute,使下拉菜单脱离了文档流来解决。

加了position:absolute 已经实现效果 为什么还要给.one设置position:relative????十二点了,我不想再想了!明天再说!

 

以上是关于css实现菜单栏效果以及用hover属性去控制另一个元素样式的问题的主要内容,如果未能解决你的问题,请参考以下文章

JS学习笔记: 使用原生JS 实现导航栏下多级分类弹出效果

js写导航栏hover效果

用div+css做下拉菜单,当鼠标移向2级菜单时,为啥1级菜单的a:hover背景色就不管用了?

为啥用css中伪类hover实现(鼠标悬停显示文字,鼠标移走文字消失)的效果失败(脚本没有错)?

css 当中如何实现一个元素的hover, focus 状态改变其他元素的样式

css 跳转页面后,菜单成选中状态