当前位置:Gxlcms > JavaScript > 利用js编写响应式侧边栏实例

利用js编写响应式侧边栏实例

时间:2021-07-01 10:21:17 帮助过:2人阅读

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

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


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

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width,initial-scale=1"/>
  6. <title>侧边栏</title>
  7. <link href="css/sideBar.css" rel="stylesheet" type="text/css" />
  8. </head>
  9. <body>
  10. <p class="container">
  11. <p class="header">
  12. <p class="nav-icon">
  13. <span></span>
  14. <span></span>
  15. <span></span>
  16. </p>
  17. </p>
  18. <p class="content">侧边栏内容</p>
  19. <p class="sideBar">
  20. <p class="sideBar-left">
  21. <p class="pider"></p>
  22. <p class="body-content">
  23. <p class="messageWarning item">
  24. <p><i class="message_icon"></i>消息提醒</p>
  25. <ul>
  26. <li class="news">
  27. <i class="circle"></i><a href="javascript:void()">消息1</a>
  28. </li>
  29. <li class="news">
  30. <i class="circle"></i><a href="javascript:void()">消息2</a>
  31. </li>
  32. <li class="news">
  33. <i class="circle"></i><a href="javascript:void()">消息3</a>
  34. </li>
  35. <li class="news">
  36. <i class="circle"></i><a href="javascript:void()">消息4</a>
  37. </li>
  38. </ul>
  39. </p>
  40. <p class="course item">
  41. <p><i class="icon"></i>课程</p>
  42. <ul>
  43. <li class="myInfo">
  44. <i class="circle"></i><a href="javascript:void()">我的课程</a>
  45. </li>
  46. <li class="Dynamic">
  47. <i class="circle"></i><a href="javascript:void()">课程动态</a>
  48. </li>
  49. <li class="question">
  50. <i class="circle"></i><a href="javascript:void()">问题空间</a>
  51. </li>
  52. <li class="homework">
  53. <i class="circle"></i><a href="javascript:void()">课程作业</a>
  54. </li>
  55. </ul>
  56. </p>
  57. <p class="myHome item">
  58. <a href="javascript:void()">
  59. <i class="home_icon"></i>我的主页
  60. </a>
  61. </p>
  62. <p class="exit item">
  63. <a href="javascript:void()">
  64. <i class="exit_icon"></i>退出
  65. </a>
  66. </p>
  67. </p>
  68. </p>
  69. <p class="sideBar-right"></p>
  70. </p>
  71. </p>
  72. </body>
  73. <script src="js/jquery-2.1.4.min.js"></script>
  74. <script src="js/sideBar.js"></script>
  75. </html>

js实现:

  1. $(function(){
  2. var windowWidth = $(window).width();
  3. var windowHeight = $(window).height();
  4. var sideBarWidth = windowWidth*0.8;
  5. //设置侧边栏左边宽度与右边高度
  6. $(".sideBar-left").height(windowHeight);
  7. $(".sideBar-right").height(windowHeight);
  8. //侧边栏由左向右滑动
  9. $(".nav-icon").on("click",function(){
  10. $(".sideBar").animate({left: "0"},350);
  11. });
  12. //点击退出,侧边栏由右向左滑动
  13. $(".exit").on("click",function(){
  14. $(".sideBar").animate({left: "-100%"},350);
  15. });
  16. })

css设计:

  1. *{
  2. margin: 0;
  3. }
  4. a{
  5. color: #fff;
  6. text-decoration: none;
  7. }
  8. .container{
  9. width: 100%;
  10. height: 100%;
  11. min-width: 280px;
  12. position: relative;
  13. }
  14. .header{
  15. background: #0C7AB3;
  16. list-style: none;
  17. }
  18. .nav-icon{
  19. width: 30px;
  20. background: #0C7AB3;
  21. padding: 8px;
  22. }
  23. .nav-icon span{
  24. display: block;
  25. border: 1px solid #fff;
  26. margin: 4px;
  27. width: 20px;
  28. }
  29. .nav-icon:hover{
  30. cursor: pointer;
  31. }
  32. .sideBar{
  33. width: 100%;
  34. position: absolute;
  35. top: 0px;
  36. left: -100%;
  37. }
  38. .sideBar-left{
  39. width: 75%;
  40. background: #fff;
  41. float: left;
  42. background-color: #343A3E;
  43. }
  44. .sideBar-left .pider{
  45. width: 80%;
  46. height: 6px;
  47. margin-top: 30px;
  48. padding-left: 15px;
  49. background-color: #3099FF;
  50. }
  51. .sideBar-left .body-content{
  52. width: 80%;
  53. margin-top: 15px;
  54. padding: 15px 0 15px 15px;
  55. border-top: 2px solid #3099FF;
  56. color: #EFEFEF;
  57. }
  58. .body-content .item{
  59. margin: 4px;
  60. }
  61. .item ul{
  62. list-style: none;
  63. margin-left: -24px;
  64. }
  65. .item ul li{
  66. margin:8px;
  67. }
  68. .item .circle{
  69. width: 10px;
  70. height: 10px;
  71. margin-right: 10px;
  72. border-radius: 50%;
  73. background-color: #3099FF;
  74. display: inline-block;
  75. }
  76. .sideBar-right{
  77. width:25%;
  78. display: inline-block;
  79. background-color: rgba(0, 0, 0, 0.5);
  80. }

以上就是利用js编写响应式侧边栏实例的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行