利用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 相关文章推荐
Jquery中给animation加更多的运作效果实例
Sep 05 Javascript
判断一个变量是数组Array类型的方法
Sep 16 Javascript
javascript函数重载解决方案分享
Feb 19 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
js实现背景图片感应鼠标变化的方法
Feb 28 Javascript
使用AngularJS 应用访问 Android 手机的图片库
Mar 24 Javascript
javascript计时器编写过程与实现方法
Feb 29 Javascript
Node.js与MySQL交互操作及其注意事项
Oct 05 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
Oct 16 Javascript
基于VUE.JS的移动端框架Mint UI的使用
Oct 11 Javascript
vue 源码解析之虚拟Dom-render
Aug 26 Javascript
js 实现Material UI点击涟漪效果示例
Sep 23 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
JavaScript 事件记录使用说明
2009/10/20 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
解决vue中使用less/sass及使用中遇到无效的问题
2020/10/24 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
新闻专业本科生的自我评价分享
2013/11/20 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
2015年助理工程师工作总结
2015/04/03 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
Python OpenCV 彩色与灰度图像的转换实现
2021/06/05 Python