利用js編寫(xiě)響應(yīng)式側(cè)邊欄
為了練手,自己學(xué)敲網(wǎng)站時(shí)剛好碰到需要制作側(cè)邊欄,在網(wǎng)上也查了各種插件以及框架都可以實(shí)現(xiàn)這個(gè)功能,但是想自己學(xué)著用js原生學(xué)一個(gè)試試,于是就初略完成了側(cè)邊欄的實(shí)現(xiàn),可以讓初學(xué)者參考參考,代碼能力有限。
其中主要設(shè)計(jì)的就是animate()函數(shù),animate() 方法執(zhí)行 CSS 屬性集的自定義動(dòng)畫(huà)。該方法通過(guò)CSS樣式將元素從一個(gè)狀態(tài)改變?yōu)榱硪粋€(gè)狀態(tài)。CSS屬性值是逐漸改變的,這樣就可以創(chuàng)建動(dòng)畫(huà)效果。只有數(shù)字值可創(chuàng)建動(dòng)畫(huà)(比如 "margin:30px")。字符串值無(wú)法創(chuàng)建動(dòng)畫(huà)(比如 "background-color:red")。更多的使用請(qǐng)自己去搜索,我就不具體介紹了。另外就是利用了媒體查詢的方法,通過(guò)檢測(cè)當(dāng)前設(shè)備的屏幕大小進(jìn)行調(diào)整側(cè)邊欄的大小設(shè)計(jì)。媒體查詢的方法可以針對(duì)不同的屏幕尺寸設(shè)置不同的樣式,特別是如果你需要設(shè)置設(shè)計(jì)響應(yīng)式的頁(yè)面。
接下來(lái)是具體的實(shí)現(xiàn),附上代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"/> <title>側(cè)邊欄</title> <link href="css/sideBar.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="container"> <div class="header"> <div class="nav-icon"> <span></span> <span></span> <span></span> </div> </div> <div class="content">側(cè)邊欄內(nèi)容</div> <div class="sideBar"> <div class="sideBar-left"> <div class="divider"></div> <div class="body-content"> <div class="messageWarning item"> <div><i class="message_icon"></i>消息提醒</div> <ul> <li class="news"> <i class="circle"></i><a href="javascript:void()">消息1</a> </li> <li class="news"> <i class="circle"></i><a href="javascript:void()">消息2</a> </li> <li class="news"> <i class="circle"></i><a href="javascript:void()">消息3</a> </li> <li class="news"> <i class="circle"></i><a href="javascript:void()">消息4</a> </li> </ul> </div> <div class="course item"> <div><i class="icon"></i>課程</div> <ul> <li class="myInfo"> <i class="circle"></i><a href="javascript:void()">我的課程</a> </li> <li class="Dynamic"> <i class="circle"></i><a href="javascript:void()">課程動(dòng)態(tài)</a> </li> <li class="question"> <i class="circle"></i><a href="javascript:void()">問(wèn)題空間</a> </li> <li class="homework"> <i class="circle"></i><a href="javascript:void()">課程作業(yè)</a> </li> </ul> </div> <div class="myHome item"> <a href="javascript:void()"> <i class="home_icon"></i>我的主頁(yè) </a> </div> <div class="exit item"> <a href="javascript:void()"> <i class="exit_icon"></i>退出 </a> </div> </div> </div> <div class="sideBar-right"></div> </div> </div> </body> <script src="js/jquery-2.1.4.min.js"></script> <script src="js/sideBar.js"></script> </html>
js實(shí)現(xiàn):
$(function(){
var windowWidth = $(window).width();
var windowHeight = $(window).height();
var sideBarWidth = windowWidth*0.8;
//設(shè)置側(cè)邊欄左邊寬度與右邊高度
$(".sideBar-left").height(windowHeight);
$(".sideBar-right").height(windowHeight);
//側(cè)邊欄由左向右滑動(dòng)
$(".nav-icon").on("click",function(){
$(".sideBar").animate({left: "0"},350);
});
//點(diǎn)擊退出,側(cè)邊欄由右向左滑動(dòng)
$(".exit").on("click",function(){
$(".sideBar").animate({left: "-100%"},350);
});
})
css設(shè)計(jì):
*{
margin: 0;
}
a{
color: #fff;
text-decoration: none;
}
.container{
width: 100%;
height: 100%;
min-width: 280px;
position: relative;
}
.header{
background: #0C7AB3;
list-style: none;
}
.nav-icon{
width: 30px;
background: #0C7AB3;
padding: 8px;
}
.nav-icon span{
display: block;
border: 1px solid #fff;
margin: 4px;
width: 20px;
}
.nav-icon:hover{
cursor: pointer;
}
.sideBar{
width: 100%;
position: absolute;
top: 0px;
left: -100%;
}
.sideBar-left{
width: 75%;
background: #fff;
float: left;
background-color: #343A3E;
}
.sideBar-left .divider{
width: 80%;
height: 6px;
margin-top: 30px;
padding-left: 15px;
background-color: #3099FF;
}
.sideBar-left .body-content{
width: 80%;
margin-top: 15px;
padding: 15px 0 15px 15px;
border-top: 2px solid #3099FF;
color: #EFEFEF;
}
.body-content .item{
margin: 4px;
}
.item ul{
list-style: none;
margin-left: -24px;
}
.item ul li{
margin:8px;
}
.item .circle{
width: 10px;
height: 10px;
margin-right: 10px;
border-radius: 50%;
background-color: #3099FF;
display: inline-block;
}
.sideBar-right{
width:25%;
display: inline-block;
background-color: rgba(0, 0, 0, 0.5);
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
uniapp項(xiàng)目實(shí)踐之全局公共組件樣式及方法使用示例詳解
這篇文章主要為大家介紹了uniapp項(xiàng)目實(shí)踐之全局公共組件樣式及方法使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
網(wǎng)頁(yè)上的Javascript編輯器和代碼格式化
因?yàn)槲覀兊捻?xiàng)目可以通過(guò)編寫(xiě)腳本(javascript)進(jìn)行功能擴(kuò)展,所以為了方便現(xiàn)場(chǎng)實(shí)施人員,所以突發(fā)奇想想在網(wǎng)頁(yè)上(系統(tǒng)是B/S的)提供一個(gè)javascript的編輯器。2010-04-04
對(duì)layer彈出框中icon數(shù)字參數(shù)的說(shuō)明介紹
今天小編就為大家分享一篇對(duì)layer彈出框中icon數(shù)字參數(shù)的說(shuō)明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
Autocomplete Textbox Example javascript實(shí)現(xiàn)自動(dòng)完成成功
Autocomplete Textbox Example javascript實(shí)現(xiàn)自動(dòng)完成成功...2007-08-08
JS中ESModule和commonjs介紹及使用區(qū)別
這篇文章主要介紹了JS中ESModule和commonjs介紹及使用區(qū)別,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07
解析利用javascript如何判斷一個(gè)數(shù)為素?cái)?shù)
本文主要分享了利用javascript如何判斷一個(gè)數(shù)為素?cái)?shù)的具體實(shí)例代碼,有需要的朋友可以作為參考看下2016-12-12
微信小程序scroll-view隱藏滾動(dòng)條的方法詳解
這篇文章主要介紹了微信小程序scroll-view隱藏滾動(dòng)條的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03

