CSS实战--实现侧边栏滑进滑出

效果

这里写图片描述

用的csdn做的例子, 本篇博客主要讲的是侧边栏滑进滑出, 背景是图片……, 不要在意.

代码

//index.html
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>home</title>
  <script>
    var documentElement = document.documentElement; //获取html元素 
    documentElement.style.fontSize = documentElement.getBoundingClientRect().width / 16 + 'px'; //设置为视窗宽度的1/16
  </script>
  <link rel="stylesheet" type="text/css" href="./index.css">
</head>

<body>
  <!-- 网页主体容器 -->
  <div class="body">
    <!-- 左上角头像 -->
    <a href="javascript:void(0)" class="avatar-small"></a>
    <!-- 方便演示内容图片代替主页 -->
    <img class="main" src="./img/1.PNG">
  </div>
  <!-- 网页遮罩 -->
  <div class="mask"></div>
  <!-- 侧边栏 -->
  <div class="nav">
    <ul>
      <li>
        <a>
          <img src="./img/avatar.jpg" class="avatar-big" alt="">
        </a>
      </li>
      <li>
        <a>我的课程</a>
      </li>
      <li>
        <a>我的订单</a>
      </li>
      <li>
        <a>我的收藏</a>
      </li>
      <li>
        <a>个人中心</a>
      </li>
    </ul>
  </div>
  <script type="text/javascript" src="./index.js"></script>
</body>

</html>
//index.css
body {
  margin: 0;
}
ul, li {
  list-style: none;
  padding: 0;
  margin: 0;
}
.avatar-small {
  position: absolute;
  z-index: 2;
  left: 0;
  top: 0;
  width: 2rem;
  height: 2rem;
}
.main{
  width: 100vw;
  height: 100vh;
}

.mask {
  display: none;
  position: fixed;
  z-index: 10;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, .1);
}

.nav {
  position: absolute;
  z-index: 11;
  left: -7rem;
  top: 0;
  width: 7rem;
  height: 100%;
  background: #555;
}
.nav {
  transition: left linear .1s;
}
.nav a {
  display: block;
  padding: 1em 0;
  border-bottom: 1px solid #888;
  font-size: 16px;
  color: #eee;
  text-align: center;
}
.nav .avatar-big {
  width: 3rem;
  border-radius: 50%;
  box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}
//index.js
let btn = document.getElementsByClassName('avatar-small')[0],
    mask = document.getElementsByClassName('mask')[0],
    nav = document.getElementsByClassName('nav')[0];

btn.addEventListener('click', function () {
  mask.style.display = 'block';
  nav.style.left = 0;
}, false);

mask.addEventListener('click', function () {
  mask.style.display = 'none';
  nav.style.left = '-7rem';
}, false)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值