原生JS實(shí)現(xiàn)懸停下拉菜單
JS實(shí)現(xiàn)懸停下拉菜單,這個(gè)是前端面試中遇到的場(chǎng)景題,原理就是修改菜單樣式的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í)有所幫助,也希望大家多多支持腳本之家。
- JavaScript 下拉菜單實(shí)現(xiàn)代碼
- css+js下拉菜單
- js動(dòng)態(tài)設(shè)置select下拉菜單的默認(rèn)選中項(xiàng)實(shí)例
- 三級(jí)下拉菜單的js實(shí)現(xiàn)代碼
- 一個(gè)日期下拉菜單的js實(shí)現(xiàn)代碼
- JS實(shí)多級(jí)聯(lián)動(dòng)下拉菜單類,簡單實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)菜單!
- Js點(diǎn)擊彈出下拉菜單效果實(shí)例
- Javascript仿新浪游戲頻道鼠標(biāo)懸停顯示子菜單效果
- JavaScript鼠標(biāo)懸停事件用法解析
- CSS或者JS實(shí)現(xiàn)鼠標(biāo)懸停顯示另一元素
相關(guān)文章
從數(shù)據(jù)結(jié)構(gòu)的角度分析 for each in 比 for in 快的多
今天仔細(xì)琢磨了會(huì),從數(shù)據(jù)結(jié)構(gòu)的角度分析了下,覺得for in和for each in效率上有著本質(zhì)的區(qū)別,無論是JS還是AS2013-07-07
使用JavaScript實(shí)現(xiàn)一個(gè)拖拽縮放效果
這篇文章主要介紹了如何使用JS實(shí)現(xiàn)一個(gè)這樣的拖拽縮放效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
arctext.js實(shí)現(xiàn)文字平滑彎曲弧形效果的插件
這篇文章主要介紹了arctext.js實(shí)現(xiàn)文字平滑彎曲弧形效果的插件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
用JavaScript 處理 URL 的兩個(gè)函數(shù)代碼
用JavaScript 處理 URL 的兩個(gè)函數(shù)代碼...2007-08-08
原生javaScript實(shí)現(xiàn)圖片延時(shí)加載的方法
這篇文章主要介紹了原生javaScript實(shí)現(xiàn)圖片延時(shí)加載的方法,無需通過載入jQuery腳本即可實(shí)現(xiàn)圖片的延時(shí)加載效果,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12
Openlayers實(shí)現(xiàn)擴(kuò)散的動(dòng)態(tài)點(diǎn)(水紋效果)
這篇文章主要為大家詳細(xì)介紹了Openlayers實(shí)現(xiàn)擴(kuò)散的動(dòng)態(tài)點(diǎn),水紋效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
教你用Uniapp實(shí)現(xiàn)微信小程序的GPS定位打卡
地圖組件用于展示地圖,而定位API只是獲取坐標(biāo),請(qǐng)勿混淆兩者,下面這篇文章主要給大家介紹了關(guān)于如何使用Uniapp實(shí)現(xiàn)微信小程序的GPS定位打卡的相關(guān)資料,需要的朋友可以參考下2022-11-11
extjs簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了extjs簡介,ExtJS為開發(fā)者在開發(fā)富客戶的B/S應(yīng)用中提供豐富的UI組件,具有統(tǒng)一的主題,便于快速開發(fā),提高效率2017-07-07

