原生JS實現(xiàn)懸停下拉菜單
JS實現(xiàn)懸停下拉菜單,這個是前端面試中遇到的場景題,原理就是修改菜單樣式的display屬性的屬性值從none=>block,具體實現(xiàn)見下,重點關(guān)注下面幾個部分。
- 給每個section設(shè)置浮動。
- 將可繼承屬性設(shè)置在section父盒子上,字體相關(guān)的屬性。
- 設(shè)置懸停時,懸停在section父盒子上,子元素head背景改變;也可以直接懸停在head類,寫作`.head:hover`。但是會出現(xiàn)一個問題就是當鼠標懸停在li上的時候head會變回最初的樣子,因此推薦將hover放在section上。
- 但是menu展示只能懸停在父盒子section上,因為本身不展示(不能懸停在head上,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布局每個作為item的section */ .container { margin: 50px auto; width: 40%; height: 40px; display: flex; /* space-evenly 第一次見到 */ justify-content: space-evenly; background-color: skyblue; } /* 浮動只需要在每個section里做就行 */ /* 給section設(shè)置"字號、文本對齊和行高" => 可繼承屬性 */ .section { float: left; font-size: 16px; line-height: 40px; text-align: center; } /* 這里規(guī)定懸停時head的樣式 */ /* 也可以寫作.head:hover */ .section:hover .head { color: white; background-color: orange; } /* 整個menu一開始是看不到的 同時規(guī)定樣式 */ .menu { display: none; background-color: transparent; } /* 懸停后就可以看到menu了 只能懸停父盒子 */ .section:hover .menu { display: block; } /* 規(guī)定懸停時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:另外還有個類似的題目是點擊實現(xiàn)下拉菜單,這個不一樣的是要添加點擊事件,在JS里寫,之后再補充。也可以選擇將三個section寫作ul li的形式,這樣嵌套兩層ul也可以實現(xiàn),語義更好,留給讀者參考。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序MUI側(cè)滑導(dǎo)航菜單示例(Popup彈出式,左側(cè)不動,右側(cè)滑動)
這篇文章主要介紹了微信小程序MUI側(cè)滑導(dǎo)航菜單,結(jié)合實例形式分析了微信小程序Popup彈出式,左側(cè)不動,右側(cè)滑動菜單相關(guān)實現(xiàn)技巧與注意事項,需要的朋友可以參考下2019-01-01ES6 新增的創(chuàng)建數(shù)組的方法(小結(jié))
這篇文章主要介紹了ES6 新增的創(chuàng)建數(shù)組的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Display SQL Server Version Information
Display SQL Server Version Information...2007-06-06使用typescript推導(dǎo)已有變量的盲盒類型詳情
這篇文章主要介紹了使用typescript推導(dǎo)已有變量的盲盒類型詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08關(guān)于foreach循環(huán)中遇到的問題小結(jié)
這篇文章主要介紹了關(guān)于foreach循環(huán)中遇到的問題總結(jié),非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-05-05JS庫之Particles.js中文開發(fā)手冊及參數(shù)詳解
因為自己需要做產(chǎn)品,所以一個好的UI界面也是很重要的,發(fā)現(xiàn)這種散射的原子顆粒特效還不錯。今天腳本之家小編把Particles.js中文開發(fā)手冊及particles.js參數(shù)分享給大家,需要的朋友參考下吧2017-09-09