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????十二點了,我不想再想了!明天再說!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM