css实现2级导航菜单

本文用纯CCS实现了一个具有特效的二级导航栏,并详细注释了CSS的实现方法。

演示地址:https://tympanus.net/codrops-playground/SaraSoueidan/RETvk1HZ/editor

<!--HTML-->
<div class="container">
  <ul class="menu">
    <li>Home</li>
    <li>Blog</li>
    <li class="has-submenu">About 
      <ul>
        <li>Who we Are</li>
        <li>What We Do</li>
      </ul>
    </li>
    <li>Pricing</li>
    <li class="has-submenu">Contact 
      <ul>
        <li>Email</li>
        <li>Phone</li>
      </ul>
    </li>
  </ul>
</div>
/*css*/
body {
  background-color: #F5F5F5;
  color: #555;
  font-size: 1.1em;
  font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

.container {
  margin: 40px auto;
  max-width: 700px;
  text-align: center;
}

/*第一层的导航栏由此ul组成*/
ul {
  text-align: left;
  display: inline-block;
  list-style: none;
  padding-left: 0;
}

/*这里定义了导航栏菜单的样式*/
.menu li {
  float: left;
  padding: .65em 1em;/*用padding来撑出大小*/
  border: 1px solid #eee;/*用白色的描边来从视觉上将每个li隔开(实际上是连在一起没有间隔的)*/
  background-color: black;
  color: white;
  cursor: pointer;/*鼠标移动到菜单上会变成小手*/
  -webkit-transition: all .3s;/*动画的过度时间*/
  transition: all .3s;/*动画的过度时间*/
  position: relative;/*相对定位(用于二级菜单的定位)*/
}

/*当鼠标选中菜单的时候会变色*/
.menu li:hover {
  background-color: deepPink;
}

/*这里定义了二级菜单出现的位置和宽度大小*/
li ul {
  position: absolute;
  top: 100%;
  left: 0%;
  width: 150px;
  display: none;/*二级菜单默认是不可见的*/
  z-index: 1;
}

/*这里定义了二级菜单的子项的宽度*/
li ul li {
  width: 100%;
}

li:hover ul {
  display: block;/*当鼠标放到一级菜单上的li时为li下的ul标签也就是二级菜单附加类,使其能够显示*/
}

/*用伪类:after 在导航栏菜单加载完成之后,在含有has-submenu这个类的li标签的内容后加上以下内容*/
li.has-submenu:after {
  content: "\25bc";/*这是一个倒三角▼*/
  font-size: .7em;/*设置了三角的大小*/
  padding-left: 5px;
  vertical-align: middle;/*设置元素的垂直对齐方式为垂直居中*/
}

/*当二级菜单被触发显示后,将倒三角替换成正三角*/
li.has-submenu:hover:after {
  content: "\25b2";
}

HTML特殊字符代码大全: https://blog.csdn.net/realghost/article/details/11613649
本文引用自:https://tympanus.net/codrops/css_reference/after/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值