HTML设计一个水平导航栏,完成水平导航栏下拉列表交互效果的实现。

2023-11-18

HTML设计一个水平导航栏,简单的完成水平导航栏下拉列表交互效果的实现。

  hello,大家好!,学习之路一小步,如果有不严谨的问题请指出,我会积极学习的。

(一)水平导航栏

  设计要求:

(1)使用无序列表ul及嵌套的子列表ul做该导航菜单结构;
(2)使用浮动实现主菜单项的水平排列;
(3)使用:hover伪类选择器为主菜单项添加鼠标悬停效果(可自定义);
(4)使用display 或 visibility 或opacity 属性隐藏子列表菜单;
(5)使用:hover伪类选择器添加鼠标悬停时显示子菜单效果;
(6)使用:hover伪类选择器添加鼠标悬停在子菜单选项时显示背景颜色和字体颜色改变效果;

CSS代码如下::

<style>
      .menu ul{
		  margin:0;
		  padding:0;
	  }
      .menu {
		  width:1100px;
		  height:50px;
		  margin:0 auto;
		  border:1px  black solid;
		  background-color:#000099;
	  }
	  li {
		  list-style-type:none;
		  width:110px;
	  }
	  .menu >li{
		  float:left;
	  }
	  .menu li a{
		  display:block;
		  height:50px;
		  text-align:center;
		  line-height:50px;
		  text-decoration:none;
		  font-weight:bold;
		  color:#FFF;
	  }
	  ul li a{
		  margin:0;
		  padding:0;
		
	  }
	  .menu li ul li{
		  visibility:hidden;
		  background-color: #00F;
		  height:40px;
		
	  }
	  .menu ul li a{
		  font-size:14px;
		  font-weight:normal;
	  }
	  .menu>li:hover>a{
		  background-color:#000066;
		  color:red;
	  }
	  .menu>li:hover ul li{
		  visibility:visible;
	  }
	  .menu li ul li a:hover{
		  background-color:#2A40BD;
		  color:#9D4076;
	  }
		</style>  

HTML结构如下::
  页面最外层结构如下:
在这里插入图片描述
  每个导航栏目内部结构如下:
在这里插入图片描述

  CSS样式分析:

(一)清楚默认样式

.menu ul{
		  margin:0;
		  padding:0;
	  }
 ul li a{
		  margin:0;
		  padding:0;
		
	  }

  首先将将菜单项中的无序列表样式的内外边距设置为0。这样做是为了避免了因为默认样式造成的问题,可以将这两个总和为一个,如下:

* {
     margin:0;
     padding:0;
     }
     

  设置所有元素的内外边距为0,以避免默认的边距影响布局。
(二)定义最外层ul的样式

.menu {
		  width:1100px;
		  height:50px;
		  margin:0 auto;
		  border:1px  black solid;
		  background-color:#000099;
	  }

   .menu{}是类选择器,创建一个类menu,也就是导航栏的样式:
我们定义一个宽度:1100px;(这里也可以设成100%);高度:50px;水平居中;边距为1px的黑色实线边框;背景颜色为十六进制:000099的颜色;其中margin 属性用于设置元素的外边距,0 表示上下外边距为 0,auto 表示左右外边距自动调整以实现水平居中。
(三)定义li的样式

   li {
		  list-style-type:none;
		  width:110px;
	  }

  其中list-style-type:none;表示将li元素的列表标记样式设置为无,即去除各个列表前的项目符号;width:110px;是因为总长为1100px,我们有10个菜单,得以平分。(如果导航栏宽度设置为100%,则这里设置成10%。)
(四)让导航栏水平排列

.menu >li{
		  float:left;
	  }

  选择所有直接子元素为li的ul元素,也就是一级菜单为左浮动排列,可以让菜单都在网页的一整行,即水平排列,避免竖直排列。
(五)定义菜单栏的a的样式

.menu li a{
   	  display:block;
   	  height:50px;
   	  text-align:center;
   	  line-height:50px;
   	  text-decoration:none;
   	  font-weight:bold;
   	  color:#FFF;
     }

  定义menu类元素下的 li 元素的a元素,display:block;将a转化为块级元素。text-align:center;控制文字水平居中。line-height:50px;控制文字垂直居中。text-decoration:none;去除文字下划线;font-weight:bold;字体加粗
(六)定义下拉菜单的样式并先隐藏

.menu li ul li{
		  visibility:hidden;
		  background-color: #00F;
		  height:40px;
	  }

  这里选择所有直接子元素为li的ul元素的子元素,也就是二级菜单,visibility:hidden;作用是将二级菜单给隐藏起来。
其他隐藏方法有三种:
  display:none;display:block;
  opacity:0; opacity:1;
  visibility:hidden; visibility:visible;
小结如下:opacity=0,该元素隐藏起来了,但不会改变页面布局,并且,如果该元素已经绑定一些事件,如click事件,那么点击该区域,也能触发点击事件的
  visibility=hidden,该元素隐藏起来了,但不会改变页面布局,但是不会触发该元素已经绑定的事件
  display=none,把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删除掉一样
(七)定义下拉菜单中嵌套的a的样式

.menu ul li a{
		  font-size:14px;
		  font-weight:normal;
	  }

  设置字体重量为普通,字体大小为14px;
(八)鼠标经过导航栏,其嵌套的a改变属性

.menu>li:hover>a{
		  background-color:#000066;
		  color:red;
	  }

  当鼠标放到导航栏中,字体红色,背景颜色为十六进制:000066的颜色;
(九)鼠标经过导航栏,显示包含的下拉菜单

.menu>li:hover ul li{
		  visibility:visible;
	  }

  这样可以显示下拉菜单;.menu>li代表menu类元素的直接子元素li。
(十)鼠标经过下拉菜单中的超链接,改变样式。

.menu li ul li a:hover{
		  background-color:#2A40BD;
		  color:#9D4076;
	  }

  当鼠标移动到下拉菜单的选项时,对应的背景和字体颜色改变。

到此为止,效果已经实现。望大家多多支持,一起学习进步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML设计一个水平导航栏,完成水平导航栏下拉列表交互效果的实现。 的相关文章

  • JS - 不可破坏空间的转换   [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在从 HTML 元素中读出文本并
  • 为什么 webkit 径向渐变在 Safari 中不起作用?

    这在 Chrome 中有效 但在 Safari 中无效 background webkit radial gradient center ellipse cover fdfdfd d3d3d3 我该如何修复 Safari 的问题 它甚至在
  • 如何使 Flexbox 项目大小相同

    我想使用具有一些宽度相同的项目的 Flexbox 我注意到 Flexbox 均匀地分配空间 而不是空间本身 例如 header display flex item flex grow 1 text align center border 1
  • 表单输入不会采用百分比填充

    如果使用像素填充 我的表单输入会正确显示 但使用左侧和右侧的百分比填充会破坏它 我不明白为什么 它可以在 Safari 中运行 但在 Firefox 3 5 3 OSX 中损坏 问题是 当我使用百分比填充时 填充全部中断 因此输入值没有很好
  • 如何限制 Chrome 中的最大文本区域宽度和高度或如何禁用文本区域调整大小

    Chrome 允许通过在右下角添加文本区域来调整文本区域的大小 但有时这种移动可能会破坏页面的设计 所以我想知道如何限制该操作的最大和最小宽度 即如何完全禁用该功能和thml javascript css在页面上 您可以使用 resize
  • 从三行菜单到十字菜单的动画变换

    我有一个三行动画菜单 当您单击它时 它会切换为十字 首先 您会看到三条线变成一条线 然后切换到十字线 但我想跳过从三行到一行的步骤 我怎样才能做到这一点 这是小提琴http jsfiddle net adyocsm9 http jsfidd
  • SVG 图标像素对齐?

    在此图像中 左侧 黑色 垃圾桶是图标字体 它的字体大小是 16px 这使得图标在 100 的时间里看起来都很清晰 两个蓝色垃圾桶是 SVG 它们具有完全相同的标记 其中之一happened一个是像素对齐的 另一个不是 我怎样才能强制我的 S
  • 在设置后用 Javascript 替换 'var' css 属性

    我有一个元素 其上设置了 var 属性 如下所示 div class divwithbackground div CSS divwithbackground after background image var page header se
  • HTML 表单未运行 (withSuccessHandler) 函数

    我在 Google App Script Sheets 中有一个 HTML 表单 它要求用户提供日期值 然后提交该值 HTML 表单运行 唯一的问题是 obj 不记录 我不明白这是为什么 HTML
  • CONDITION CSS 区分 IE6 到 IE7

    我想声明一个不同于 ie6 和 ie7 的风格 但我的CSS条件被IE7识别为IE6 我用的是XP和explorer 7 这是我使用的代码
  • 为什么只读输入字段无效

    考虑以下 html
  • 如何使用 Spring MVC 和 Thymeleaf 添加静态文件

    我的问题是如何添加 CSS 和图像文件等静态文件 以便我可以使用它们 我正在使用 Spring MVC 和 Thymeleaf 我查看了有关此主题的各种帖子 但它们对我没有帮助 所以我才来问 根据这些帖子 我将 CSS 和图像文件放在res
  • 如何使用css网格制作一个垄断板?

    I want to create a monopoly board like There are following features in the board 角是方形的 比其他盒子大 每行的文本都面向特定的角度 我的基本 html 结构
  • 为什么 WebView 中的 dataWithPDFInsideRect 不能在 Mavericks 上创建高质量的 PDF?

    Run 示例项目 https github com tvarghese TestWebView并观察桌面上生成的输出 PDF 名为保存网页 pdf 粘贴感兴趣的代码片段 NSURL url NSBundle mainBundle URLFo
  • JavaScript 中的安全数据

    我必须为 Web 测试创建生成器 使用 HTML 和 JavaScript 测试必须离线和在线进行 正确答案和分数评估必须是生成的测试的一部分 最终用户的分数仅发送到服务器 无法在服务器上进行评估 并且服务器对问题一无所知 它只保存最终分数
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • Django - 渲染到字符串无法加载 CSS

    我正在尝试使用 Django 1 8 render to string 通过管理命令将 html 转换为 pdf 而不是使用 View request 以下代码可以将模板转换为 pdf 但它无法将 CSS 加载到模板中 def html t
  • 如何加载Jquery Tiny滚动条

    所以我想自定义一个滚动条 我发现了一个很小的滚动条 这是一个jquery插件 http baijs nl tinyscrollbar http baijs nl tinyscrollbar 问题是 无论如何我都无法让它工作 我将 Jquer
  • Google 地图 v3 - 阻止 API 加载 Roboto 字体

    Google 将样式添加到地图容器中以覆盖我的样式 我知道如何解决这个问题 但API v3 8 9 exp 还加载了我并不真正需要 想要的网络字体 Roboto 有什么设置 选项 方法可以解决这个问题吗 我可以阻止 API 添加额外的 CS

随机推荐

  • 模块电路选型(7)----人机交互模块

    系列文章目录 1 电源模块 2 主控模块 3 传感器模块 4 通信模块 5 电机驱动模块 6 存储模块 7 人机交互模块 文章目录 前言 一 按键 1 触摸按键 前言 送给大学毕业后找不到奋斗方向的你 每周不定时更新 牛客网 构建从学习到职
  • 【line-height】 line-height详解

    1 line height是什么 w3school定义使用line height属性定义行与行之间的距离 也就是一个行的行高 它不允许使用负值 使用在文本行的时候line height 与 font size 的计算值之差 在 CSS 中成
  • PCE投稿要求

    进入PCE的投稿网址 http mc manuscriptcentral com pce 查了一下 大家都建议创建ORCID号 于是按照指示创建了 蓝色笔圈起来的是一些投稿指导 于是打开Instructions Forms Instruct
  • Flink checkPoint和SavePoint

    savepoint和checkpoint都是flink为容错提供的强大功能特性 能够自动或手动保存job的运行状态 两者区别 checkpoint 应用定时触发 用户保存状态 会过期 内部应用失败重启的时候启用 但是手动cancel时 会删
  • nginx配置转发日志

    http include mime types default type application octet stream log format main remote user time local http x Forwarded fo
  • Vue3 icons 图标无效

    问题描述 需要在账号 密码处加上icon图标 但是引用完element plus icons之后 还是不行 不显示icon图标 后面发现 当前版本的emement plus的icon图标不能直接使用了 前置条件 npm install el
  • Go 服务自动收集线上问题现场

    前言 对于 pprof 相信熟悉 Go 语言的程序员基本都不陌生 一般线上的问题都是靠它可以快速定位 但是实际项目中 很多时候我们为了性能都不会开启它 但是出了问题又要靠它来分析 好在 go zero 已经帮我们很好的集成进来了 我们只需要
  • 深度模型压缩论文(03)- Be Your Own Teacher: Improve the Performance of Convolutional Neural Networks via Self

    文章目录 1 摘要和背景 1 1 摘要 1 2 背景 2 方法和贡献 2 1 方法 2 1 1 训练过程 2 1 2 loss介绍 2 2 贡献 3 实验和结果 3 1 实验 3 2 结果 4 总结和展望 4 1 总结 4 2 展望 主要贡
  • 【git】git push 本地项目报错 ssh_dispatch_run_fatal

    1 概述 我的一个项目原本是使用如下命令git下来的 git clone git xxx git 昨天还好还好的 今天发现突然无法push项目了 开始自己发现网络比较慢 后面稍微恢复了一下还是不可以 然后git push的时候报错 ssh
  • mybatis-plus整合alibaba.druid实现多数据源配置

    须知 依托于springboot项目实现 一 添加maven依赖
  • javascript学习笔记-面向对象

    javascript学习笔记 面向对象 JavaScript中 现阶段我们可以采用三种方式创建对象 利用字面量创建对象 利用New Object创建对象 利用构造函数创建对象 一 利用字面量创建对象 var obj uname 张三 age
  • 云安全技术——kvm虚拟化技术

    目录 10 1 kvm简介 10 2 在CentOS 7 图形化界面下安装KVM 使用IDEA开发读写MySQL数据库程序 实验目的 了解 CentOS7图形化界面的部署方法 了解 KVM的组成和作用 了解 KVM的技术架构 了解KVM的安
  • python—scrapy框架爬虫—链家二手房数据

    本文讲解的是scrapy框架爬虫的实例 文章目录 前言 scrapy简介 1 scrapy框架的流程 2 流程简介 操作 1 创建scrapy项目 2 运行 3 代码部分 前言 本文爬取的是链家重庆主城九区的二手房数据 同时将爬取的数据存入
  • linux查看进程绑定cpu核是否成功

    运行top命令 可以看到进程以及进程cpu占有率 然后查看是否有P属性 这个属性用来查看进程绑定的cpu核 这里没有看到cpu占用核心的P属性 运行top后 按 f 键进入top配置界面 然后按上下键选择P选项 此时可以看到P选项前面没有
  • 简单Hexo更换主题教程

    Hexo自带的默认主题不是很好看 我们可以按自己需求更换对应的主题 主题由很多 大家可以使用搜索引擎查找 这里我们演示butterfly主题的安装 前提 需要安装git 需要安装nodejs 步骤 在博客的项目文件夹下打开git bash执
  • LeetCode——1302. 层数最深叶子节点的和

    题目描述 给你一棵二叉树的根节点 root 请你返回层数最深的叶子节点的和 示例 1 输入 root 1 2 3 4 5 null 6 7 null null null null 8 输出 15 示例 2 输入 root 6 7 8 2 7
  • 以太坊公链节点连接节点超时问题排查

    2020年4月1日晚上8点 zabbix报警 以太坊公链三分钟内没有检测到区块数据同步 立即登录到服务器 查看以太坊公链节点数据同步情况 docker logs f public eth tail 10 INFO 04 01 20 17 3
  • 用IDEA创建JavaWeb项目

    文章目录 一 创建web项目 1 打开idea软件 点击界面上的Create New Project 2 进入如下界面 选中 java Enterprise 配置jdk tomcat 勾选Web Application案例 注意勾选生成we
  • 华为交换机的基本配置,看完秒懂

    一 交换机的基本配置 交换机连接方式 本地 计算机COM口 USB口 gt Console线 gt 交换机Console口 远程 Putty SecureCRT Xshell远程管理工具 华为VRP网络操作系统 1 华为的视图模式
  • HTML设计一个水平导航栏,完成水平导航栏下拉列表交互效果的实现。

    HTML设计一个水平导航栏 简单的完成水平导航栏下拉列表交互效果的实现 一 水平导航栏 设计要求 CSS样式分析 hello 大家好 学习之路一小步 如果有不严谨的问题请指出 我会积极学习的 一 水平导航栏 设计要求 1 使用无序列表ul及