基于CSS实现网页悬浮菜单效果

在此我将详细讲解一下“基于CSS实现网页悬浮菜单效果”的完整攻略。

准备工作

在开始实现悬浮菜单之前,我们需要先准备好以下内容:

HTML结构

在页面中添加一个菜单导航的HTML结构,如下所示:

<div class="menu">
  <ul>
    <li><a href="#">菜单1</a></li>
    <li><a href="#">菜单2</a></li>
    <li><a href="#">菜单3</a></li>
    <li><a href="#">菜单4</a></li>
  </ul>
</div>

CSS样式

在页面中添加一个基本的CSS样式,如下所示:

.menu {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
.menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: row;
}
.menu li {
  margin-right: 20px;
}
.menu li:last-child {
  margin-right: 0;
}
.menu a {
  color: #333;
  text-decoration: none;
  font-size: 18px;
  font-weight: bold;
  padding: 10px 20px;
  border-bottom: 2px solid transparent;
  transition: border-bottom 0.3s ease;
}
.menu a:hover {
  border-bottom: 2px solid #333;
}

实现悬浮菜单效果

接下来就可以实现悬浮菜单的效果了。我们可以通过添加CSS样式来实现鼠标移上去时菜单的展开和收起。

.menu ul {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
}
.menu:hover ul {
  max-height: 200px; /* 菜单最大高度 */
}

通过将菜单的最大高度设置为0,再将鼠标悬浮在菜单上时,将其最大高度设置为一定值,即可实现菜单的展开和收起效果。

以下是完整的示例代码:

<div class="menu">
  <ul>
    <li><a href="#">菜单1</a></li>
    <li><a href="#">菜单2</a></li>
    <li><a href="#">菜单3</a></li>
    <li><a href="#">菜单4</a></li>
  </ul>
</div>

<style>
.menu {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}
.menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: row;
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
}
.menu:hover ul {
  max-height: 200px; /* 菜单最大高度 */
}
.menu li {
  margin-right: 20px;
}
.menu li:last-child {
  margin-right: 0;
}
.menu a {
  color: #333;
  text-decoration: none;
  font-size: 18px;
  font-weight: bold;
  padding: 10px 20px;
  border-bottom: 2px solid transparent;
  transition: border-bottom 0.3s ease;
}
.menu a:hover {
  border-bottom: 2px solid #333;
}
</style>

示例说明

以下是两个实际示例,展示了如何使用不同的HTML结构和CSS样式来实现悬浮菜单效果:

示例1

在这个示例中,我们使用了另一种HTML结构和CSS样式来实现悬浮菜单的效果。

<div class="menu">
  <a href="#" class="menu__btn">菜单</a>
  <ul class="menu__list">
    <li><a href="#">菜单1</a></li>
    <li><a href="#">菜单2</a></li>
    <li><a href="#">菜单3</a></li>
    <li><a href="#">菜单4</a></li>
  </ul>
</div>

<style>
.menu {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
}
.menu__btn {
  display: inline-block;
  color: #333;
  text-decoration: none;
  font-size: 18px;
  font-weight: bold;
  padding: 10px 20px;
  border: 2px solid #333;
  border-radius: 5px;
  transition: all 0.3s ease;
}
.menu__btn:hover {
  background-color: #333;
  color: #fff;
}
.menu__list {
  list-style: none;
  margin: 0;
  padding: 0;
  position: absolute;
  top: 100%;
  left: 0;
  border: 2px solid #333;
  background-color: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
  opacity: 0;
  visibility: hidden;
  transition: all 0.3s ease;
}
.menu:hover .menu__list {
  opacity: 1;
  visibility: visible;
  margin-top: 10px;
}
.menu__list li {
  margin: 0;
}
.menu__list li a {
  display: block;
  color: #333;
  text-decoration: none;
  font-size: 16px;
  font-weight: bold;
  padding: 10px 20px;
  transition: all 0.3s ease;
}
.menu__list li a:hover {
  background-color: #333;
  color: #fff;
}
</style>

示例2

在这个示例中,我们使用了另一种HTML结构和CSS样式来实现悬浮菜单的效果。

<div class="menu">
  <ul>
    <li><a href="#">菜单1</a></li>
    <li><a href="#">菜单2</a></li>
    <li><a href="#">菜单3</a></li>
    <li><a href="#">菜单4</a></li>
  </ul>
</div>

<style>
.menu {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  background-color: #fff; /* 菜单父元素底色 */
}
.menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}
.menu li {
  margin-right: 20px;
}
.menu li:last-child {
  margin-right: 0;
}
.menu a {
  display: block;
  color: #333;
  text-decoration: none;
  font-size: 18px;
  font-weight: bold;
  padding: 10px 20px;
  transition: all 0.3s ease;
}
.menu a:hover {
  background-color: #333; /* 悬浮时菜单项底色 */
  color: #fff;
}
@media screen and (max-width: 768px) { /* 小屏幕下菜单行布局 */
  .menu ul {
    flex-direction: column;
  }
  .menu li {
    margin-right: 0;
    margin-bottom: 10px;
  }
}
</style>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于CSS实现网页悬浮菜单效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 按照字体名称调用字体让浏览器显示你希望的字体

    为了让浏览器展示特定的字体,我们可以使用CSS的@font-face规则来调用自定义字体。在使用@font-face规则之前,我们需要先获取自定义字体文件。 获取自定义字体文件有两种方式。一种是直接从字体官网下载字体文件,另一种是使用字体转换工具(如Font Squirrel、Transfonter等)将已存在的字体文件转换为网页可以使用的格式(如WOFF、…

    css 2023年6月9日
    00
  • CSS3中animation实现流光按钮效果

    接下来我将详细讲解“CSS3中animation实现流光按钮效果”的完整攻略。 简介 动效在前端开发中扮演着越来越重要的角色。CSS3中的animation属性提供了实现动效的方式,为网站增添了丰富多彩的效果。在很多时候,我们需要为按钮、链接等元素增加动效,以吸引用户的注意力或者提供更加友好的交互体验。本文将介绍如何使用CSS3中的animation属性来实…

    css 2023年6月9日
    00
  • css3的transition属性详解

    CSS3的transition属性详解 CSS3的transition属性用于定义元素从一种样式平滑过渡到另一种样式的效果。可以设置过渡效果的属性包括: background-color border height width opacity transform 等等 语法 transition: property duration timing-funct…

    css 2023年6月10日
    00
  • 纯css实现更改图片颜色的技巧

    当我们需要更改图片颜色时,往往可以使用Photoshop等工具来进行编辑,但在一些特殊场景下,使用纯CSS来进行图片颜色更改是非常方便和实用的。接下来,我将为大家介绍纯CSS实现更改图片颜色的技巧。 目录 需要注意的事项 CSS filter CSS blend-mode 示例说明 使用CSS filter更改图片颜色 使用CSS blend-mode更改图…

    css 2023年6月9日
    00
  • Bootstrap学习笔记之css样式设计(1)

    Bootstrap学习笔记之css样式设计(1) Bootstrap是一个流行的前端框架,提供了丰富的CSS和JavaScript组件,可以帮助开发者快速构建响应式网站。本攻略将详细讲解Bootstrap中的CSS样式设计,包括基本原理、使用方法和示例说明。 1. 基本原理 Bootstrap中的CSS样式设计基于LESS预处理器,使用了变量、混合器和嵌套等…

    css 2023年5月18日
    00
  • 本文的主角 vertical-align使用介绍

    vertical-align 是 CSS 中的一个属性,用于控制元素的垂直对齐方式。在 Web 开发中,垂直对齐是一个常见的问题,vertical-align 属性可以帮助我们解决这个问题。下面是一个完整攻略,包含了 vertical-align 属性的使用介绍和两个示例说明。 vertical-align 属性的使用介绍 vertical-align 属性…

    css 2023年5月18日
    00
  • JS实现排行榜文字向上滚动轮播效果

    JS实现排行榜文字向上滚动轮播效果是一种较为常见的UI设计,其核心思想是通过JavaScript控制文本容器不断改变其显示内容,从而产生类似于向上滚动的视觉效果。这种轮播效果不仅美观,而且具有良好的用户体验性,可以在Web开发中被广泛应用。本文将提供一份完整的攻略,帮助开发者学习和掌握JS实现排行榜文字向上滚动轮播的方法。 一、样式与HTML结构 在实现JS…

    css 2023年6月10日
    00
  • CSS的position定位和float浮动详解

    CSS的position定位和float浮动是CSS中非常重要的属性,掌握它们可以实现更加灵活、多样化的页面布局效果。 CSS的Position定位 CSS的Position定位属性是控制元素在文档流中的位置和方式的重要属性。常见的position属性取值有以下几种: static(默认):元素遵循文档流,不进行定位。 relative:元素相对于自己原来所…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部