基于HTML5和CSS3搭建一个Web网页(二)

倘若代码中有任何问题或疑问,欢迎留言交流~

网页描述

创建一个包含导航栏、主内容区域和页脚的响应式网页。
需求:

  1. 导航栏:
    在页面顶部创建一个导航栏,包含首页、关于我们、服务和联系我们等链接。
    设置导航栏样式,包括字体、颜色和背景颜色等。
    在滚动页面时,导航栏应始终固定在顶部。
  2. 主内容区域:
    包含介绍性文本和至少两张图片。
    对文本和图片应用样式,例如字体样式、对齐方式等。
  3. 页脚:
    包含版权信息和日期,并进行相应的样式设计.
  4. 响应式布局:
    当在不同大小的设备(如手机、平板电脑、笔记本电脑等)上查看时,网页应该具有很好的可读性和易用性。
    提示:
    使用HTML5的新元素,如header、footer、nav、section、article等进行布局。
    使用CSS3的新特性,如渐变、阴影、动画、Flexbox或Grid布局等提升网页的视觉效果。
    使用媒体查询(@media)来设置响应式布局的断点。

在上一篇文字已经解决了导航栏的基本部分,基于HTML5和CSS3搭建一个Web网页(一)。下面继续完成这个网页的开发。

项目结构

基于上一篇得基础,我将导航栏的布局改变了一下,因为发现导航栏只有四个选项,四等分好像有点难看。所以让它们更紧凑了一点,并且改变了一下项目结构。
根据项目要求,可以看到网页分为三个部分
分别是导航栏、主体内容和页脚
因此html主题结构为三个div标签。代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Web</title><link rel="stylesheet" href="../css/style.css"><link rel="stylesheet" href="../css/header.css"><link rel="stylesheet" href="../css/main.css"><link rel="stylesheet" href="../css/footer.css">
</head>
<body><div class="header"></div><div class="main"></div><div class="footer"></div>
</body>
</html>

项目文件夹结构如图所示:
在这里插入图片描述

  1. style.css为主体css样式
  2. header.css、main.css和footer.css依次为导航栏、主体内容和页脚样式

style.css

/* 去除所有元素默认的margin、padding和border值 */
* {margin: 0;padding: 0;border: 0;
}/* 初始化html、body宽高100%,占满整个窗口 */
html, body {height: 100%;width: 100%;
}/* 设置一个类来清除浮动 */
.clearfix {clear: both;
}

这个清除浮动类比较重要,在后边的代码过程中会经常用到。

导航栏的响应式布局

响应式布局里,我们将情况分为五种:

  1. 在屏幕宽度最大为575px(通常是手机设备)
  2. 当屏幕宽度在576px到767px(通常是平板设备)
  3. 当屏幕宽度在768px到991px(通常是小型电脑设备)
  4. 当屏幕宽度在992px到1199px(通常是中型电脑设备)
  5. 当屏幕宽度在1200px以上(通常是大屏电脑设备)
    并且在css文件夹中建立media.css文件,用来存放编写网页的响应式效果。
    基于这五个情况,可以列出media.css文件的框架如下:
/* 超小屏幕(小于等于575px) */
@media (max-width: 575px) {}
/* 小屏幕 */
@media (min-width: 576px) {}
/* 中等屏幕 */
@media (min-width: 768px) {}
/* 大屏幕 */
@media (min-width: 992px) {}
/* 超大屏幕 */
@media (min-width: 1200px) {}

导航栏的响应式布局思路

导航栏的响应式布局思路为,小屏幕时为了观感,用汉堡菜单按钮来代替导航栏的选项。
汉堡菜单在我之前的文章有提过:超小屏幕下的导航栏-汉堡菜单按钮效果。
即实现下图中的效果,而其余屏幕则改变导航栏的大小即可。
在这里插入图片描述

index.html

那么index.html文件为

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Web</title><link rel="stylesheet" href="../css/style.css"><link rel="stylesheet" href="../css/header.css"><link rel="stylesheet" href="../css/main.css"><link rel="stylesheet" href="../css/footer.css"><link rel="stylesheet" href="../css/media.css">
</head>
<body><div class="header"><div class="header-main"><!-- 借助复选框实现菜单效果 --><input type="checkbox" id="toggle-box"> <!-- 汉堡菜单按钮 --><label for="toggle-box" class="menu"></label><ul><li><a href="index.html">  首页  </a></li><li><a href="#">关于我们</a></li><li><a href="#">  服务  </a></li><li><a href="#">联系我们</a></li></ul></div><!-- 清除浮动类 --><div class="clearfix"></div></div><div class="main"></div><div class="footer"></div>
</body>
</html>

header.css

对应header.css文件为:

.header {/* 设置导航栏的大小和颜色 */width: 100%;background-color: rgba(0,0,0,0.4);/* 固定导航栏 */position: fixed;
}
.header-main {width: 70%;
}
.header .header-main ul {/* Flex需要初始化ul标签的宽度 */width: 100%;/* 导航栏采用Flex布局方式 *//* 采用Flex布局的好处:1.使得代码更加简洁 2.不用考虑宽的设置,会自动占满 */display: flex;/* 去掉列表点 */list-style: none;
}
.header .header-main ul  li {/* 设置 flex-grow 为 1 保证所有的 li 元素都有相等的宽度,而不论其内容的宽度 */flex-grow: 1;height: 100%;/* 对齐文本到中心 */text-align: center;
}
ul li a {/* 设置字体大小和颜色,并去掉下划线 */font-size: 18px;color: black;text-decoration: none;display: block;margin-top: 12px;height: 36px;border-bottom: 2px rgba(0,0,0,0.4);
}ul li a:hover {color: white;height: 34px;border-bottom: 2px solid white;
} 
/* 默认情况下隐藏汉堡菜单按钮 */
#toggle-box, .menu {display: none;
}

media.css文件

/* 超小屏幕(小于等于575px) */
@media (max-width: 575px) {.header-main {width: 94%;margin-left: 3%;margin-right: 3%;/* 美观 */min-height: 35px;line-height: 35px;}.header .header-main ul {display: none;}.header-main ul li {display: block;width: 100%;text-align: center;}.header-main .menu {display: block;text-align: center;}#toggle-box:checked~ul {display: block;}
}
/* 小屏幕 */
@media (min-width: 576px) {.header-main {width: 80%;margin-left: 10%;margin-right: 10%;}
}/* 中等屏幕 */
@media (min-width: 768px) {.header-main {width: 70%;margin-left: 15%;margin-right: 15%;}
}/* 大屏幕 */
@media (min-width: 992px) {.header-main {width: 60%;margin-left: 20%;margin-right: 20%;}
}/* 超大屏幕 */
@media (min-width: 1200px) {.header-main {width: 50%;margin-left: 25%;margin-right: 25%;}
}

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

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

相关文章

上门服务系统开发|东邻到家系统|上门服务系统开发流程

上门服务小程序的开发流程是一个复杂且精细的过程&#xff0c;涉及到需求分析、设计规划、开发实施、测试验收以及上线运营等多个环节。下面将详细介绍上门服务小程序的开发流程&#xff0c;帮助读者全面了解并掌握其中的关键步骤。 一、需求分析 在开发上门服务小程序之前&am…

API攻击呈指数级增长,如何保障API安全?

从远程医疗、共享汽车到在线银行&#xff0c;实时API是构建数字业务的基础。然而&#xff0c;目前超过90%的基于Web的网络攻击都以API端点为目标&#xff0c;试图利用更新且较少为人所知的漏洞&#xff0c;而这些漏洞通常是由安全团队未主动监控的API所暴露&#xff0c;致使API…

24款奔驰GLE350升级原厂环视全景360影像 抬头显示HUD

奔驰GLE350原厂360全景影像的清晰度通常取决于车辆的具体型号和年份&#xff0c;以及安装的摄像头和显示屏质量。一般来说&#xff0c;原厂360全景影像系统会提供高清的影像&#xff0c;让驾驶者能够清晰地看到车辆周围的环境&#xff0c;帮助进行停车和转弯等操作抬头显示&…

AOP编程

AOP编程 AOP&#xff0c;面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构。 OOP&#xff0c;面向对象编程&#xff0c;一种编程思想。 AOP&#xff0c;提供了一种机制,可以将一些横切系统中多个模块的共同逻辑(如日志记录、事务管理、安全控制等…

WordPress搭建流程

1. 简介 WordPress 是一个 PHP 编写的网站制作平台。WordPress 本身免费,并且拥有众多的主题可以使用,适合用于搭建个人博客、公司官网、独立站等。 2. 环境准备 2.1 WordPress 下载 WordPress 可以在 Worpress中文官网 下载(如果后续要将后台调成中文的话,一定要从中文…

定时器

文章目录 11.11.21.31.41.5 22.12.2 基本定时器 框图2.32.42.4.12.4.22.4.32.4.42.4.52.4.6 2.5 定时器 溢出时间计算方法2.6 定时器 中断 实验配置步骤2.72.7.12.7.2 和42.7.32.7.52.7.6 33.13.23.2.1 时钟源3.2.23.2.43.2.6 3.33.43.4.13.4.23.4.33.4.43.4.53.4.5.13.4.5.23.…

机器学习实验------Adaboost算法

第1关:什么是集成学习 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 第2关: Boosting 任务描述 本关任务:根据本节课所学知识完成本关所设置的选择题。 第3关:Adaboost算法流程 任务描述 本关任务:用Python实现Adaboost,并通过鸢尾花数据集…

捕食者优化算法,原理详解,MATLAB代码免费获取

捕食者优化算法&#xff08;Hunter–prey optimization&#xff0c;HPO&#xff09;是一种受自然启发的群智能优化算法。该算法的灵感来自于捕食动物(如狮子、豹和狼)以及猎物(如雄鹿和瞪羚)的行为。动物狩猎行为有很多场景&#xff0c;其中一些场景已经转化为优化算法。本文使…

如何选择一款安全高效的数据自动同步工具?

随着科技的不断发展&#xff0c;企业处理的数据量愈发庞大。数字化浪潮的涌现使得数据在业务活动和决策中的角色变得日益重要&#xff0c;然而这些数据往往分布在不同的位置&#xff0c;需要进行同步和分类&#xff0c;以便更有效地利用。以下是一些常见的数据自动同步场景&…

UE5 像素流web 交互2

进来点个关注不迷路谢谢&#xff01; ue 像素流交互多参数匹配 主要运用像素流的解析json 状态&#xff1a; 测试结果&#xff1a; 浏览器控制台&#xff1a; 接下来编写事件传递 关注下吧&#xff01;

模板编译之入口分析

Vue 是一个渐进式 JavaScript 框架&#xff0c;提供了简单易用的模板语法&#xff0c;帮助开发者以声明式的方式构建用户界面。Vue 的模板编译原理是其核心之一&#xff0c;它将模板字符串编译成渲染函数&#xff0c;并在运行时高效地更新 DOM。本文将深入探讨 Vue 模板编译的原…

【机器学习300问】96、怎么理解卷积神经网络CNN中的卷积操作?

卷积操作是卷积神经网络&#xff08;CNN&#xff09;中的一种核心组件。要讲清楚卷积操作&#xff0c;我们只需要回答以下四个问题&#xff1a;什么是卷积核&#xff1f;卷积运算的规则是什么&#xff1f;padding是什么&#xff1f;stride是什么&#xff1f; 下面让我以图像处理…

27寸2K显示器 - HKC G27H2

HKC G27H2是一款面向电竞市场的高性能显示器&#xff0c;以其2K分辨率和180Hz的刷新率作为主要卖点&#xff0c;旨在为玩家提供流畅而清晰的视觉体验。配备HDR 400技术和95% DCI-P3色域覆盖&#xff0c;这款显示器还支持升降旋转支架&#xff0c;为用户提供了高度的人体工程学适…

阿尔杰姆·卢金采访

近年来&#xff0c;在中俄两国元首亲自擘画、战略引领下&#xff0c;两国新时代全面战略协作伙伴关系成熟坚韧、稳如泰山&#xff0c;树立了新型大国关系的新范式。中俄关系走出了一条大国战略互信、邻里友好的相处之道&#xff0c;给两国人民带来了实实在在的好处&#xff0c;…

Python爬虫:爬取B站视频(最新、能用且讲解详细)【01】

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

Android Notes

maven 版本发布 1、小于 AGP7 使用 maven 插件 apply plugin: maven uploadArchives {repositories {mavenDeployer {pom.groupId GROUP_IDpom.artifactId ARTIFACT_IDpom.version VERSION//正式版本repository(url: RELEASE_URL) {authentication(userName: userName, p…

世界上首位AI程序员诞生,AI将成为人类的对手吗?

3月13日&#xff0c;世界上第一位AI程序员Devin诞生&#xff0c;不仅能自主学习新技术&#xff0c;自己改Bug&#xff0c;甚至还能训练和微调自己的AI模型&#xff0c;表现已然远超GPT-4等“顶流选手”。 AI的学习速度如此之快&#xff0c;人类的教育能否跟上“机器学习”的速…

SQLServer表变量

表变量是本地变量的一种特殊类型&#xff0c;它有助于临时存储数据; 要声明表变量&#xff0c;使用declare,而局部变量的名称必须以符号开头&#xff1b; TABLE关键字指定此变量是表变量&#xff0c;然后还要定义列名和数据类型&#xff1b; 下面定义一个表变量&#xff0c…

嵌入式全栈开发学习笔记---C语言笔试复习大全21(编程题25~30)

目录 25、实现字符串的排序。&#xff08;输入hello world good&#xff0c;输出good hello world&#xff0c;其中字符串个数任意&#xff09; 26、输入两个有序的字符串&#xff08;从小到大&#xff09;&#xff0c;合并成一个有序的字符串。&#xff08;输入cdhxyz fjln …

1076: 判断给定有向图是否存在回路

解法&#xff1a; 直观的方法用邻接矩阵dfs,这是错误的代码 #include<iostream> #include<vector> using namespace std; int arr[100][100]; int f 0; void dfs(vector<int>& a, int u) {a[u] 1;for (int i 0; i < a.size(); i) {if (arr[u][i]…