进阶版css点击按钮动画

1. html

<div class="menu-wrap">
    <input type="checkbox" class="toggler">
    <div class="hamburger"><div></div></div>
    <div class="menu">
      <div>
        <ul>
          <li><a href="#">Home</a></li>
          <li><a href="#">About</a></li>
          <li><a href="#">Serices</a></li>
          <li><a href="#">Contact</a></li>
        </ul>
      </div>
    </div>
  </div>

2. css

.menu-wrap {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1;
}
.menu-wrap .toggler {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  /* 控制光标的类型 */
  cursor: pointer;
  width: 60px;
  height: 60px;
  opacity: 0;
}
.menu-wrap .hamburger {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  width: 60px;
  height: 60px;
  padding: 1rem;
  background: var(--primary--color);
  display: flex;
  justify-content: center;
  align-content: center;
}
/* hamburger line */
.menu-wrap .hamburger > div {
  position: relative;
  top: 15px;
  flex: none;
  width: 100%;
  height: 2px;
  background: #fff;
  transition: all 0.4s ease;
}

/* hamburger liner -- top & bottom */
.menu-wrap .hamburger > div:before,
.menu-wrap .hamburger > div:after{
  content: '';
  position: absolute;
  z-index: 1;
  background: #fff;
  width: 100%;
  height: 2px;
  top: -10px;
}

.menu-wrap .hamburger > div:after {
  top: 10px;
}

/* toggler animation */

.menu-wrap .toggler:checked + .hamburger > div {
  transform: rotate(135deg);
}
/* turn linex into */
.menu-wrap .toggler:checked + .hamburger > div:before,
.menu-wrap .toggler:checked + .hamburger > div:after{
  top: 0px;
  transform: rotate(90deg);
}
.menu-wrap .toggler:checked:hover + .hamburger > div {
  transform: rotate(225deg);
}

3 . 重点

:checked 选择器匹配每个已被选中的 input 元素(只用于单选按钮和复选框)。

posted @ 2022-03-27 09:37  会前端的洋  阅读(775)  评论(0编辑  收藏  举报