建站学习网,专业提供各类建站教程,网页素材,SEO资讯等建站资源!

网站模板_网站源码_网站素材_建站教程_建站学习网

当前位置:建站学习网 > 网页设计 > HTML5教程 >

如何利用html+css设置菜单栏缓慢下拉效果?

更新时间:2022-11-28整理编辑:建站学习网阅读:0

如何利用html+css设置菜单栏缓慢下拉效果?解决方法和相关代码分享如下:


方法一:过渡(transition)

对forum_box开启绝对定位(absolute),让里面的li从其父元素中脱离出去,不然会把之后的内容往右挤,并且设置overflow:hidden,设置高度为0,鼠标移入后再设置相应的高度即可:

.code .forum_box{
  /* 开启绝对定位 */
  position: absolute;
  overflow: hidden;
  height: 0;
  transition-duration: 0.5s;
}

html代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>菜单栏缓慢下拉_建站学习网</title>
</head>
<body>
  <ul>
    <li><a href="https://www.dedexuexi.com/">建站学习网</a></li>
    <li><a href="https://www.dedexuexi.com/">建站学习网</a>
      <ul>
        <li><a href="https://www.dedexuexi.com/">建站学习网</a></li>
        <li><a href="https://www.dedexuexi.com/">建站学习网</a></li>
        <li><a href="https://www.dedexuexi.com/">建站学习网</a></li>
      </ul>
    </li>
    <li><a href="https://www.dedexuexi.com/">建站学习网</a></li>
  </ul>
</body>
</html>

css样式代码如下:

a{
  display: block;
  text-decoration: none;
  color: #333;
}
.code{
  width: 390px;
  height: 50px;
  line-height: 50px;
  background-color:#bfa;
  margin: 5px auto;
}
.code li{
  float: left;
  width: 130px;
  height: 50px;
  background-color: #bfa;
  text-align: center;
  margin: 0 auto;
  font-size: 20px;
}
.code > li:last-child{
  margin-right: 0;
}
.code > li:hover{
  background-color: #f8f192;
}
.forum{
  position: relative;
  margin: auto 90px;
}
.code .forum_box{
  /* 开启绝对定位 */
  position: absolute;
  overflow: hidden;
  height: 0;
  transition-duration: 0.5s;
}
.forum:hover .forum_box{
  /* 鼠标移入释放高度 */
  height: 150px;
}

最后发现transition是不支持display属性的,也就是说,不能用display:none隐藏菜单栏


方法二:动画(animation)

首先创建css动画:

@keyframes frames{
  from{
    height: 0px;
  }
  to{
    height: 150px;
  }
}

然后设置display:none隐藏菜单样式,把它绑定到forum-1选择器中,用animation绑定动画名字,设置持续时间

.forum_box{
  position: absolute;
  display: none;
  overflow: hidden;
  /* 绑定动画名字并且设置持续时间 */
  animation-name: frames;
  animation-duration: 0.5s;
}

当鼠标移入时,设置display属性为block即可:

.forum:hover .forum_box{
  display: block;
}

需要注意的一点是,这样写的结果会出现一个问题:当鼠标移入不久后二级菜单栏会自动收回,为了避免这种问题,我们可以在forum-1选择器内部添加一行代码即可:

.forum_box{
	animation-fill-mode: forwards;
}

其余代码和方法一的代码相同,这里不再赘述


效果图如下:

如何利用html+css设置菜单栏缓慢下拉效果?

本文网址:https://www.dedexuexi.com/wysj/html5/3629.html

本站部分文章搜集与网络,如有侵权请联系本站,转载请说明出处。

收藏此文 赞一下!() 打赏本站

如本文对您有帮助,就请建站学习网抽根烟吧!

支付宝打赏
微信打赏
纯css3实现下拉箭头、关闭按钮旋转效果
« 上一篇2022年11月28日
CSS代码鼠标经过图片变换图片的几种方法
2022年11月28日下一篇 »
  • CSS代码鼠标经过图片变换图片的几种方法
    0阅读
    CSS代码鼠标经过图片变换图片方法如下:方法一:在css中,可以利用“:hover”选择器和“background-image”属性实现鼠标滑过改变图片效果,只需要给图片元素添加“图片元素:hover{background-image:url(新的图片路径);”样式即可。
  • 纯css3实现下拉箭头、关闭按钮旋转效果
    0阅读
    说起css3的旋转效果,那就要说为什么不用js去实现,CSS3的动画效果,能够减少对JavaScript和Flash文件的HTTP请求这是原因之一。但是css3可能要求浏览器执行很多的工作来完成这个动画效果的渲染,这有可能导致浏览器响应缓慢,因此,在使用一些复杂的特效时,大家需要考虑清楚。不过这样的...
  • 使用HTML5的Canvas绘制曲线的简单方法
    0阅读
    Canvas2D自带的曲线方法 最近在研究3D柔体的计算,所以在狂补一些知识。经常会涉及到一些数值分析方面的东西,主要是曲线的各种插值算法。突然想起了Canvas2D本身也是可以绘制曲线的,使用
  • html两个文字之间有一个空格的解决办法
    0阅读
    碰到过这样一位朋友,在编写的html代码里面出现两个文字间有空格的情况,两个文字之间他没有加空格符,也没有代码。 这个情况在html编码使用不太多或不太熟练的情况下,很难找出问题。
  • 使用HTML5的Notification API制作web通知的教程
    0阅读
    在使用网页版Gmail的时候,每当收到新邮件,屏幕的右下方都会弹出相应的提示框。借助HTML5提供的Notification API,我们也可以轻松实现这样的功能。 确保浏览器支持 如果你在特定版本的浏览器
 
QQ在线咨询