欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

原生JS實(shí)現(xiàn)懸停下拉菜單

 更新時(shí)間:2021年09月16日 09:20:31   作者:草原的揚(yáng)鵝  
這篇文章主要為大家詳細(xì)介紹了原生JS實(shí)現(xiàn)懸停下拉菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

JS實(shí)現(xiàn)懸停下拉菜單,這個(gè)是前端面試中遇到的場景題,原理就是修改菜單樣式的display屬性的屬性值從none=>block,具體實(shí)現(xiàn)見下,重點(diǎn)關(guān)注下面幾個(gè)部分。

  • 給每個(gè)section設(shè)置浮動(dòng)。
  • 將可繼承屬性設(shè)置在section父盒子上,字體相關(guān)的屬性。
  • 設(shè)置懸停時(shí),懸停在section父盒子上,子元素head背景改變;也可以直接懸停在head類,寫作`.head:hover`。但是會(huì)出現(xiàn)一個(gè)問題就是當(dāng)鼠標(biāo)懸停在li上的時(shí)候head會(huì)變回最初的樣子,因此推薦將hover放在section上。
  • 但是menu展示只能懸停在父盒子section上,因?yàn)楸旧聿徽故荆ú荒軕彝T趆ead上,head不是父盒子)。
<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>懸停下拉菜單</title>
    <style>
 
        /* 通配符、a、li必要的去除既有樣式 */
        
        * {
            margin: 0;
            padding: 0;
        }
        
        a {
            text-decoration: none;
            color: black;
        }
 
        /* li在這里只去掉既有樣式 不規(guī)定寬度 */
        
        li {
            list-style: none;
        }
 
        /* flex布局每個(gè)作為item的section */
        
        .container {
            margin: 50px auto;
            width: 40%;
            height: 40px;
            display: flex;
            /* space-evenly 第一次見到 */
            justify-content: space-evenly;
            background-color: skyblue;
        }
 
        /* 浮動(dòng)只需要在每個(gè)section里做就行 */
        /* 給section設(shè)置"字號(hào)、文本對(duì)齊和行高" => 可繼承屬性 */
        
        .section {
            float: left;
            font-size: 16px;
            line-height: 40px;
            text-align: center;
        }
 
        /* 這里規(guī)定懸停時(shí)head的樣式 */
        /* 也可以寫作.head:hover */
 
        .section:hover .head {
            color: white;
            background-color: orange;
        }
 
        /* 整個(gè)menu一開始是看不到的 同時(shí)規(guī)定樣式 */
        
        .menu {
            display: none;
            background-color: transparent;
        }
 
        /* 懸停后就可以看到menu了 只能懸停父盒子 */
        
        .section:hover .menu {
            display: block;
        }
 
        /* 規(guī)定懸停時(shí)li的樣式 */
        
        .menu li:hover {
            background-color: orange;
        }
    </style>
</head>
 
<body>
    <div class="container">
        <div class="section">
            <a href="#" class="head">寫論文</a>
            <ul class="menu">
                <li>查資料</li>
                <li>記筆記</li>
                <li>復(fù)現(xiàn)</li>
            </ul>
        </div>
        <div class="section">
            <a href="#" class="head">學(xué)前端</a>
            <ul class="menu">
                <li>HTML</li>
                <li>CSS</li>
                <li>JavaScript</li>
                <li>LeetCode</li>
            </ul>
        </div>
        <div class="section">
            <a href="#" class="head">小日子</a>
            <ul class="menu">
                <li>吃飯</li>
                <li>睡覺</li>
                <li>打豆豆</li>
            </ul>
        </div>
    </div>
</body>
 
</html>

最終效果如下。

Tips:另外還有個(gè)類似的題目是點(diǎn)擊實(shí)現(xiàn)下拉菜單,這個(gè)不一樣的是要添加點(diǎn)擊事件,在JS里寫,之后再補(bǔ)充。也可以選擇將三個(gè)section寫作ul li的形式,這樣嵌套兩層ul也可以實(shí)現(xiàn),語義更好,留給讀者參考。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論