在今天的文章中,我们将一起来学习如何用 HTML 和 CSS 制作响应式导航栏效果。
这篇文章主要是面向初学者的,如果你是有经验的开发者,请直接跳过或者忽略。
在这篇文章中,我们将一起来实现一个响应式导航栏效果,实现后,你可以在你的任何项目中使用它。
现在,我们就开始吧。
HTML 是一门超文本标记语言。它的主要工作是给我们的项目创建友好的网页结构。我们将使用这种标记语言来完成我们的项目结构。
现在,让我们一起来看看我们项目的 HTML 代码结构,具体如下:
如何用 HTML和CSS 实现一个响应式导航栏效果 web前端开发 网站主页 关于我们 工作内容 开发项目 联系我们
现在,让我们看看页面的结构输出的效果:
body { padding: 0; margin: 0; } .container { position: relative; margin-top: 100px; } .container img { display: block; width: 100%; } nav { position: fixed; z-index: 10; left: 0; right: 0; top: 0; font-family: "Montserrat", "sans-serif"; height: 100px; background-color: #00a6bc; padding: 0 5%; } nav .logo { float: left; width: 40%; height: 100%; display: flex; align-items: center; font-size: 24px; color: #fff; } nav .links { float: right; padding: 0; margin: 0; width: 60%; height: 100%; display: flex; justify-content: space-around; align-items: center; } nav .links li { list-style: none; } nav .links a { display: block; padding: 1em; font-size: 16px; font-weight: bold; color: #fff; text-decoration: none; position: relative; } nav .links a:hover { color: white; } nav .links a::before { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; background-color: white; visibility: hidden; transform: scaleX(0); transition: all 0.3s ease-in-out 0s; } nav .links a:hover::before { visibility: visible; transform: scaleX(1); color: white; } #nav-toggle { position: absolute; top: -100px; } nav .icon-burger { display: none; position: absolute; right: 5%; top: 50%; transform: translateY(-50%); } nav .icon-burger .line { width: 30px; height: 5px; background-color: #fff; margin: 5px; border-radius: 3px; transition: all 0.5s ease-in-out; } @media screen and (max-width: 768px) { nav .logo { float: none; width: auto; justify-content: center; } nav .links { float: none; position: fixed; z-index: 9; left: 0; right: 0; top: 100px; bottom: 100%; width: auto; height: auto; flex-direction: column; justify-content: space-evenly; background-color: rgba(0, 0, 0, 0.8); overflow: hidden; transition: all 0.5s ease-in-out; } nav .links a { font-size: 20px; } nav :checked ~ .links { bottom: 0; } nav .icon-burger { display: block; } nav :checked ~ .icon-burger .line:nth-child(1) { transform: translateY(10px) rotate(225deg); } nav :checked ~ .icon-burger .line:nth-child(3) { transform: translateY(-10px) rotate(-225deg); } nav :checked ~ .icon-burger .line:nth-child(2) { opacity: 0; } }
添加完CSS后,我们将得到如下效果:
当我们把浏览器的窗口逐渐缩小时,页面上的导航菜单也会折叠起来:
点击折叠汉堡菜单,我们就会看到导航栏其他内容,效果如下:
我们将使用类选择器 (.container) 来设计我们的图像。我们为图像添加了“100px”的上边距。我们的图像宽度设置为 100%,其显示设置为“block”。
body { padding: 0; margin: 0;}.container { position: relative; margin-top: 100px;}.container img { display: block; width: 100%;}
为了让它看起来更靠近窗口,我们将位置固定在网页上,并将 z-index 增加到 10。选择了“Montesirat”字体系列。高度设置为“100px”,背景色为“#00a6bc”。
nav { position: fixed; z-index: 10; left: 0; right: 0; top: 0; font-family: "Montserrat", "sans-serif"; height: 100px; background-color: #00a6bc; padding: 0 5%;}
我们指定它应该“浮动到窗口的左侧”。高度和宽度的定义分别为“100%”和“40%”。
文章居中对齐,字体颜色为“白色”。
我们为导航栏中的链接添加了一些样式。他们的位置被描述为“向右浮动”。宽度和高度的定义分别为“60%”和“100%”。这些项目居中并且显示设置为“flex”。
nav .logo { float: left; width: 40%; height: 100%; display: flex; align-items: center; font-size: 24px; color: #fff;}nav .links { float: right; padding: 0; margin: 0; width: 60%; height: 100%; display: flex; justify-content: space-around; align-items: center;}
字体大小设置为 16px,文本装饰为无,字体颜色为“白色”,我们添加了一些悬停属性,当用户悬停时,白色底部边框将出现在链接下方。
nav .links { float: right; padding: 0; margin: 0; width: 60%; height: 100%; display: flex; justify-content: space-around; align-items: center;}nav .links li { list-style: none;}nav .links a { display: block; padding: 1em; font-size: 16px; font-weight: bold; color: #fff; text-decoration: none; position: relative;}nav .links a:hover { color: white;}nav .links a::before { content: ""; position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; background-color: white; visibility: hidden; transform: scaleX(0); transition: all 0.3s ease-in-out 0s;}nav .links a:hover::before { visibility: visible; transform: scaleX(1); color: white;}#nav-toggle { position: absolute; top: -100px;}nav .icon-burger { display: none; position: absolute; right: 5%; top: 50%; transform: translateY(-50%);}nav .icon-burger .line { width: 30px; height: 5px; background-color: #fff; margin: 5px; border-radius: 3px; transition: all 0.5s ease-in-out;}
我们将在 CSS 中添加一个响应性和测试功能,以添加一个切换栏来显示菜单项。
@media screen and (max-width: 768px) { nav .logo { float: none; width: auto; justify-content: center; } nav .links { float: none; position: fixed; z-index: 9; left: 0; right: 0; top: 100px; bottom: 100%; width: auto; height: auto; flex-direction: column; justify-content: space-evenly; background-color: rgba(0, 0, 0, 0.8); overflow: hidden; transition: all 0.5s ease-in-out; } nav .links a { font-size: 20px; } nav :checked ~ .links { bottom: 0; } nav .icon-burger { display: block; } nav :checked ~ .icon-burger .line:nth-child(1) { transform: translateY(10px) rotate(225deg); } nav :checked ~ .icon-burger .line:nth-child(3) { transform: translateY(-10px) rotate(-225deg); } nav :checked ~ .icon-burger .line:nth-child(2) { opacity: 0; }}
到这里,我们要实现的效果就算完成了,希望你也已经学会了怎么使用 HTML 和 CSS 来实现一个响应式导航栏效果了。
其实,今天这篇文章算是我们【每日一练】栏目中的详细版本,我们在【每日一练】栏目分享的很多练习,都不会写那么详细教程,主要是把代码分享给大家。
之前也有小伙伴说,看不明白代码,也不知道怎么运用【每日一练】中的代码,关于这个我也有写过一篇文章。
当然,我还是希望今天这篇文章对初学者有所帮助,如果有不明白的地方,请在留言区给我们留言,我们一起学习进步。
标签:
还记得《爱情公寓》里的陈美嘉吗?她现在长这样
宣讲员简介 李杉,西青融媒体中心主持人,从事新闻工作14年,多次报道采访各类活动,并参与主持全区各类
近日,由信息通信领域权威媒体通信世界全媒体正式发起,由资深编辑团队与专家评审组联合审核发布的2023年5G
1、1平方千米=1千米*1千米=1000米*1000米=1000000平方米1公顷=10000平方米所以1平方千米等
空已经做了许久的正经事情,在获得“肝上长了个人”的成就后,决定给自己好好放放假,算算日子,有段时...
1、《极致的狩猎》是首发于晋江文学城的网络小说,作者是一世华裳。文章到此就分享结束,希望对大家有所帮
《华尔街日报》6月2日消息,SpiritAirlines发生技术问题后,该公司超过40%的航班周四出现延误。这家廉价航
1、根本不吓人的好么,不就是整体风格暗盒了一点儿。2、个人感觉看的时候也不是特别害怕啊,恐怖元素也是
IT之家6月2日消息,泰格斯(Targus)今天宣布推出CypressHeroBackpack双肩包,最大的亮点在于支持苹果“Fin
如何用 HTML和CSS 实现一个响应式导航栏效果
众生药业:公司暂无应对热射病的相关产品 全球观焦点
热文:我国首个跨省流域生态补偿提档升级
高考期间,海口家长送考在哪停车?哪些路段易积水?交通出行提示来了 焦点短讯
抖音超级福袋中奖技巧
素土夯实是什么意思啊_素土夯实是什么意思|全球即时看
混合现实概念下挫,长盈精密、清越科技等大跌,苹果首款MR定价超预期-天天即时
当前视点!许海生:投身科学技术前沿研究 以青春脚步丈量科研之路
环球动态:国羽全主力出战新加坡公开赛
新动态:女朋友吵架分手道歉信
世界热头条丨以燃为话题的作文600字
大美中国|海洋牧场朝霞如画
今天上午,虹城幼儿园来了一群特别的“客人”…… 天天报资讯
确定入党积极分子会议流程_推荐和确定入党积极分子情况怎么写
天天快播:IT'S TiME此刻,智未来 一汽丰田2023款奕泽 智跃新生 潮玩世界
环球要闻:社保证明在哪里打印
【天天快播报】买钻戒需要注意哪些细节,买钻戒前必懂常识
当前播报:偏僻的英语_偏僻
天天实时:归来不是少年,魅族正在山丘
【新要闻】外交部:不欢迎北约把触角伸向亚洲
中广天择:日常经营情况正常
2023顺德大良端午龙舟活动汇总(时间+地点)
天天热头条丨电报解读|道森股份(603800.SH)主业景气度支撑,复合铜箔或超预期
*ST慧辰筹码持续集中 最新股东户数下降7.33%
封丘“三夏”气象预报精确到小时
《护心》荧惑的扮演者是谁 荧惑是萨顶顶吗? 环球新资讯
腊鸭腿没晒干怎么办? 天天观速讯
不是秘密的秘密现场版女声版(不是秘密的秘密) 快播
【全球新视野】蔚来ET5旅行版将于6月15日上市 率先交付中国市场
比赛日:曼城夺足总杯 梅西本泽马水爷告别战破门
天天精选!一问到底丨载人登月发展,动力如何先行?
前沿资讯!ps修改照片背景证件 ps修改照片背景
10+2艘!扬子江船业再获“老客户”散货船大单
今日热讯:上海电影携手喜马拉雅 将结合AI技术打造有声产品
锋尚文化涨超12%,中证1000指数ETF(159633)今日已涨0.25%
力量钻石:6月2日融资买入1438.8万元,融资融券余额3.93亿元-焦点播报
【世界热闻】兰州市今年31175人报名参加高考 比去年增加2491人
每日热议!6月5日生意社白卡纸基准价为4863.33元/吨
今日要闻!“买越多省越多”已接近芯片产业“大道”|一周产业评论
AI大模型催生巨大算力需求 市场“热捧”助推科技成果转化加速-环球视点
世界观速讯丨大家一般有多少双鞋子呢 一年要买几双新的鞋_大家一般有多少双鞋子呢 一年要买几双新的
恶作剧之吻插曲颜人中_恶作剧之吻插曲
【世界报资讯】何曾吹落北风中书法(何曾吹落北风中)
斯凯孚与中国重汽再续战略合作,赋能商用车产业加速高质量发展 世界今热点
当前视点!79岁老人欲取离世儿子41万存款被拒,银行:“要先证明是死者唯一继承人”
饣余怎么读_馀怎么读 每日时讯
当前最新:CCY建筑师阿斯彭度假村俯瞰壮观的山景
在哪里可以找到你的暗黑破坏神 4 预购奖励_天天时快讯
国内航班燃油附加费 6 月 5 日起下调 10 元、30 元
2023年鞍山中小学暑假开学时间公布 什么时候开学-世界即时
X 关闭
以“云”为媒 南京市商务局助力外贸企业数字化转型
北京今天紫外线强注意防晒 明后天秋雨“返场”气温下滑
陕西华北黄淮有一次较强降水过程 部分地区有大到暴雨