利用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 相关文章推荐
javascript开发技术大全-第1章javascript概述
Jul 03 Javascript
javascript去除字符串左右两端的空格
Feb 05 Javascript
javascript限制文本框输入值类型的方法
May 07 Javascript
javascript用函数实现对象的方法
May 14 Javascript
js实现索引图片切换效果
Nov 21 Javascript
javascript每日必学之继承
Feb 23 Javascript
jQuery插件autocomplete使用详解
Feb 04 Javascript
JS实现带导航城市列表以及输入搜索功能
Jan 04 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
原生JS 实现的input输入时表格过滤操作示例
Aug 03 Javascript
layui form表单提交之后重新加载数据表格的方法
Sep 11 Javascript
Javascript如何实现双指控制图片功能
Feb 25 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
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
PHP网站基础优化方法小结
2008/09/29 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
php获取系统变量方法小结
2015/05/29 PHP
利用PHP获取汉字首字母并且分组排序详解
2017/10/22 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
2015/12/31 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
vue组件间通信解析
2017/03/01 Javascript
老生常谈JS中的继承及实现代码
2018/07/06 Javascript
详解小程序不同页面之间通讯的解决方案
2018/11/23 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
python绘制简单彩虹图
2018/11/19 Python
python实现连连看游戏
2020/02/14 Python
15个Pythonic的代码示例(值得收藏)
2020/10/29 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
澳大利亚旅游网站:Lastminute
2017/08/07 全球购物
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
十佳班主任事迹材料
2014/01/18 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
Pytest实现setup和teardown的详细使用详解
2021/04/17 Python
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
golang内置函数len的小技巧
2021/07/25 Golang
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS