利用js編寫響應(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)畫。該方法通過CSS樣式將元素從一個(gè)狀態(tài)改變?yōu)榱硪粋€(gè)狀態(tài)。CSS屬性值是逐漸改變的,這樣就可以創(chuàng)建動(dòng)畫效果。只有數(shù)字值可創(chuàng)建動(dòng)畫(比如 "margin:30px")。字符串值無法創(chuàng)建動(dòng)畫(比如 "background-color:red")。更多的使用請(qǐng)自己去搜索,我就不具體介紹了。另外就是利用了媒體查詢的方法,通過檢測當(dāng)前設(shè)備的屏幕大小進(jìn)行調(diào)整側(cè)邊欄的大小設(shè)計(jì)。媒體查詢的方法可以針對(duì)不同的屏幕尺寸設(shè)置不同的樣式,特別是如果你需要設(shè)置設(shè)計(jì)響應(yīng)式的頁面。
接下來是具體的實(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()">問題空間</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>我的主頁 </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); }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
面試判斷元素是否在可視區(qū)域中IntersectionObserver詳解
這篇文章主要為大家介紹了判斷元素是否在可視區(qū)域中IntersectionObserver面試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03javascript加載xml 并解析各節(jié)點(diǎn)的值(實(shí)現(xiàn)方法)
下面小編就為大家?guī)硪黄猨avascript加載xml 并解析各節(jié)點(diǎn)的值(實(shí)現(xiàn)方法)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10bootstrap導(dǎo)航條實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了bootstrap導(dǎo)航條的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12javascript 函數(shù)及作用域總結(jié)介紹
本文是對(duì)javascript在的函數(shù)及作用域進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-11-11javascript實(shí)現(xiàn)3D變換的立體圓圈實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)3D變換的立體圓圈效果,涉及javascript動(dòng)態(tài)操作頁面元素實(shí)現(xiàn)滾動(dòng)與變色的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08詳解JavaScript中l(wèi)ocalStorage使用要點(diǎn)
localStorage主要用來替代cookie,解決cookie(可參考cookie使用要點(diǎn))讀寫困難、容量有限的問題,對(duì)js localstorage的使用相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01JavaScript創(chuàng)建防篡改對(duì)象的方法分析
這篇文章主要介紹了JavaScript創(chuàng)建防篡改對(duì)象的方法,結(jié)合具體實(shí)例形式分析了javascript基于不可擴(kuò)展對(duì)象、密封的對(duì)象和凍結(jié)的對(duì)象實(shí)現(xiàn)防篡改對(duì)象的相關(guān)操作技巧,需要的朋友可以參考下2018-12-12JS中new?Blob()詳解及blob轉(zhuǎn)file示例
這篇文章主要給大家介紹了關(guān)于JS中new?Blob()詳解及blob轉(zhuǎn)file的相關(guān)資料,Blob?Blob(Binary?Large?Object)表示二進(jìn)制類型的大對(duì)象,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11