效果图

用到知识简单js,css3

- 设计思路

1.div居中
2.ul li
3.显示隐藏
4.三角设计
5.伪元素前后加三角

第一步

         <!-- first --><li class="item"><a href="#" class="btn">line_1</a><div class="show_menu"><a href="#">itme_1</a><a href="#">itme_2</a><a href="#">itme_3</a></div></li>

需要解决的问题:a标签转换为块级元素,给a标签加width用padding上下撑起15px;弹性布局div居中

* {margin: 0;padding: 0;text-decoration: none;   list-style:none
}
html,body {background-color:#fcdc29;width: 100%;height: 100%;display: flex;align-items: center; /*侧边居中*/justify-content: center;/*实现中心位置居中,不是边角居中*/
}

接下来设计三角形

  div {width: 0px;height: 0px;border: 15px solid #ccc;border-left: 15px solid red;border-top: 15px solid blue;border-right: 15px solid yellow;border-bottom: 15px solid green;}

如果我们给div设置了这个样式会在页面显示

当我们需要哪个方向三角形时候只需要将其他方向color设置为transparent(透明)

首先我们给line加一个下三角

.btn::before{content:'';/*必须写*/position: absolute;width:0;height:0;bottom:-20px;right:15px;border:10px solid transparent;border-top:10px solid #ff6f61;
}

下面是全部css代码

* {margin: 0;padding: 0;text-decoration: none;   list-style:none
}
html,body {background-color:#fcdc29;width: 100%;height: 100%;display: flex;align-items: center; /*侧边居中*/justify-content: center;
}
.item {border-bottom: 1px solid #ef584a;overflow: hidden;
}
.menu {display: block;width: 250px;border-radius: 10px;overflow: hidden
}
.btn {display: block;position: relative;color: #fff;background-color: #ff6f61;padding: 15px 20px;
}/*三角形*/
.btn::before{content:'';position: absolute;width:0;height:0;bottom:-20px;right:15px;border:10px solid transparent;border-top:10px solid #ff6f61;
}
/*下拉*/
.show_menu  {background: #273057;display: none;transition:display 0.5s;
}
.show .show_menu {display:block;
}
.show_menu a {position: relative;display: block;color: #fff;padding: 15px 20px;font-size: 13px;border-bottom: 1px solid #394c7f;
}.show_menu a::before,
.show_menu a::after {position: absolute;content:'';width:0;height:0;top:0;opacity:0;transition:opacity 0.3s;
}
.show_menu a::before {left: 0;
}
.show_menu a::after {right: 0;
}
.show_menu a:hover::before{opacity: 1;border-top: 24px solid transparent;border-left: 11px solid #fcdc29;border-bottom: 24px solid transparent;
}
.show_menu a:hover::after {opacity: 1;border-top: 24px solid transparent;border-right: 11px solid #fcdc29;border-bottom: 24px solid transparent;
}
.show_menu a:hover {background: #273057;background: linear-gradient(to bottom, #273057 0%,#273057 50%,#394c7f 51%,#394c7f 100%);transition: all 0.3s;
}

js 代码

 var btn = document.getElementsByClassName('btn');var len = btn.length;for (var i = 0; i < len; i++) {btn[i].onclick = function () {var li = this.parentNode;var show = document.getElementsByClassName('show')[0];if (show) {show.classList.remove('show');}li.classList.add('show');}}var menu = document.getElementsByClassName('menu')[0];menu.onmouseleave = function () {var show = document.getElementsByClassName('show')[0];if (show) {show.classList.remove('show');}};

上面代码中如果我们不给a标签加relative定位不能看到效果
因为伪元素的absolute定位
absolute: 将对象从文档流中拖出,使用left,right,top,bottom 等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位

relative也一样,但是遵循对象不可重叠

最后我们看一下效果

手写口风琴全动态左侧导航栏相关推荐

  1. uniapp手写 购物车单选 全选 反选

    uniapp手写 购物车单选 全选 反选 这里是用图片切换的方法显示没有用到 checkbox 单选 选项 图片判断切换 全选 选项 图片判断切换 这里是用图片切换的方法显示没有用到 checkbox ...

  2. 微信小程序购物车和左侧导航栏

    先上实现图 话不多说,直接上代码 cars.js  // const arr = require("../../utils/data"); // pages/cars/cars.j ...

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

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

  4. 点击左侧导航栏切换右侧商品(左右联动)

    点击左侧导航栏切换右侧商品(左右联动) 菜单栏主要以 A,B,C,D等字母为主,即A,B,C,D等字母为对应该项携带的 id(id不能为汉字或纯数字). 实现该功能的思路:通过点击左侧滑栏的某一项,获 ...

  5. 基于CarSystemUI实现左侧导航栏NavigationBar及下拉面板定制开发1——Android10智能座舱

    文章目录 前言 一.需求说明 二.修改方案 1.基于需求的两种设计构想 2.修改正确的高度及宽度 三.CarSystemUI 1.CarOS框架关于CarSystemUI的介绍 2.替换CarSyst ...

  6. 后台管理页面通过点击左侧导航栏的菜单项实现右边内容的改变

    目录 前端页面部分 js代码部分 左侧导航栏组菜单项的打开与关闭 url地址跳转 地址栏url地址处理 ajax实现右边页面内容变换 内容面板上Bootstrap 面包屑导航 前端页面部分 <a ...

  7. 转载:Android (争取做到)最全的底部导航栏实现方法

    原文出处 标题:Android (争取做到)最全的底部导航栏实现方法 作者:野狼谷 原文链接:Android (争取做到)最全的底部导航栏实现方法 - 野狼谷 - 博客园 前言 本文(争取做到)And ...

  8. 尚硅谷前端-京东左侧导航栏及网易新闻列表练习——CSS

    跟着尚硅谷老师的练习,记录一下自己做的内容,查漏补缺. 目录 一.京东左侧导航栏 1.第一次自己做的代码(未看老师讲解视频前做的): 总结: 2.看完老师视频后跟着写的代码: 注意点及总结 删除行内元 ...

  9. 区块链商品溯源系统左侧导航栏+右侧加载页面ajax html

    纯前端页面,项目应该部署到服务器上,ajax跨域问题得到解决,无聊的毕业前实习. 网页是参考网上的原型设计 效果: 代码: html <!DOCTYPE html> <html la ...

最新文章

  1. linux下crontab实现定时服务详解
  2. 品牌管理-JSR303数据校验
  3. C++基础知识(二)—— 变量和数据类型
  4. 三角形已知边长求高公式_五年级数学:“长方形、正方形、三角形、平行四边形、梯形” 知识重点、难点全解析,附习题!...
  5. android 性能优化---(2) MTK 平台开机时间优化
  6. 95-190-032-源码-window-CountWindow
  7. jenkins访问地址_运维机器人hubot集成jenkins
  8. jquery清除所有cookie
  9. Python爬虫之selenium爬虫,模拟浏览器爬取天猫信息
  10. 3.字符串(string)
  11. 去掉有序数组中的重复元素 c/c++
  12. 【实习之T100开发】帆软报表笔记,Java经典入门教程
  13. android auto 墙纸,AA壁纸(Android Auto车载系统壁纸)
  14. python学习笔记六
  15. 项目二 管理与维护Linux系统
  16. 单核cpu多核cpu如何执行多线程
  17. SylixOS QT配置
  18. jQuery基础(菜鸟教程,建议收藏不然怕你后悔!)
  19. LaTeX技巧013:quotation,quote环境实现首行缩进2em
  20. 在线IDE- Gitpod介绍

热门文章

  1. http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html(重要)
  2. 掌握JS中的“this” (一)
  3. tensorflow特征图可视化
  4. 在线进销存系统sow文档
  5. 【AlarmManager】待机唤醒功能
  6. php性别类型是什么,专属男女的各种性别符号
  7. pycharm使用私钥远程连接服务器
  8. android 美颜大眼特效
  9. 后腰椎间盘突出时期的生活
  10. 线控数解法表python编程实现