Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用 HTML、CSS 和 JavaScript 创建下拉菜单

使用 HTML、CSS 和 JavaScript 创建下拉菜单

原创
作者头像
泽霖
发布于 2024-02-12 02:28:08
发布于 2024-02-12 02:28:08
1.4K01
代码可运行
举报
运行总次数:1
代码可运行

嗨,各位码农们!今天,我们将,使用HTML、CSS和JavaScript创建一个完全响应式的下拉菜单。我们的目标是展示一个时尚、多功能的下拉菜单,能够在不同的屏幕尺寸下无缝适配,提升用户体验,而无需繁琐的教程。

概述:

在这个项目展示中,我们将深入介绍如何创建一个不仅外观吸引人,而且在各种设备上都能正常工作的下拉菜单。通过利用HTML搭建结构,CSS进行样式设计,以及JavaScript实现交互功能,我们将打造一个动态菜单,体现现代网页设计原则。

主要亮点:

HTML结构:我们将使用HTML为我们的项目打下基础,构建导航栏和下拉菜单组件的结构。

CSS样式:通过CSS,我们将为下拉菜单添加样式,确保它在任何屏幕上都看起来精美、专业。

JavaScript功能:利用JavaScript,我们将为下拉菜单注入交互性,使用户能够轻松浏览我们的网站。

让我们开始吧:

从HTML的简单开端到CSS和JavaScript的魔法,让我们展示菜单的演变过程。

下拉菜单 HTML 代码:

代码语言:html
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>下拉菜单</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <nav class="navbar">
        <div class="logo">
            <img src="./navbar-icon.png" alt="">
        </div>
        <div class="toggle-btn">
            <div class="icon"></div>
        </div>
        <ul class="menu">
            <li><a href="#">首页</a></li>
            <li><a href="#">关于</a></li>
            <li class="submenu-wrapper">
                <a href="#">技能<span> > </span>
                </a>
                <ul class="submenu">
                    <li><a href="#">HTML</a></li>
                    <li><a href="#">CSS</a></li>
                    <li><a href="#">JavaScript</a></li>
                    <li><a href="#">React.js</a></li>
                    <li><a href="#">Node.js</a></li>
                </ul>
            </li>
            <li><a href="#">背景</a></li>
            <li><a href="#">博客</a></li>
            <li><a href="#">关于</a></li>
        </ul>
    </nav>
    <script src="./script.js"></script>
</body>
</html>

下拉菜单 CSS 代码:

代码语言:css
AI代码解释
复制
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');

*,
::before,
::after{
    padding: 0;
    margin: 0;
    box-sizing: border-box;
}

html{
    font-size:13px;
}

body{
    font-family: "Poppins", sans-serif;
    font-size:1rem;
    background: #222f37;
    color:#d6e0f9;
}

.navbar{
    width:100%;
    position:fixed;
    top:0;
    left:0;
    background: #101d23;
    padding:0 5%;
    display:flex;
    align-items: center;
    justify-content: space-between;
}

.logo{
    width:5rem
}

.logo img{
    width:100%;
}

.menu{
    list-style: none;
}

.menu li{
    position: relative;
    float:left;
}

.menu li a{
    font-family: "Poppins", sans-serif;
    font-size:1.2rem;
    color:#d6e0f9;
    display:block;
    text-decoration: none;
    padding:1rem 1.5rem;
}

.menu li a:hover{
    background: #495ca8;
}

.submenu{
    position: absolute;
    left:0;
    background: #101d23;
    display:none;
    transition: all .3s ease-in-out;
}

.submenu-wrapper:hover .submenu,
.submenu-wrapper:focus-within .submenu{
    display: initial;
}

.submenu li{
    width:100%;
    border-top:.1rem solid #222f37;
    list-style: none;
}

.toggle-btn {
    display: none; /* Initially hide the toggle button */
    z-index:1000;
}

.icon {
    position: relative;
    width: 1.5rem;
    height: .8rem;
    cursor: pointer;
    z-index:100;
}

.icon::before {
    top: 0;
    right:0;
    content: '';
    position: absolute;
    width: 2rem;
    height: .2rem;
    background-color: #d6e0f9;
    transition: all 0.3s ease-in-out;
}

.icon::after {
    bottom: 0;
    right:0;
    content: '';
    position: absolute;
    width: 1.5rem;
    height: .2rem;
    background-color: #d6e0f9;
    transition: transform 0.3s ease-in-out;
}

/* Rotate the before and after lines to create the close icon effect */
.icon.active::before {
    width:1.5rem;
    transform: rotate(-45deg) translate(-0.21rem, 0.21rem);
}

.icon.active::after {
    transform: rotate(45deg) translate(-0.21rem, -0.21rem);
}


@media (max-width: 991px){
    .toggle-btn{
        display: block;
    }

    .menu{
        width:100%;
        position:absolute;
        top:100%;
        left:0;
        background: #101d23;
        border-top: .1rem solid #222f37;
        display:none;
    }

    .menu.active{
        display:initial
    }

    .menu li{
        width:100%;
        border-top: .1rem solid #

222f37;
    }

    .submenu{
        position: relative;
        width:100%;
    }

    .submenu li{
        background: #222f37;
        border-top: .1rem solid #101d23;
    }

    .submenu li a{
        padding-left:2rem;
    }
}

下拉菜单 JavaScript 代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const icon = document.querySelector('.icon');
const menu = document.querySelector('.menu');

function toggleNavbar() {
    menu.classList.toggle('active');
    icon.classList.toggle('active');
}

document.querySelector('.toggle-btn').addEventListener('click', function () {
    toggleNavbar();
});

这样一来,我们就完成了一个漂亮而功能强大的响应式下拉菜单!希望你们喜欢这个项目,也能够从中学到一些有用的技术。

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【HTML | CSS | JAVASCRIPT】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要: 各位C站的小伙伴们,你想要获得一款精美的响应式登录页面吗!收藏我并且关注博主,让我们拿起电脑一起练,一路火光带闪电!无论是电脑,手机还是平板都可以完美适配哦! 🤟每日
THUNDER王
2023/02/23
5980
【HTML | CSS | JAVASCRIPT】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)
【CSS动效实战(纯CSS与JS动效)】03 精美手风琴侧边栏完整示例教程 示例1
一般来说,侧边栏的位置是在左侧,咱们为了更好的展现侧边栏的效果,并且在本节中不涉及过多的内容,我们只需要直接给一个 div 宽度为 15即可,接着再到这个 div 中编写对应的侧边栏。
1_bit
2022/09/28
3.2K0
【CSS动效实战(纯CSS与JS动效)】03 精美手风琴侧边栏完整示例教程 示例1
【HTML | CSS | JAVASCRIPT】一款可交互的响应式登陆注册表单,你确定不来看看嘛(附源码)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要: 各位C站的小伙伴们,上一次的文章《【HTML】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)》得到了大家的高度认可,于是便诞生了这篇文章——可交互的响应式登陆
THUNDER王
2023/02/23
8260
【HTML | CSS | JAVASCRIPT】一款可交互的响应式登陆注册表单,你确定不来看看嘛(附源码)
中国版Cursor问世!腾讯云CodeBuddy携Craft智能体重磅升级,引领AI编程新纪元
人工智能正以前所未有的深度和广度渗透到各行各业,软件开发领域更是首当其冲,经历着一场由AI驱动的深刻变革。开发者们,作为这场变革的核心力量,既面临着前所未有的机遇,也承受着日益增长的效率和创新压力。在这样的时代背景下,一款能够真正理解开发者需求、提升编程效率、激发创造潜能的智能工具,无疑是雪中送炭。今天,我们怀着激动的心情,向大家隆重介绍腾讯云倾力打造的全新智能编程伙伴——CodeBuddy!它不仅仅被誉为“中国版Cursor”,更以其划时代的全新软件开发智能体Craft和多项突破性功能升级,宣告着一个AI辅助编程新纪元的到来。
DevKevin
2025/05/30
3420
中国版Cursor问世!腾讯云CodeBuddy携Craft智能体重磅升级,引领AI编程新纪元
伸缩侧边栏
TomatoCool
2023/07/30
7680
伸缩侧边栏
基于html+css+javascript+jquery+bootstarp响应式网页设计——大理我的家乡旅游景点
家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成过渡效果、鼠标滑过效果等,使用表格、表单补充模块,为方便新手学习页面中没有使用js有需要的可以自行添加。 <font color='#b44846' size='4px'> ❤</font> 【作者主页——🔥获取更多优质
IT司马青衫
2022/08/16
1.2K0
基于html+css+javascript+jquery+bootstarp响应式网页设计——大理我的家乡旅游景点
【CSS——效果实现】自适应页面(蓝桥杯真题-5136)【合集】
请通过补全 css/style.css 中代码或操作 DOM 的方式,达到根据屏幕大小显示不同布局的效果。
Rossy Yan
2025/02/18
7040
【CSS——效果实现】自适应页面(蓝桥杯真题-5136)【合集】
地址发布单页源码(最好看得一版)-6ke论坛
[hidecontent type="reply" desc="隐藏内容:评论后查看"]
用户1287596
2024/10/03
2560
使用 HTML5 新标签 <details> 制作 Accordion 组件(赠送3个相关案例源码)
HTML5 引入了很多新的标签,其中就包括 <details> 和 <summary> 标签。使用这两个标签,我们可以很方便地实现内容的展开和折叠功能。下面我们来详细介绍一下它们的用法。
前端达人
2024/06/26
2780
使用 HTML5 新标签 <details> 制作 Accordion 组件(赠送3个相关案例源码)
CSS 下拉菜单_下拉菜单html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/01
8K0
计算机毕业设计HTML+CSS+JavaScript仿大型购物商城(1页)
常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求都能满足你的需求。原始HTML+CSS+JS页面设计, web大学生网页设计作业源码,画面精明,排版整洁,内容丰富,主题鲜明,非常适合初学者学习使用。 --- <font
IT司马青衫
2022/08/18
6770
计算机毕业设计HTML+CSS+JavaScript仿大型购物商城(1页)
【Html.js——页面布局】个人博客(蓝桥杯真题-1766)【合集】
通过以上步骤,HTML 和 CSS 代码协同工作,实现了一个具有导航栏、首页 banner、文章列表和右侧栏的个人博客页面布局。
Rossy Yan
2025/01/24
1660
【Html.js——页面布局】个人博客(蓝桥杯真题-1766)【合集】
每日分享html特效篇之一个菜单栏、一个渐变背景、一个加载特效、七个导航栏特效
1.前端工程师主要利用HMTL与CSS建构页面(其中html构建骨架,css构建样式),用JavaScript获取后端数据以及完善交互以及用户体验。 2.通俗来讲,前端在一个项目里,拿到UI设计师设计的设计稿,然后实现UI设计师设计稿,调用后端程序员给的数据接口以获取数据,然后测试,最后部署上线。 3.前端可以对设计图负责,大部分情况下,不需要特别的去理解业务逻辑,因为我们90后都是玩着十几年手机电脑长大的,十几年的经验足够我们在潜意识里想明白应该怎么做,怎么去一步步实现,会有什么意外情况。 4.我感觉前端发展有个很大的缺陷----晋升问题. 正如第三点所言,作为领导必须对项目有足够的了解,显然是要重点包括业务逻辑,这点上,后端开发者需要涉及数据库逻辑,是必须要跟业务逻辑打交道的(重中之重),因此,大部分的领导岗位都是后端开发者更有晋升的机会。当然,个别公司有专门的前端组长(这也不算什么),如果说前端开发者在自己工作范围之外还要腾出时间去研究业务逻辑,属实是觉得出力不讨好(因为这样的操作需要持续很久才能看出效果),而且再怎么研究业务逻辑也不会比每时每刻跟业务逻辑打交道的后端开发者了解更多。说实在的,大部分情况下,前端在配合后端进行开发.后端需要了解业务逻辑,要跟领导和客户商量细节,露脸机会很大,在老板面前刷脸次数众多。这些都是拉开前后端程序员晋升机会差距的因素。
淼学派对
2022/11/20
2.6K0
每日分享html特效篇之一个菜单栏、一个渐变背景、一个加载特效、七个导航栏特效
新鲜出炉的个人主页开源 最好看的
github:https://github.com/yigehaozi/renhuang-home
用户1287596
2024/10/07
1730
Bootstrap学习笔记上(带源码)
☑ 简单灵活可用于架构流行的用户界面和交互接口的html、css、javascript工具集。
牧云云
2022/03/11
4.1K0
Bootstrap学习笔记上(带源码)
SpringBoot入门建站全系列(八)集成模板引擎(thymeleaf)渲染页面
本文不讲前后端分离,先讲下模板引擎,Springboot支持很多模板引擎,thymeleaf算是比较好用的一种。
品茗IT
2019/08/09
2.1K0
纯HTML CSS制作导航栏 下拉菜单
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140190.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
7.2K0
【HTML | CSS | JAVASCRIPT】再见2022,一起来写一个响应式跨年倒计时吧(附源码)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。 💅文章概要: 各位C站的小伙伴们,马上就要迎来我们一年一度的元旦和春节啦,值此之际,让我们一起来写一个响应式跨年倒计时吧!无论是电脑,手机还是平板都可以完美适配哦! 🤟每日一言:
THUNDER王
2023/02/23
4500
【HTML | CSS | JAVASCRIPT】再见2022,一起来写一个响应式跨年倒计时吧(附源码)
html可伸缩侧边栏
写右侧侧边栏的时候,使用margin-right,会发先页面右侧溢出 这是只要再body里加入 overflow-x:hidden;即可
治电小白菜
2020/08/25
6.2K0
html可伸缩侧边栏
【HTML+CSS+JavaScript】Animated Navigation
HelloWorldZ
2024/03/20
1450
【HTML+CSS+JavaScript】Animated Navigation
推荐阅读
【HTML | CSS | JAVASCRIPT】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)
5980
【CSS动效实战(纯CSS与JS动效)】03 精美手风琴侧边栏完整示例教程 示例1
3.2K0
【HTML | CSS | JAVASCRIPT】一款可交互的响应式登陆注册表单,你确定不来看看嘛(附源码)
8260
中国版Cursor问世!腾讯云CodeBuddy携Craft智能体重磅升级,引领AI编程新纪元
3420
伸缩侧边栏
7680
基于html+css+javascript+jquery+bootstarp响应式网页设计——大理我的家乡旅游景点
1.2K0
【CSS——效果实现】自适应页面(蓝桥杯真题-5136)【合集】
7040
地址发布单页源码(最好看得一版)-6ke论坛
2560
使用 HTML5 新标签 <details> 制作 Accordion 组件(赠送3个相关案例源码)
2780
CSS 下拉菜单_下拉菜单html
8K0
计算机毕业设计HTML+CSS+JavaScript仿大型购物商城(1页)
6770
【Html.js——页面布局】个人博客(蓝桥杯真题-1766)【合集】
1660
每日分享html特效篇之一个菜单栏、一个渐变背景、一个加载特效、七个导航栏特效
2.6K0
新鲜出炉的个人主页开源 最好看的
1730
Bootstrap学习笔记上(带源码)
4.1K0
SpringBoot入门建站全系列(八)集成模板引擎(thymeleaf)渲染页面
2.1K0
纯HTML CSS制作导航栏 下拉菜单
7.2K0
【HTML | CSS | JAVASCRIPT】再见2022,一起来写一个响应式跨年倒计时吧(附源码)
4500
html可伸缩侧边栏
6.2K0
【HTML+CSS+JavaScript】Animated Navigation
1450
相关推荐
【HTML | CSS | JAVASCRIPT】耗时一下午,整理出了一个精美的响应式登陆注册表单(附源码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验