【前端】菜单栏设计(html、css)

2023-11-19

先展示一下效果图:
在这里插入图片描述


一、代码

1.1 html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <!--    针对于ie的设置。-->
    <!--[if lt IE 9]>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
    <![endif]-->

    <!--保证css在各个浏览器上都有相同的效果,可以写网络上的资源路径,也可以写本地的路径-->
    <link rel="stylesheet" href="../css/normalize.css">
    <link rel="stylesheet" href="../css/menu3.css">

    <title>Title</title>
</head>
<body>
<nav id="menu">
    <header></header>
    <ul class="level-1">
        <li>
            <a href="page1.html">无人机控制</a>
            <ul class="level-2">
                <li><a href="javascript:void(0);">1</a></li>
                <li><a href="javascript:void(0);">2</a></li>
                <li><a href="javascript:void(0);">3</a></li>
            </ul>
        </li>
        <li>
            <a href="page2.html">航点规划</a>
            <ul class="level-2">
                <li><a href="javascript:void(0);">1</a></li>
                <li><a href="javascript:void(0);">2</a></li>
                <li><a href="javascript:void(0);">3</a></li>
            </ul>
        </li>
        <li>
            <a href="page3.html">深度学习</a>
            <ul class="level-2">
                <li><a href="javascript:void(0);">1</a></li>
                <li><a href="javascript:void(0);">2</a></li>
                <li><a href="javascript:void(0);">3</a></li>
            </ul>
        </li>
        <li>
            <a href="page4.html">无人机调参</a>
            <ul class="level-2">
                <li><a href="javascript:void(0);">1</a></li>
                <li><a href="javascript:void(0);">2</a></li>
                <li><a href="javascript:void(0);">3</a></li>
            </ul>
        </li>
    </ul>
</nav>
</body>
</html>

1.2 css

#menu{
    background-color: rgba(255,228,196,0.5);
    position: fixed;  /* 位置固定 */
    z-index: 10;  /* 图层的第十层 */
    top: 0;  /* 紧贴上方 */
    width: 100%;
    margin: 0;
    padding: 0;
}
/* id menu 下的所有ul */
#menu ul{
    background-color: #ffe4c4;
    padding-left: 0px;
    list-style: none;  /* 去掉前面的点*/
    margin: 0;   /* 确保与上面紧贴 */
}

#menu ul li a{
    color: grey;
    width: 120px;
    text-align: center;
}

#menu ul.level-1 > li{
    display: inline-block;
}

#menu ul.level-1 > li a{
    display: block;
    margin-top: 5px;
    margin-bottom: 5px;
}

#menu ul.level-2{
    display: none;
    position: absolute;
}

#menu ul.level-1 > li:hover ul.level-2{
    display: block;
}

#menu ul li a:hover{
    background-color: red;
    color: white;
}

二、代码分析

2.1 浏览器配置

2.1.1 normalize.css

由于浏览器的不同,可能对css的解析有些偏差,导致相同的代码在不同的浏览器上显示的效果不同,所以需要一个文件使得css文件在不同的浏览器上均有相同的效果。

该文件的绝对路径为:https://github.com/necolas/normalize.css/blob/master/normalize.css

可以在html的head中直接引入该文件。如:

<link rel="stylesheet" href="https://github.com/necolas/normalize.css/blob/master/normalize.css">

也可以将其下载至本地硬盘,通过相对路径引入该文件,如:

<link rel="stylesheet" href="../css/normalize.css">

通过引用该文件,css的修饰将在不同浏览器上产生完全相同的效果

2.1.2 html5shiv

IE浏览器完全不支持HTML5标签,为了解决该问题,需要在head内写入html判别式,判别是否是IE9以后的版本,若是就载入html5shiv.js文件。

由于该js文件不一定常用 ,可以使用别人提供的cdn主机资源。

一个提供html5shiv.js的cdn资源网站:https://cdnjs.com/libraries/html5shiv

在这里插入图片描述
其中min版本实压缩版本,就是省略空格、注释的版本,因为其体积小,所以加载快,选择该版本。

在html的head部分引入:

   <!--[if lt IE 9]>
   <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
   <![endif]-->

通过if语句,如ie版本大于9,则调用这个js文件。

2.2 html分析

<nav id="menu">
	...
</nav>

<nav> 标签定义导航链接的部分。

<nav> 元素只是作为标注一个导航链接的区域。

在不同设备上(手机或者PC)可以制定导航链接是否显示,以适应不同屏幕的需求。

<ul class="level-1">
    <li>
        <a href="page1.html">无人机控制</a>
        <ul class="level-2">
            <li><a href="javascript:void(0);">1</a></li>
            <li><a href="javascript:void(0);">2</a></li>
            <li><a href="javascript:void(0);">3</a></li>
        </ul>
    </li>
    
	...
	
</ul>

在html中,菜单栏一般均以列表的形式表现出来。

2. css解析

#menu{
    background-color: rgba(255,228,196,0.5);
    position: fixed;  /* 位置固定 */
    z-index: 10;  /* 图层的第十层 */
    top: 0;  /* 紧贴上方 */
    width: 100%;
    margin: 0;
    padding: 0;
}

将菜单栏紧贴页面最上方固定,并且设置图层在第10层,保证其不会被其他图层覆盖。


#menu ul{
    background-color: #ffe4c4;
    padding-left: 0px;
    list-style: none;  /* 去掉前面的点*/
    margin: 0;   /* 确保与上面紧贴 */
}

设置在id:menu下的所有ul类的背景颜色,左padding,margin等,设置list-style为none使得列表选项前没有圆圈。


#menu ul li a{
    color: grey;
    width: 120px;
    text-align: center;
}

设置在id:menu下的ul类下的li类下的a的颜色、宽度、字体排版方式。


#menu ul.level-1 > li{
    display: inline-block;
}

设置在id:menu下类名为level-1的ul,其下一层li(该处的li值得是名为level-1的ul下的li,而不是level-2下的li。),为inline-block排列,就是将原来的纵向排列改为横向排列。


#menu ul.level-1 > li a{
    display: block;
    margin-top: 5px;
    margin-bottom: 5px;
}

设置在id:menu下类名为level-1的ul,其下一层li下的的a以块的形式显示,并且设置上下距离,只有将其设置为块block,才能设置其上下间距。


#menu ul.level-2{
    display: none;
    position: absolute;
}

设置在id:menu下类名为level-2的ul,其默认状态为不显示,并且位置是绝对的。

因为在鼠标没有滑动到该区域时,该子菜单不显示。显示的时候该子菜单在菜单栏的下方,位置是绝对的。


#menu ul.level-1 > li:hover ul.level-2{
    display: block;
}

当id:menu下类名为level-1的ul下的li被鼠标滑到(hover),则名为level-2的ul的显示状态为block,相当于从不可见到可见。


#menu ul.level-1 li a:hover{
    background-color: red;
    color: white;
}

当id:menu下的ul下的li下的a被鼠标滑到后,其背景颜色变为红色,字体颜色变为白色。

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

【前端】菜单栏设计(html、css) 的相关文章

  • 如何将文本环绕在非矩形图像周围?

    是否可以将文本环绕在非矩形图像周围 我希望不同国家的地图周围的文本环绕该国家 地区的形状 即使边界本身不是直的 文本也始终与该国家 地区的边界保持相同的距离 这可能吗 您可以使用这个方法 http torylawson com index
  • HTML 电子邮件 - Outlook 2013 中图像之间的间隙

    I m composing an HTML email which looks fine in every major email client except Outlook 2013 which is adding vertical ga
  • 如何在移动设备上使用纯 JavaScript 放大点击的图像

    我正在尝试创建单击时会放大的缩略图 目标是将选定的缩略图自身放大到设备的最大宽度 如果单击另一个缩略图 其图像将替换当前所选缩略图的图像 同一时间只能放大一张缩略图 图像应跨越设备的最大宽度 另外 我尝试使用纯 JavaScript 无 j
  • 多彩文本框的想法?

    在我的网站中 我想实现一个文本框 人们可以在其中输入一组由分隔符分隔的字符串 例如本页底部的标签文本框 由空格 分隔符 分隔的标签 字符串 为了让用户更清楚 为每个字符串提供不同的背景颜色或其他视觉提示是很有意义的 我认为使用常规输入 文本
  • 加载 HTML 格式的大型视频文件

    这是我的问题 我想播放存储在 S3 存储桶中的大型视频文件 3 6Gb 但该文件似乎太大 并且加载 30 秒后页面崩溃 这是我播放视频的代码 var video document getElementById video const med
  • 如何使用固定宽度的卡片制作卡片组?

    我想做一个响应式的卡牌 https getbootstrap com docs 4 0 components card card decks使用引导4固定宽度卡片 https getbootstrap com docs 4 0 compon
  • CSS条件注释适用于除IE之外的其他浏览器吗?

    据我所知 条件注释仅支持不同版本的IE 同样 我们也可以为其他浏览器提供条件注释吗 如果是 如何 如果不是 最好的选择是什么 CSS 条件注释仅适用于 IE http msdn microsoft com en us library ms5
  • 该脚本在 IE 中不起作用。我该如何修复它?

    有一个脚本可以根据用户的显示器屏幕分辨率更改页面模板 但是 它在 IE 中不起作用 请告知如何修复它 table align center tr td head td tr tr td nbsp td td nbsp td td nbsp
  • 裁剪响应式全宽图像

    我必须剪辑跨越整个宽度的图像 以下事情对我不起作用 剪辑 这需要绝对位置 因此块元素不会堆叠在下面 背景位置 缩放时无法正确剪辑 放大时剪辑的部分会增加 反之亦然 包装器 包装器高度取决于浏览器宽度 因此其值应该是动态的 我使用了 seti
  • 动画和过渡的组合无法正常工作

    我一直在尝试添加一些基本的 CSS3 动画 目标是在按钮的单击事件上切换类 并根据添加的类对 div 进行动画处理 该代码对于 Firefox 中切换的第一次迭代完美运行 但对于 Chrome 等其他浏览器以及 Firefox 中的下一次迭
  • 设置绝对仓位和保证金

    我想设置一个元素的position to absolute并有一个margin bottom 但似乎margin bottom没有效果 HTML div div CSS container border 1px solid red posi
  • Chrome 和 Safari 错误::不允许加载本地资源: file:///D:/CSS/Style.css

    当我在 chrome 或 safari 中访问我的 aspx 页面时 它在控制台中显示此错误 不允许加载本地资源 file D CSS Style css 在 IE 和 FF 中一切正常 我使用外部 CSS 通过 aspx 页面链接 我已经
  • HTML CSS 循环协助

    希望你能帮忙 我想知道您是否可以在循环中创建以下类型 你知道这是否可能吗 body background 000 DEMO SPECIFIC STYLES typewriter h1 color fff font family Bebas
  • 如何让 ExtJS ComboBox 与文本一起显示?

    我想让以下内容显示在一行中 我尝试过使用样式浮动和显示 Show this input
  • 使用添加“title”属性换行符 到 JSX 元素

    我知道我可以在 HTML 中添加换行符title属性使用 10 但 React 避免了这一点 例如 这是一个 React 组件 其中包含一个标准的 未由 React 处理的组件title包含换行符的属性 并且可以在浏览器中看到效果 但是如果
  • Ace Editor 自动完成和多种语言

    如何为 Ace 编辑器创建自动完成功能以及如何突出显示 php 中的 html javascript 和 csshttp ace ajax org http ace ajax org
  • 将 h2 标签嵌套在另一个带有 h1 标签的标头中在语义上是否错误?

    将 h2 标签嵌套在另一个标头 h1 标签内在语义上是否错误 h1 class fixed h2 class absolute Absolute Div h2 h1 语义错误 很大程度上是一个观点问题 语义 意味着 与意义相关 但这里的含义
  • Firefox -moz-border-radius 不会裁剪图像?

    如果设置了图像的边框半径 有谁知道如何让 Firefox 裁剪角 它包含的元素可以正常工作 但我会发现丑陋的角落伸出来 有什么方法可以解决此问题 而无需将图像设置为背景图像或在将其放在网站上之前对其进行处理吗 解决方法 将图像设置为容器元素
  • IE8 - 隐藏 div 内的表单,返回键不再起作用

    我有一个登录表单 位于带有 display none 的 div 中 然后我使用 jquery 淡入表单 但 Enter Return 键不再提交表单 如果我将显示更改为阻止 则效果很好 此问题仅存在于 IE 中 有任何想法吗 这是一个不起
  • html 表:thead 与 th

    它看起来像 根据示例这一页 http www w3 org TR html4 struct tables html无论如何 如果您使用THEAD 则不需要使用TH 真的吗 如果是这样 THEAD 与 TH 相比有何优点 缺点 The the

随机推荐

  • numpy基本教程

    此处所指的数组就是numpy的ndarray 1 numpy加载npz文件 变量filename存放npz文件的地址 加载文件 data seq np load graph signal matrix filename data np lo
  • CSS选择器汇总

    CSS选择器汇总 选择器选择所有元素 选择器也可以选择另一个元素内的所有元素
  • solidworks启动慢的原因在这里

    你打开SOLIDWOKRS需要多长时间 有的人可能是十秒左右SOLIDWOKRS 有的人可能要等上一两分钟才能看到SOLIDWORKS的界面 那么我们今天抛开硬件的差异 主要针对软件和系统环境的设置帮助大家加快打开SOLIDWORKS的速度
  • HBase的Compact和Split源码分析与应用--基于0.94.5

    HBase的Compact和Split源码分析与应用 基于0 94 5 经过对比 0 94 5以后版本主要过程基本类似 有些新功能和细节增加 一 Compact 2 1 Compact主要来源 来自四个方面 1 Memstoreflush时
  • 数组、字符串、Math常用的API

    数组的API 方法 用法 concat 连接两个或多个数组 并返回已连接数组的副本 原数组不变 join 将数组的所有元素连接成一个字符串 返回字符串 原数组不变 toString 将数组转换为字符串 并返回结果 from 从对象创建数组
  • PID控制算法01

    PID控制算法 PID控制算法公式 原理 参数作用 PID算法及改进 两个基本类型 位置型PID控制 增量型PID控制 积分环节改进的PID控制 积分分离的PID控制 变速积分的PID控制 抗积分饱和的PID控制 微分环节改进的PID控制
  • 数据结构 --- 数组

    1 求数组中第二大的数 1 定义两个变量 2 const int MINNUMBER 32767 3 int find sec max int data int count 4 5 int maxnumber data 0 6 int se
  • 软件测试中动态测试与静态测试的区别

    这里讲一下软件测试中动态测试与静态测试的区别 静态测试主要包括 1 代码检查 代码会审 代码走查 桌面检查 2 静态结构分析 3 代码质量度量 动态测试主要包括 1 黑盒测试 又称功能测试 这种方法把被测软件看成黑盒 在不考虑软件内部结构和
  • 2023年深圳杯数学建模A题影响城市居民身体健康的因素分析

    2023年深圳杯数学建模 A题 影响城市居民身体健康的因素分析 原题再现 以心脑血管疾病 糖尿病 恶性肿瘤以及慢性阻塞性肺病为代表的慢性非传染性疾病 以下简称慢性病 已经成为影响我国居民身体健康的重要问题 随着人们生活方式的改变 慢性病的患
  • Python中的常见问题与解决方案

    机器学习作为当今最热门的领域之一 为数据科学和人工智能带来了巨大的突破和进步 然而 在Python中进行机器学习和深度学习开发时 我们可能会遇到一些常见的问题 本文将分享一些这些常见问题 并给出解决方案 帮助您更好地进行机器学习和深度学习的
  • js 正则exec()函数在循环中使用

    在每次循环中 需要把正则表达式的lastIndex重置为0 如 reg lastIndex 0
  • Swift Codable 自定义默认值解码

    前言 最近我们公司服务端修改了某个接口返回数据结构 减少了一些字段 导致iOS这边codeable解码失败 获取不到正确的数据信息 相关业务无法完成 不想使用可选值类型 可以使用属性包装器实现对基础类型的包装 decode解析时给定默认值
  • 编写高质量代码:改善Java程序的151个建议(第7章:泛型和反射___建议101~109)

    我命由我不由天 哪吒 建议101 注意Class类的特殊性 建议102 适时选择getDeclaredXXX和getXXX 建议103 反射访问属性或方法时Accessible设置为true 建议104 使用forName动态加载类文件 建
  • CSS中设置表格TD宽度的问题

    CSS布局 表格宽度不听使唤的实例 想把表格第一例宽度设为20 其他自适应 但CSS中宽度是等宽的 只设这一行也不起作用 但是在实际应用中总是等宽处理 并不按照样式来走 XML HTML代码
  • Linux 添加ssh公钥 实现免密认证

    ssh 无密码登录要使用公钥与私钥 linux下可以用用ssh keygen生成公钥 私钥对 1 添加A服务器公钥到B服务器 2 到A服务器输入命令ssh keygen 一路回车 3 找到A服务器的 root ssh id rsa pub
  • Windows环境下3分钟就能安装一个Ubuntu

    作为一名IT人士 如果你手上没有一个私人的Linux环境是说不过去的 单独购买云服务器来搭建代价太高 用磁盘分区装双系统步骤也繁琐 那怎样在3分钟内快速搭建出一个私人的Linux环境呢 一 在Windows系统下 装Linux的常用方法是
  • Redis之hash类型

    文章目录 Redis之hash类型 1 设置一个字段 获取一个字段 2 获取所有字段值 3 判断字段是否存在 4 设置多个字段 获取多个字段 5 只获取字段名 字段值 6 获取某个key内全部数量 7 增加数字 8 删除key内字段 9 字
  • form表单传递对象数组

    ajax传递数组 form表单提交对象数组 在JSP页面开发中 我们常常会用到form表单做数据提交 由于以前一直只是使用 form表单提交单个对象 只要表单文本域的name值和接收的对象的属性名一致 那么传值就没有什么问题 不过 在前几天
  • 【狂神说Java】CSS快速入门

    目录 1 什么是CSS 11 什么是CSS 1 2 发展史 1 3 快速入门 1 4 CSS的三种导入方式 2 选择器 2 1 基本选择器 2 2 层次选择器 2 3 结构伪类选择器 2 4 属性选择器 常用 3 美化网页元素 3 1 为什
  • 【前端】菜单栏设计(html、css)

    先展示一下效果图 目录 一 代码 1 1 html 1 2 css 二 代码分析 2 1 浏览器配置 2 1 1 normalize css 2 1 2 html5shiv 2 2 html分析 2 css解析 一 代码 1 1 html