JavaScript實現HTML導航欄下拉選單[懸浮顯示]
JavaScript實現HTML導航欄下拉選單[懸浮顯示]
前端介面進行設計時,我們會遇到滑鼠懸浮在某選項上,然後就會憑空顯示出選單出來,這種設計的確受到了很多人的青睞。其實純css也是可以實現的,但是會有一些限制,必須如要顯示的選單需要作為滑鼠懸浮元素的子元素,選擇器優先順序等等。廢話不多說,直接看效果!
.
樣式有點醜,因為待會趕著時間去鍛鍊哈哈哈,xdm看得懂就行了!
程式碼實現(JavaScript)
1、獲取要懸浮的物件和選單物件
//獲取需要懸浮的物件
let show = document.getElementById("show");
//獲取被隱藏的選單
let menu = document.getElementById("menu");
2、對懸浮物件新增滑鼠懸浮事件
//給show新增滑鼠懸浮事件
show.onmouseover = function(){
//改變選單的內聯樣式display為block,選單顯示
menu.style.display = "block";
}
3、對懸浮物件新增滑鼠離開事件
如果先觸發了懸浮物件show的滑鼠懸浮事件,不移動到選單menu上就滑鼠就離開了,會出現選單無法隱藏的bug!所以在懸浮物件的滑鼠離開事件中,我們需要進行判斷,如果滑鼠移開後的位置不在選單menu的範圍內,則令選單menu隱藏,否則就繼續顯示
show.onmouseout = function(){
//獲取選單欄的座標值
let menux = menu.offsetLeft;
let menuy = menu.offsetTop;
let menuX = menu.offsetLeft+menu.offsetWidth;
let menuY = menu.offsetTop+menu.offsetHeight;
//獲取滑鼠的座標值
let event = window.event;
let mouseX = event.clientX;
let mouseY = event.clientY;
if(mouseX<menux || mouseX>menuX || mouseY<menuY || mouseY>menuY){
menu.style.display = "none";
}
}
4、分別給選單menu新增滑鼠懸浮和離開事件
這裡見碼之意,假如滑鼠在menu上就顯示,離開了就隱藏
//分別給menu物件繫結滑鼠懸浮和滑鼠離開事件
menu.onmouseover = function(){
menu.style.display = "block";
}
menu.onmouseleave = function(){
menu.style.display = "none";
}
.
.
.
原始碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
window.onload = function(){
//獲取需要懸浮的物件
let show = document.getElementById("show");
//獲取被隱藏的選單
let menu = document.getElementById("menu");
//給show新增滑鼠懸浮事件
show.onmouseover = function(){
//改變選單的內聯樣式display為block
menu.style.display = "block";
}
//
show.onmouseout = function(){
//獲取選單欄的座標值
let menux = menu.offsetLeft;
let menuy = menu.offsetTop;
let menuX = menu.offsetLeft+menu.offsetWidth;
let menuY = menu.offsetTop+menu.offsetHeight;
//獲取滑鼠的座標值
let event = window.event;
let mouseX = event.clientX;
let mouseY = event.clientY;
if(mouseX<menux || mouseX>menuX || mouseY<menuY || mouseY>menuY){
menu.style.display = "none";
}
}
//分別給menu物件繫結滑鼠懸浮和滑鼠離開事件
menu.onmouseover = function(){
menu.style.display = "block";
}
menu.onmouseleave = function(){
menu.style.display = "none";
}
}
</script>
<style>
*{
margin: 0;
padding: 0;
}
li{
list-style: none;
}
#show {
margin-top: 10px;
margin-left: 10px;
width: 50px;
height: 30px;
border: 1px solid #ccc;
background-color: pink;
}
#menu{
display: none;
margin-left: 10px;
width: 50px;
border: 1px solid #ccc;
background: rgba(0, 0, 0, 0.6);
}
#menu a{
color: #fff;
text-decoration: none;
}
</style>
</head>
<body>
<div id="box">
<div id="show"><a href="#">Gorho</a></div>
<ul id="menu">
<li><a href="#">選項一</a></li>
<li><a href="#">選項二</a></li>
<li><a href="#">選項三</a></li>
</ul>
</div>
</body>
</html>
.
.
寫在最後:其實在作品中需要將選單menu設定成絕對定位,即position:absolute。否則選單出現後會擠壓其他盒子的位置,但筆者趕時間,就沒有設定,其實設定也很簡單,在css中加上就大功告成了!
第三篇文章,希望大家點贊收藏支援一下!我是Gorho,有空再見!
相關文章
- HTML+CSS+JQuery實現下拉選單滑鼠懸浮顯示下拉選單,取消隱藏HTMLCSSjQuery
- 滑鼠懸浮緩慢下拉導航選單
- JavaScript滑鼠懸浮展開側欄導航JavaScript
- css滑鼠懸浮二級下拉導航選單CSS
- CSS導航欄及下拉選單CSS
- 滑鼠懸浮背景變色導航選單
- 滑鼠懸浮導航選單底部出現動畫橫線動畫
- bootstrap 選單導航選單nav li滑鼠移入hover下拉顯示boot
- js css滑鼠懸停顯示下拉選單JSCSS
- css滑鼠懸浮下拉選單效果CSS
- CSS如何讓浮動導航欄元素居中顯示CSS
- JavaScript滑鼠懸浮出現下拉選單效果JavaScript
- 側欄懸浮導航選單拖動滾動條可以自動定位效果
- css導航欄滑鼠hover的時候就出現下拉選單CSS
- 滑鼠懸浮底部有橫條伸展的導航選單
- 滑鼠懸浮可以上下伸縮的導航選單
- css3滑鼠懸浮背景滑動導航選單CSSS3
- JavaScript下拉摺疊導航選單講解JavaScript
- HTML 滑鼠放上顯示懸浮視窗HTML
- javascript實現的三級下拉導航選單JavaScript
- jquery-滑鼠經過導航條,顯示二級下拉選單jQuery
- ElementUI側邊欄導航選單隱藏顯示問題UI
- 滑鼠懸浮中英文切換橫向導航選單
- css3滑鼠懸浮展開收縮導航選單CSSS3
- 滑鼠懸浮具有背景動畫跟隨效果的導航選單動畫
- Vue 資料雙向繫結實現二級下拉懸浮選單Vue
- CSS3 滑鼠懸浮立體翻滾的導航選單CSSS3
- JS如何實現導航欄的智慧浮動JS
- CSS 導航欄元素居中顯示CSS
- HTML+CSS實現下拉選單HTMLCSS
- 在 Flutter 中實現一個浮動導航欄Flutter
- 純css製作導航下拉選單CSS
- CSS實現的側欄三級導航選單程式碼CSS
- JavaScript slide下拉導航選單效果JavaScriptIDE
- css3實現緩慢下拉手風琴導航選單效果CSSS3
- 網頁導航欄滑鼠移上去自動彈出下拉選單網頁
- 滑鼠經過顯示下拉選單
- 在頂部顯示下拉選單