利用js编写响应式侧边栏


Posted in Javascript onSeptember 17, 2016

为了练手,自己学敲网站时刚好碰到需要制作侧边栏,在网上也查了各种插件以及框架都可以实现这个功能,但是想自己学着用js原生学一个试试,于是就初略完成了侧边栏的实现,可以让初学者参考参考,代码能力有限。 

其中主要设计的就是animate()函数,animate() 方法执行 CSS 属性集的自定义动画。该方法通过CSS样式将元素从一个状态改变为另一个状态。CSS属性值是逐渐改变的,这样就可以创建动画效果。只有数字值可创建动画(比如 "margin:30px")。字符串值无法创建动画(比如 "background-color:red")。更多的使用请自己去搜索,我就不具体介绍了。另外就是利用了媒体查询的方法,通过检测当前设备的屏幕大小进行调整侧边栏的大小设计。媒体查询的方法可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面。

接下来是具体的实现,附上代码: 

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width,initial-scale=1"/>
 <title>侧边栏</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">侧边栏内容</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()">课程动态</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()">课程作业</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实现:

$(function(){

 var windowWidth = $(window).width();
 var windowHeight = $(window).height();
 var sideBarWidth = windowWidth*0.8;
 //设置侧边栏左边宽度与右边高度
 $(".sideBar-left").height(windowHeight);
 $(".sideBar-right").height(windowHeight);
 //侧边栏由左向右滑动
 $(".nav-icon").on("click",function(){
 $(".sideBar").animate({left: "0"},350);
 });
 //点击退出,侧边栏由右向左滑动
 $(".exit").on("click",function(){
 $(".sideBar").animate({left: "-100%"},350);
 });

})

css设计: 

*{
 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);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Js动态创建div
Sep 25 Javascript
js 实现无缝滚动 兼容IE和FF
Jul 15 Javascript
HTML Dom与Css控制方法
Oct 25 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
JavaScript中的闭包介绍
Mar 15 Javascript
JavaScript节点及列表操作实例小结
Aug 05 Javascript
去除字符串左右两边的空格(实现代码)
May 12 Javascript
vue2 自定义动态组件所遇到的问题
Jun 08 Javascript
JavaScript面向对象编程小游戏---贪吃蛇代码实例
May 15 Javascript
Vue中fragment.js使用方法小结
Feb 17 Javascript
VSCode搭建Vue项目的方法
Apr 30 Javascript
JS的深浅复制详细
Oct 16 Javascript
各式各样的导航条效果css3结合jquery代码实现
Sep 17 #Javascript
JavaScript编写一个简易购物车功能
Sep 17 #Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 #Javascript
Bootstrap响应式侧边栏改进版
Sep 17 #Javascript
H5用户注册表单页 注册模态框!
Sep 17 #Javascript
JS Canvas定时器模拟动态加载动画
Sep 17 #Javascript
JavaScript职责链模式概述
Sep 17 #Javascript
You might like
实用函数3
2007/11/08 PHP
php中{}大括号是什么意思
2013/12/01 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
详谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/25 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
2017/09/14 Javascript
vue+elementUI实现图片上传功能
2019/08/20 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
纯JS实现五子棋游戏
2020/05/28 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
python生成任意频率正弦波方式
2020/02/25 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
美国知名的摄影器材销售网站:Adorama
2017/02/01 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
理想演讲稿范文
2014/05/21 职场文书
工作态度怎么写
2015/06/25 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
JavaScript实现简单图片切换
2021/04/29 Javascript
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python