前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

实战网页建立移动导航


本节课我们建立一个移动导航,如下图所示


首先添加这个button

 <button class="btn-mobile-nav">
          <ion-icon class="icon-mobile-nav" name="menu-outline"></ion-icon>
          <ion-icon class="icon-mobile-nav" name="close-outline"></ion-icon>
        </button>
.btn-mobile-nav {
  border: none;
  background: none;
  cursor: pointer;
}
.icon-mobile-nav {
  width: 4.8rem;
  height: 4.8rem;
  color: #333;
}


  • 然后通过选择器的方式,默认不显示X
.icon-mobile-nav[name="close-outline"] {
    display: none;
  }


  • 之后通过这样的方式来让移动设备上才会显示这样图标


 .main-nav {
        background-color: rgba(255, 255, 255, 0.97);  #给导航添加背景
        position: absolute;  #让导航脱离文档流
        top: 0;
        left: 0;  #表示将元素的顶部和左侧都与其父元素的顶部和左侧对齐
        width: 100%;  #占据页面整个宽度
        height: 100vh;  #占据整个页面高度
        display: flex;   #flex布局
        align-items: center;  #使得导航居中
        justify-content: center;  #垂直也居中
    }
    .main-nav-list {
        flex-direction: column;  #让导航垂直摆放
        gap: 4.8rem;  #添加间距
    }
    .main-nav-link:link, .main-nav-link:visited {
        font-size: 3rem;   #字体搞大一点
    }
}


目前简单的我们就写到这里,后面我们再添加Javascript实际这个功能;


但是默认的情况下,我们还是通过 opacity:0;将页面归为全透明


   .nav-open .main-nav {
        opacity: 1;
    }


  • 和之前的手风琴一样,默认情况下,是全部透明的,导航将不可见,如果加上nav-open这个class类的话,导航将可见,这个取决于我们点击旁边的按钮通过JS来实现,后面我们会讲解;


  • 之后我们来添加动画效果,除此之外,通过透明度的方式并不能真正的将导航隐藏
        transition: all 0.5s ;
        opacity: 0;
        pointer-events: none;  #表示该元素不会响应鼠标事件,比如点击、悬停等
        visibility: hidden;  #表示该元素在页面上不可见,但是仍然占据着页面布局中的位置和空间。这个属性通常用于隐藏某个元素,但是希望它仍然存在于页面中,以便后续操作。与 display: none; 不同的是,display: none; 会将元素从页面中完全移除,不再占据任何空间。
  • 同样,在导航出现的时候我们需要把这些参数加上
      opacity: 1;
        pointer-events: auto;
        visibility: visible;


  • 但是这里还有一个问题,我们希望打开的时候这三个杠消失,X图标出现


   .nav-open .icon-mobile-nav[name="close-outline"] {
        display: block;
    }
    .nav-open .icon-mobile-nav[name="menu-outline"] {
        display: none;
    }


  • 除此之外,我们还可以做一个动效的效果,使得导航出现的时候,有从右侧滑出的效果;
  • 首先将导航移除屏幕
transform: translateX(100%);
  • 接着我们让其完全移出


 .nav-open .main-nav {
        opacity: 1;
        pointer-events: auto;
        visibility: visible;
        transform: translateX(0);
    }

这样当打开的时候就会产生一个从右到左边的动画


  • 最后我们可以加上一个动画过渡
 transition: all 0.5s ease-in;
##ease-in 表示动画开始时速度较慢,然后逐渐加速到最大值。这种过渡函数通常用于需要突出动画结束时的效果,比如弹出菜单或者弹窗。
##ease-out 表示动画开始时速度较快,然后逐渐减速到结束。这种过渡函数通常用于需要突出动画开始时的效果,比如下拉刷新或者下拉加载更多。
##除了这两种过渡函数,还有一种常用的过渡函数是 ease-in-out,表示动画开始时速度较慢,然后逐渐加速到最大值,再逐渐减速到结束。这种过渡函数通常用于需要平滑过渡的动画,比如滚动动画、渐变动画等。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言