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

yizhihongxing

在此我将详细讲解一下“基于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日

相关文章

  • vue实现3D切换滚动效果

    下面是一份详细的“Vue实现3D切换滚动效果”的攻略: 1. 前置知识准备 在使用Vue实现3D切换滚动效果之前,你需要掌握以下技术: HTML/CSS基础知识,包括布局、样式等; Vue.js基础知识,包括组件、指令、生命周期等; JavaScript基础知识,包括函数、DOM操作等。 2. 创建容器组件 首先,我们需要创建一个容器组件,来包含所有的卡片元…

    css 2023年6月10日
    00
  • PsPad Editor编辑器怎么使用?PsPad Editor编辑器使用图文教程(附下载)

    PsPad Editor是一款轻量级的代码编辑器,支持多种语言的代码编辑和高亮显示。以下是使用PsPad Editor的完整攻略: 步骤1:下载和安装 首先,要到PsPad Editor官网(https://www.pspad.com/)下载最新版本的安装程序。安装过程非常简单,只需双击下载的安装程序并按照提示操作即可。 步骤2:打开文件 启动PsPad E…

    css 2023年6月10日
    00
  • 利用css制作3D照片墙效果

    下面是制作3D照片墙效果的完整攻略: 1. 概述 制作3D照片墙效果需要使用CSS3的transform属性来控制元素的位置和旋转角度,同时还需要使用伪元素和z-index属性来实现层叠效果。总体实现过程包括以下几个步骤: 创建一个包含图片的HTML结构,每个图片需要设置一个固定大小的容器和一个img标签。 对图片容器设置透视距离,以及一些基础的样式,比如宽…

    css 2023年6月10日
    00
  • jQuery 拖动层(在可视区域范围内)

    jQuery 拖动层是一种常见的 Web 开发技术,它允许 Web 页面上的元素随着用户的鼠标拖动而移动。如果你想要实现拖动层的功能,并且希望元素只能在可视区域范围内进行拖动,那么可以按照以下步骤进行操作。 设置样式 首先需要在 CSS 文件中设置元素的样式。例如,可以设置一个 div 元素,宽度和高度都为 100 像素,并设置背景色和边框。 .dragga…

    css 2023年6月11日
    00
  • css图标制作教程制作云图标

    下面我会详细讲解如何制作云图标的完整攻略,包含以下几个步骤: 1. 准备工作 在制作过程中,我们需要准备两个东西,一是云的SVG图标文件,二是实现动画效果的CSS代码: (1)SVG图标文件: 首先需要使用Adobe Illustrator或其他矢量图形编辑软件,设计并导出一个云的SVG图标文件,示例如下: <svg width="24px&…

    css 2023年6月10日
    00
  • CSS使用盒模型实例讲解

    下面详细讲解一下“CSS使用盒模型实例讲解”的完整攻略。 盒模型是什么 盒模型,指的是网页中的元素在渲染时所占用的空间,由内到外一共包含四个部分:元素的内容区域(content)、元素的内边距区域(padding)、元素的边框区域(border)和元素的外边距区域(margin)。 盒模型的简单使用 在使用CSS中盒模型时,我们可以使用box-sizing属…

    css 2023年6月9日
    00
  • jQuery给表格添加分页效果

    下面我将详细讲解如何使用jQuery给表格添加分页效果。 1. 引入jQuery和分页插件 首先,在页面中引入jQuery和分页插件。这里以bootstrap-table插件为例,它是一个基于Bootstrap样式的表格插件,并且可以很方便地实现分页、搜索、排序、导出等功能。 <!– 引入jquery –> <script src=&q…

    css 2023年6月10日
    00
  • Html5+jQuery+CSS制作相册小记录

    让我来详细讲解一下“HTML5+jQuery+CSS制作相册小记录”的完整攻略。 准备工作 安装文本编辑器:选择一个适合自己的文本编辑器,并学习如何使用它。建议使用Visual Studio Code。 学习HTML、CSS、JavaScript和jQuery:掌握HTML、CSS、JavaScript和jQuery的基础知识及其运用方式。 HTML布局 创…

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