【CSS动画03--伸缩式导航栏/手机原子组件】

简介: 【CSS动画03--伸缩式导航栏/手机原子组件】

image.png

css动画03--伸缩式导航栏/手机原子组件

介绍

当点击错号和菜单双横线是不同的动画展示,以上是鄙人自己录制的一个小视频,希望大家做一个参考

代码

HTML

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
    <title>HTML+CSS伸缩式导航栏</title>
    <link rel="stylesheet" href="./css/3.css">
</head>
<body>
    <div class="navbar">
        <input type="checkbox">
        <span></span>
        <span></span>
        <ul>
            <li><a href="javascript:void(0)">首页</a></li>
            <li><a href="javascript:void(0)">咨询</a></li>
            <li><a href="javascript:void(0)">收藏</a></li>
            <li><a href="javascript:void(0)">购物车</a></li>
            <li><a href="javascript:void(0)">我的</a></li>
        </ul>
    </div>
</body>
</html>

CSS

*{
    margin:0;
    padding:0;
}
body{
    height: 100vh;
    /* 背景渐变 */
    background: linear-gradient(200deg,#ddd6f3,#faaca8);
}
/* 三个元素都需要弹性布局,所以写在一块 */
body,.navbar,.navbar ul{
    display: flex;
    justify-content: center;
    align-items: center;
}
.navbar{
    position: relative;
    padding: 20px;
    background-color: #fff;
    border-radius: 50px;
}
.navbar input{
    width: 40px;
    height: 40px;
    /* 这里我们把复选框不透明度设置为0,直接变透明 */
    opacity: 0;
    /* 鼠标变小手 */
    cursor: pointer;
}
.navbar span{
    position: absolute;
    left:25px;
    width: 30px;
    height: 4px;
    /* 现在将两条线放到一起,然后单独设置第二条线的位置,calc方法可以自动计算数值 */
    top: calc(50% - 10px);
    border-radius: 15px;
    background-color: #999;
    /* 现在span覆盖着复选框,鼠标放到span上是点不中复选框的,下面这个属性就可以解决这个问题,即便鼠标放到span上点击也能选中或取消选中复选框 */
    pointer-events: none;
    /* 收回来的时候过渡刚好是相反的 */
    transition: transform 0.3s ease-in-out,top 0.3s ease-in-out 0.3s;
    /* 现在过渡效果有点快,有点生硬 */
}
/* 因为第二条线在navbar这个元素内的第三个位置,所以这里写3 */
.navbar span:nth-child(3){
    top: calc(50% + 6px);
}
.navbar ul{
    width: 0;
    /* 溢出隐藏 */
    overflow: hidden;
    /* 在这里加个过渡,可以让展开和收起自然一些 */
    transition: all 0.5s;
    /* 大家应该也发现了,现在导航栏收起的时候,这个圆是扁的 */
    /* 这个问题是因为文字被换行显示了,两个汉字竖着排列了,所以盒子被撑大了,下面这个属性就可以解决这个问题,让文字不换行显示 */
    white-space: nowrap;
}
.navbar ul li{
    list-style: none;
    margin: 0px 15px;
}
.navbar ul li a{
    text-decoration: none;
    font-size: 20px;
    font-weight: 700;
    color:#333;
}
.navbar ul li a:hover{
    color:#fb7299;
}
/* :checked是当复选框被选中的时候,~这个是兄弟选择器,查找同一级的ul */
.navbar input:checked ~ ul{
    width: 350px;
}
.navbar input:checked ~ span:nth-child(2){
    top: calc(50% - 2px);
    transform: rotate(-45deg);
    background-color: #fb7299;
    /* 这里先执行top,然后0.3秒后执行transform */
    transition: top 0.3s ease-in-out,transform 0.3s ease-in-out 0.3s;
}
.navbar input:checked ~ span:nth-child(3){
    top: calc(50% - 2px);
    transform: rotate(45deg);
    background-color: #fb7299;
    transition: top 0.3s ease-in-out,transform 0.3s ease-in-out 0.3s;
}
相关文章
|
5月前
|
自然语言处理 前端开发 JavaScript
用 通义灵码 一键生成“水波纹按钮”,连 CSS 动画都不用自己写了!
通义灵码是一款智能编程辅助工具,它可以根据自然语言指令自动生成高质量的代码。例如,只需输入“生成一个按钮,点击时带水波纹动画,模拟 Material Ripple 效果”,它就能生成具备完整交互逻辑、CSS 动画和良好性能的按钮组件。不仅如此,它还支持拓展功能,如长按触发提示、添加图标等,并能自动优化样式适配不同场景。通过通义灵码,开发者可以大幅提升效率,专注于创意实现,而不必纠结于繁琐的代码细节。
|
10月前
|
前端开发 JavaScript
CSS 过渡和动画
CSS过渡和动画是用于为网页元素添加动态效果的两种重要技术
506 143
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
217 1
|
11月前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
227 34
|
移动开发 前端开发 JavaScript
除了 CSS3,还有哪些技术可以实现动画效果?
除了 CSS3,还有哪些技术可以实现动画效果?
382 63
|
JavaScript 前端开发
CSS3 动画和 JavaScript 动画的性能比较
具体的性能表现还会受到许多因素的影响,如动画的复杂程度、浏览器的性能、设备的硬件条件等。在实际应用中,需要根据具体情况选择合适的动画技术。
|
Web App开发 前端开发 JavaScript
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
724 58
|
11月前
jQuery+CSS3实现404背景游戏动画源码
jQuery+CSS3实现404背景游戏动画源码
176 22
|
前端开发 搜索推荐 UED
实现 CSS 动画效果的兼容性
【10月更文挑战第16天】实现 CSS 动画效果的兼容性需要对不同浏览器的特性有深入的了解,并采取适当的策略和方法。通过不断的实践和优化,你可以在各种浏览器上创造出流畅、美观且兼容的动画效果,为用户带来更好的体验。在实际开发中,要密切关注浏览器的发展动态,及时掌握最新的兼容性技巧和解决方案,以确保你的动画设计能够在广泛的用户群体中得到良好的呈现。
346 58
纯css3实现的百分比渐变进度条加载动画源码
纯css3实现的百分比渐变进度条加载动画特效源码
217 31

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    217
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    213
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    153
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    126
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    259
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    390
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    170
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    108
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    178
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    246