响应式布局2:手写响应式导航栏(BootStrap实现以及原生实现)

1.响应式导航栏介绍

响应式导航栏是一种在不同设备和屏幕尺寸下自适应布局和显示的导航栏。它可以根据用户所使用的设备(如桌面电脑、平板电脑或手机)自动调整其外观和交互方式,以提供更好的用户体验。

pc端:

手机端: 

2.BootStrap实现

最简单的方式是使用Bootstrap 框架,它提供了响应式的导航栏组件(Navbar),在电脑端显示为完整的导航栏,而在移动端则会以可展开的按钮形式呈现。

在 Bootstrap 中创建一个响应式导航栏,需要使用以下组件和类:

  1. <nav> 元素:用于定义导航栏的容器。
  2. .navbar 类:应用于 <nav> 元素,表示它是一个导航栏组件。
  3. .navbar-expand-* 类:用于控制导航栏在不同屏幕大小下的展开方式。* 可以是 sm(小屏幕)、md(中屏幕)、lg(大屏幕)或 xl(超大屏幕)。
  4. .navbar-toggler 类:用于创建导航栏的可展开按钮。
  5. .collapse 类:用于定义可折叠的导航栏内容。
  6. .navbar-collapse 类:应用于包含导航栏内容的容器,与 .collapse 类一起使用。

以下是一个示例代码,展示了如何使用 Bootstrap 创建一个响应式导航

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"><title>Responsive Navbar</title>
</head>
<body>
<nav class="navbar navbar-expand-sm navbar-dark bg-dark"><a class="navbar-brand" href="#">Logo</a><button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarContent"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarContent"><ul class="navbar-nav"><li class="nav-item active"><a class="nav-link" href="#">Home</a></li><li class="nav-item"><a class="nav-link" href="#">About</a></li><li class="nav-item"><a class="nav-link" href="#">Services</a></li><li class="nav-item"><a class="nav-link" href="#">Contact</a></li></ul></div>
</nav><script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>

效果:

3. 原生基于Flex布局实现

这里使用了@media来查询媒体的最大宽度,并以此改变样式,再使用flex弹性布局实现响应式导航栏:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><style>/* 全局样式 */body {margin: 0;padding: 0;font-family: Arial, sans-serif;}/* 导航栏样式 */.navbar {display: flex;justify-content: space-between;align-items: center;background-color: #333;color: #fff;padding: 10px;}.navbar-brand {font-size: 1.5rem;color: #fff;text-decoration: none;}.nav-button {display: none;float: right;}.navbar-nav {display: flex;flex-flow: row wrap;list-style-type: none;margin: 0;padding: 0;}.nav-item {margin-left: 10px;}.nav-link {color: #fff;text-decoration: none;}/* 媒体查询 */@media (max-width: 768px) {.navbar {flex-flow: row wrap;justify-content: space-between;}.nav-button {width: 20%;display: block;}.navbar-brand {width: 80%;}.navbar-nav {display: flex;flex-direction: column;align-items: center;width: 100%;}.nav-item {margin: 10px 0 0 0;}}</style><title>Responsive Navbar</title>
</head>
<body>
<nav class="navbar"><a class="navbar-brand" href="#">Logo</a><button class="nav-button" onclick="show()">展开</button><ul class="navbar-nav" id="navs"><li class="nav-item"><a class="nav-link" href="#">Home</a></li><li class="nav-item"><a class="nav-link" href="#">About</a></li><li class="nav-item"><a class="nav-link" href="#">Services</a></li><li class="nav-item"><a class="nav-link" href="#">Contact</a></li></ul>
</nav>
</body>
<script>const show = () =>{let navs = document.getElementById("navs");if(navs.style.display === "none"){navs.style.display = "flex";}else{navs.style.display = "none";}}
</script>
</html>

效果和bootstrap效果一样,就是按钮我只用了文字,没有加上icon

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286506.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp笔记

/pages/component/swiper/swiper /pages/component/button/button navigator image 设置界面标题 页面跳转 设置TabBar 发起一个请求 网络请求

xcrun: error: invalid active developer path

macOS升级完成后出现 xcrun: error: invalid active developer path问题。 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun这是由于 Xcode command line tools 丢…

从零开始掌握MAYA 2022:打造视觉创意的艺术大师之路

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 Autodesk Maya是一款强大的三维计算机图形软件…

南大通用GBase 8c荣膺“2023年度技术卓越奖”

摘要 近日&#xff0c;国内专业数据库及架构技术社区ITPUB、IT垂直门户IT168联合主办的《2023技术卓越奖》评选结果正式揭晓&#xff0c;凭借安全可靠、稳定易用的技术优势&#xff0c;GBASE南大通用多模多态分布式数据库GBase 8c斩获数据库行业技术卓越奖。 作为引领技术创新…

RocketMQ系统性学习-RocketMQ原理分析之NameServer 路由注册机制、生产者的发送消息流程

文章目录 NameServer 路由注册机制生产者的发送消息流程 NameServer 路由注册机制 在 Broker 启动时&#xff0c;通过 BrokerController.this.registerBrokerAll(true, false, brokerConfig.isForceRegister()); 向 NameServer 中注册自己 那么 NameServer 中&#xff0c;注册…

功能点估算的常规流程

功能点估算流程在软件项目管理中起着重要的作用&#xff0c;它可以帮助项目团队更好地理解项目的需求和目标&#xff0c;从而提高项目的成功率和效率。如果功能点估算未按流程进行&#xff0c;可能会导致项目估算不准确&#xff0c;估算时间超出预期等问题。 因此功能点估算的常…

Authorized users only. All activities may be monitored and reported.

“Authorized users only. All activities may be monitored and reported.”是SSH隧道建立成功的提示&#xff0c;如图1所示。 图1 建立SSH隧道&#xff08;成功提示&#xff09; 如果SSH隧道建立失败&#xff0c;会在这个提示下显示“Permission denied”、“Connection clo…

微信私域管理工具如何帮助企业提升销售业绩?

现如今&#xff0c;微信已经从社交通讯软件&#xff0c;慢慢被默认为常规办公软件&#xff0c;工作沟通、业务洽谈、网络会议等都在微信上进行&#xff0c;完全变成职场首选的社交工具。 但受限于微信平台&#xff0c;许多公司在微信私域营销方面面临诸多挑战。 微信私域管理工…

【vSphere | PowerCLI】使用 PowerCLI 连接 vCenter 查看 VM 故障排错

这里写目录标题 1. 连接vCenter Server2. 客户机操作系统内提供网络配置信息3. 创建VM4. 迁移VM5.故障排错连接 VC 报错&#xff1a; Error: Invalid server certificate解决方法 参考资料 1. 连接vCenter Server PS C:\Users\Administrator> Connect-VIServer 192.168.1.1…

史上最细,老鸟软件测试-接口测试总结,看这篇就够了

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 后端接口都测试什…

工作纪实38-排查cpu彪高

昨天晚上上线了一个服务&#xff0c;第二天发现CPU持续飙高到70&#xff5e;90%&#xff0c;触发平台的自动扩容&#xff0c;后定位出问题后降低到3% 怀疑部分代码使用的线程在持续工作没有释放&#xff08;死循环&#xff09;进入机器&#xff0c;使用top -H 找出系统中使用C…

D36|背包问题

从图中我们可以看出背包问题主要涉及01背包、完全背包、多重背包和分组背包。 01背包问题 1.暴力解法是一个回溯问题 2.动态规划方法涉及二维dp数组和一维dp数组解法&#xff0c;二维dp数组是1维dp数组的基础 二维dp数组解法&#xff1a; 首先考虑动态规划五部曲 1&#…