使用CSS做出一个嵌套导航.

yizhihongxing

使用CSS做出一个嵌套导航,主要需要以下几个步骤:

1. HTML结构

在HTML中,我们需要使用嵌套的列表结构来建立导航。具体代码如下:

<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li>
      <a href="#">产品</a>
      <ul>
        <li><a href="#">产品1</a></li>
        <li><a href="#">产品2</a></li>
      </ul>
    </li>
    <li><a href="#">服务</a></li>
    <li><a href="#">关于我们</a></li>
  </ul>
</nav>

在上面的代码中,我们使用nav元素来定义整个导航条,使用ulli元素来定义嵌套列表。注意到第二个列表项中包含一个嵌套的列表,这就形成了嵌套导航。

2. CSS样式

接下来我们需要使用CSS来为导航条添加样式。具体代码如下:

nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  background-color: #333;
  position: relative;
}

nav ul li {
  display: inline-block;
  margin-right: 20px;
}

nav ul li:hover {
  background-color: #555;
}

nav ul li a {
  display: block;
  color: #fff;
  text-decoration: none;
  font-size: 16px;
  line-height: 60px;
  padding: 0 15px;
}

nav ul li:hover > ul {
  display: block;
}

nav ul ul {
  display: none;
  position: absolute;
  top: 60px;
  background-color: #333;
  padding: 0;
}

nav ul ul li {
  display: block;
  margin: 0;
  width: 200px;
}

nav ul ul li a {
  line-height: 40px;
  padding: 0 10px;
}

nav ul ul ul {
  position: absolute;
  top: 0;
  left: 100%;
  width: 200px;
}

在上面的代码中,我们为整个导航条的ul元素添加了一些基本样式,比如去除了默认的列表样式,设置了背景颜色。我们还使用了position: relative来允许子元素使用position: absolute相对于父元素进行定位。

对于每个li元素,我们设置了display: inline-block来使每个菜单项水平排列。当鼠标悬停时,我们使用hover来改变菜单项的背景颜色,从而提高交互性。

当一个菜单项包含子菜单时,我们使用ul元素来创建子菜单的列表,并设置display: none来隐藏子菜单。当鼠标悬停在一个菜单项上时,我们使用li:hover > ul来显示子菜单。

我们还要为子菜单添加一些样式,比如使用position: absolute相对于父元素进行定位,设置背景颜色等等。

3. 示例说明

以下是两个不同的示例,演示了不同类型的嵌套导航。

示例1:水平导航

在这个示例中,我们使用了一个水平的导航条,所有菜单项都水平排列在一行。当鼠标悬停在某个菜单项上时,它下面的子菜单会弹出。

<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li>
      <a href="#">产品</a>
      <ul>
        <li><a href="#">产品1</a></li>
        <li><a href="#">产品2</a></li>
      </ul>
    </li>
    <li><a href="#">服务</a></li>
    <li><a href="#">关于我们</a></li>
  </ul>
</nav>
nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  background-color: #333;
  position: relative;
}

nav ul li {
  display: inline-block;
  margin-right: 20px;
}

nav ul li:hover {
  background-color: #555;
}

nav ul li a {
  display: block;
  color: #fff;
  text-decoration: none;
  font-size: 16px;
  line-height: 60px;
  padding: 0 15px;
}

nav ul li:hover > ul {
  display: block;
}

nav ul ul {
  display: none;
  position: absolute;
  top: 60px;
  background-color: #333;
  padding: 0;
}

nav ul ul li {
  display: block;
  margin: 0;
  width: 200px;
}

nav ul ul li a {
  line-height: 40px;
  padding: 0 10px;
}

nav ul ul ul {
  position: absolute;
  top: 0;
  left: 100%;
  width: 200px;
}

示例2:垂直导航

在这个示例中,我们使用了一个垂直的导航条,所有菜单项都垂直排列在一列。当鼠标悬停在某个菜单项上时,它右边的子菜单会弹出。

<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li>
      <a href="#">产品</a>
      <ul>
        <li><a href="#">产品1</a></li>
        <li><a href="#">产品2</a></li>
      </ul>
    </li>
    <li><a href="#">服务</a></li>
    <li><a href="#">关于我们</a></li>
  </ul>
</nav>
nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  background-color: #333;
  position: relative;
}

nav ul li {
  display: block;
  margin-bottom: 5px;
}

nav ul li:hover {
  background-color: #555;
}

nav ul li a {
  display: block;
  color: #fff;
  text-decoration: none;
  font-size: 16px;
  line-height: 40px;
  padding: 0 15px;
}

nav ul li:hover > ul {
  display: block;
  position: absolute;
  top: 0;
  left: 100%;
  width: 200px;
  background-color: #333;
  padding: 0;
}

nav ul ul {
  display: none;
}

nav ul ul li {
  display: block;
  margin: 0;
  width: 200px;
}

nav ul ul li a {
  line-height: 40px;
  padding: 0 10px;
}

nav ul ul ul {
  position: absolute;
  top: 0;
  left: 100%;
  width: 200px;
}

在这个示例中,我们使用了display: block将菜单项排成一列。我们还使用margin-bottom来添加菜单项之间的间距。当鼠标悬停在某个菜单项上时,我们使用position: absoluteleft: 100%将子菜单定位在菜单项右边。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用CSS做出一个嵌套导航. - Python技术站

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

相关文章

  • print不自动换行,puts会自动换行

    当我们在编写程序或脚本时,经常需要输出信息到控制台。这时候,我们可以使用print或puts函数输出信息。两者的区别在于输出后是否自动换行。 print函数 print函数输出信息后不会换行,可以通过加入”\n”实现手动换行。print函数的基本语法如下: print("Hello World!") 首先我们来看一个示例程序,输出数字1到…

    css 2023年6月10日
    00
  • H5移动端适配 Flexible方案

    H5移动端适配 Flexible方案是目前比较流行的一种移动端适配方案,以下是完整攻略: 一、什么是Flexible方案 Flexible方案是一种基于JavaScript的解决方案,它利用了浏览器的缩放特性,在页面加载的时候动态改变HTML文档的font-size属性,从而实现页面的自适应调整。 二、Flexible方案的具体实现 创建一个基准值变量并计算…

    css 2023年6月10日
    00
  • CSS3对背景图片的裁剪及尺寸和位置的设定方法

    CSS 3 增加了对背景图片的裁剪、尺寸和位置的控制,使得在网页设计中可以更加方便地使用背景图片。下面,我们将详细讲解“CSS3对背景图片的裁剪及尺寸和位置的设定方法”的完整攻略。 控制背景尺寸 在 CSS3 中,可以使用 background-size 属性来控制背景图像的尺寸。该属性可以使用以下值: auto:默认值,表示不改变背景图片的原始尺寸。 &l…

    css 2023年6月9日
    00
  • 使用Visual Studio进行文件差异比较的问题小结

    使用Visual Studio进行文件差异比较的问题小结 1.为什么使用Visual Studio进行文件差异比较? Visual Studio可以快速的比较两个文件的差异,并且提供直观的修改视图,可以方便的定位并修改文件中的问题。将Visual Studio作为默认的差异比较工具,可以方便的进行文件比对,特别是对于代码文件进行比对和合并操作,可以提高代码的…

    css 2023年6月10日
    00
  • CSS3 rgb and rgba(透明色)的使用详解

    以下是关于“CSS3 rgb 和 rgba(透明色)的使用详解”的完整攻略。 一、什么是rgb和rgba RGB 和 RGBA 是一组颜色模式,RGB 表示红色、绿色和蓝色,RGBA 跟 RGB 模式同样表示红色、绿色和蓝色,只不过多了一个透明度的参数。 RGB:由红色值(R)、绿色值(G)和蓝色值(B)组成的颜色表示方式。 RGBA:由红色值(R)、绿色值…

    css 2023年6月9日
    00
  • jQuery Dialog 弹出层对话框插件

    关于jQuery Dialog 弹出层对话框插件的完整攻略,我将为您详细阐述以下内容: 简介 jQuery Dialog 弹出层对话框插件是一种基于jQuery的插件,它能够在网页中实现易于定制和美观的对话框弹出效果。该插件具有轻量级和易于使用等优点,已被广泛应用于Web开发领域。 安装 在使用jQuery Dialog插件之前,您需要将其下载并引用到网页中…

    css 2023年6月10日
    00
  • 基于jquery实现全屏滚动效果

    下面是 “基于jquery实现全屏滚动效果” 的完整攻略: 1. 引入jQuery库 在 head 标签中引入 jQuery 库,例如: <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 2. H…

    css 2023年6月10日
    00
  • python对json的相关操作实例详解

    Python对JSON的相关操作实例详解 JSON(JavaScript Object Notation)是一种轻量级的数据交互格式,易于人和机器阅读和编写。Python内置了处理JSON的标准库模块json,它提供了完整的JSON解析和序列化功能。本文将详细介绍Python对JSON的相关操作,包括如下内容: JSON解析 JSON序列化 使用json.d…

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