HTML+CSS伸缩式导航栏

几天制作伸缩式导航栏

首先确立一个结构


接下来是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样式

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;
}

HTML+CSS伸缩式导航栏相关推荐

  1. css订单导航栏横线动画,小程序 纯css 实现tab导航栏下划线跟随动画

    很多时候在做tab导航的点击时我们都会要上一个过渡的动画,不然的话会显得生硬,用户没有达到比较佳的用户体验.如下图: 在开发者工具中预览效果 t3fyo-a07nj.gif 我们可以用两种方法实现这样 ...

  2. html导航去下划线,纯CSS实现导航栏下划线跟随的示例代码

    本篇文章主要介绍了纯CSS实现导航栏下划线跟随的示例代码,分享给大家,具体如下: 效果: 代码: html: aaaa bbbbbbb cccc dddd eeee css: ul { padding ...

  3. 利用 html 和 css 实现导航栏下拉(display block、display none)

    利用 html 和 css 实现导航栏下拉(display block.display none) 需求 设计并实现一个导航栏菜单,对某个项目比如你的个人书籍按类别(硬件类.软件类.语言类.网络类等分 ...

  4. html导航图片滚动条,CSS实现导航栏底部动态滚动条效果

    预习了CSS3部分的新知识,想着在不使用JS的情况下实现导航栏滚动条效果,如下: 实现滚动条效果,其实就是在 标签中让元素的宽度由0变化到100%,代码很简单,如下所示: CSS样式部分: ul.na ...

  5. HTML字母导航栏怎么做,如何用css做导航栏?

    如何用css做导航栏? 1.新建一个html文件,在head部分,编写css样式 ○ list-style-type: none;是除掉导航前面默认带的点 ○ li a,li a.active ,li ...

  6. 【纯html+css垂直导航栏代码】

    纯html+css垂直导航栏代码 <!DOCTYPE html> <html lang="en"> <head><meta charset ...

  7. HTML+CSS一级导航栏

    大一学的都忘记了,有机会重新学习一遍,简单记录下(小傻猫),日常 记录学习 HTML <!DOCTYPE html> <html lang="en"> &l ...

  8. CSS学习笔记(十二)CSS 水平导航栏

    CSS 水平导航栏 水平导航栏 有两种创建水平导航栏的方法:使用行内或浮动列表项. 行内列表项 构建水平导航栏的一种方法是,除了上一章中的"标准"代码外,还要将 <li> ...

  9. css制作动态按钮导航栏,巧妙使用checkbox制作纯css动态导航栏

    前提:很多时候.我们的网页都需要一个垂直的导航栏.可以分类.有分类.自然就有展开.关闭的功能.你还在使用jquery操作dom来制作吗?那你就out了! 方案:使用checkbox 的 checked ...

最新文章

  1. 线段树 ---- D. Power Tree(离线dfs序+线段树维护树上多条路径和的技巧)
  2. 如何使用AWS和Azure的配置存储服务保存读取配置
  3. 你知道Unity IoC Container是如何创建对象的吗?
  4. PROC系列之/proc/stat/
  5. Google小组研发模式分析 1
  6. 高达100亿美元!美国国防部将IBM和甲骨文双双踢出了云计算合同;华为任正非说了,华为对向苹果等对手出售5G芯片保持开放的态度...
  7. mysql 表 类型_mysql表类型
  8. c++ 数据类型转换: static_cast、dynamic_cast、reinterpret_cast和const_cast
  9. 经典公司小型局域网服务器架设方案
  10. C++ Member Functions的各种调用方式
  11. k8s(Kubernetes) 上部署 Redis 集群(3主3从)
  12. java高级语法_JAVA高级工程师课程笔记整理——(三)面向对象详解
  13. Unity Qualcomm 3D音频插件
  14. UMD 被淘汰了吗?不考虑的 UMD 的库如何在纯 UMD 前端项目中运行?
  15. 基于ZYNQ、AM5728、AM5708、AM437x、AM335x、STM32+FPGA等平台提供了开源EtherCAT主站IgH案例
  16. JAVA实验七 图形用户界面的设计与实现
  17. android 照片特效,Android使用Gallery实现照片拖动的特效
  18. 计算机高水平竞赛,国际类高水平的竞赛有哪些?
  19. android震动代码分析
  20. 【论文阅读 - YolTrack】YolTrack:基于MTL的自动车辆实时多目标跟踪和分割

热门文章

  1. zabbix 主动监控与被动监控
  2. 看清有关 SDN 的七大认识偏差
  3. PHP编程 967 个函式 值得收藏
  4. WebRTC音频系统 音频发送和接收
  5. 中华万年历头条数据聚合优化之路
  6. 自定义竖向SeekBar (VerticalSeekBar)
  7. 如何破坏服务器系统,如何修正文件系统超块中毁坏的幻数
  8. Java里的char类型能不能存储一个中文字符?
  9. 【Java】渐变头像生成-代码实现
  10. jibx进行xml数据绑定的binging.xml配置