111.实战网页建立移动导航

本节课我们建立一个移动导航,如下图所示
在这里插入图片描述

首先添加这个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,表示动画开始时速度较慢,然后逐渐加速到最大值,再逐渐减速到结束。这种过渡函数通常用于需要平滑过渡的动画,比如滚动动画、渐变动画等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值