HTML5响应式使用css媒体查询

HTML 负责搭建页面结构,CSS 负责样式设计,并且通过媒体查询实现了较好的响应式效果,能够适应不同屏幕尺寸下面就是写了一个详细的实例。

CSS 部分

* {margin: 0;padding: 0;box-sizing: border-box;
}
  • * 是通配选择器,会选中页面上的所有元素。
  • margin: 0; 将所有元素的外边距设置为 0。
  • padding: 0; 将所有元素的内边距设置为 0。
  • box-sizing: border-box; 改变元素宽度和高度的计算方式,使元素的宽度和高度包含内边距和边框,但不包含外边距。
body {font-family: Arial, sans-serif;line-height: 1.6;
}
  • font-family: Arial, sans-serif; 设置页面主体文字的字体为 Arial,如果 Arial 不可用,则使用系统默认的无衬线字体。
  • line-height: 1.6; 设置行高为字体大小的 1.6 倍,让文字在垂直方向上有合适的间距。
header {background-color: #333;color: white;padding: 1rem;
}
  • background-color: #333; 设置 header 元素的背景颜色为深灰色。
  • color: white; 设置 header 内文字的颜色为白色。
  • padding: 1rem; 给 header 元素添加 1 个根元素字体大小的内边距。
nav {display: flex;justify-content: space-between;align-items: center;max-width: 1200px;margin: 0 auto;
}
  • display: flex; 将 nav 元素设置为弹性布局容器。
  • justify-content: space-between; 在水平方向上,将子元素均匀分布,两端对齐。
  • align-items: center; 在垂直方向上,将子元素居中对齐。
  • max-width: 1200px; 设置 nav 元素的最大宽度为 1200 像素。
  • margin: 0 auto; 让 nav 元素在水平方向上居中显示。
nav ul {display: flex;list-style: none;
}
  • display: flex; 将 nav 内的无序列表设置为弹性布局容器。
  • list-style: none; 去除无序列表的默认列表项标记。
nav ul li {margin-left: 2rem;
}
  • margin-left: 2rem; 给 nav 内无序列表的每个列表项添加 2 个根元素字体大小的左外边距。
nav a {color: white;text-decoration: none;
}
  • color: white; 设置 nav 内链接文字的颜色为白色。
  • text-decoration: none; 去除链接的下划线。
.portfolio {display: grid;grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));gap: 2rem;padding: 2rem;max-width: 1200px;margin: 0 auto;
}
  • display: grid; 将 .portfolio 元素设置为网格布局容器。
  • grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); 定义网格列的布局,会根据容器宽度自动适应列数,每列最小宽度为 300 像素,最大宽度平均分配剩余空间。
  • gap: 2rem; 设置网格项之间的间距为 2 个根元素字体大小。
  • padding: 2rem; 给 .portfolio 元素添加 2 个根元素字体大小的内边距。
  • max-width: 1200px; 设置 .portfolio 元素的最大宽度为 1200 像素。
  • margin: 0 auto; 让 .portfolio 元素在水平方向上居中显示。
.card {background: #f4f4f4;padding: 1rem;border-radius: 8px;box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
  • background: #f4f4f4; 设置 .card 元素的背景颜色为浅灰色。
  • padding: 1rem; 给 .card 元素添加 1 个根元素字体大小的内边距。
  • border-radius: 8px; 给 .card 元素添加 8 像素的圆角。
  • box-shadow: 0 2px 5px rgba(0,0,0,0.1); 给 .card 元素添加一个轻微的阴影效果。
.card img {width: 100%;height: auto;border-radius: 4px;
}
  • width: 100%; 设置 .card 内图片的宽度为父元素宽度的 100%。
  • height: auto; 让图片的高度根据宽度自动调整,保持图片的原始比例。
  • border-radius: 4px; 给 .card 内图片添加 4 像素的圆角。
.card h3 {margin: 1rem 0;
}
  • margin: 1rem 0; 给 .card 内的 h3 标题添加上下 1 个根元素字体大小的外边距。
footer {background: #333;color: white;text-align: center;padding: 1rem;position: fixed;bottom: 0;width: 100%;
}
  • background: #333; 设置 footer 元素的背景颜色为深灰色。
  • color: white; 设置 footer 内文字的颜色为白色。
  • text-align: center; 让 footer 内的文字居中显示。
  • padding: 1rem; 给 footer 元素添加 1 个根元素字体大小的内边距。
  • position: fixed; 将 footer 元素固定在页面上。
  • bottom: 0; 让 footer 元素位于页面底部。
  • width: 100%; 设置 footer 元素的宽度为 100%。
/* 响应式设计 */
@media (max-width: 768px) {nav {flex-direction: column;text-align: center;}nav ul {margin-top: 1rem;flex-direction: column;}nav ul li {margin: 0.5rem 0;}.portfolio {grid-template-columns: 1fr;padding: 1rem;}
}
  • @media (max-width: 768px) 是媒体查询,当屏幕宽度小于等于 768 像素时,应用以下样式。
  • flex-direction: column; 将 nav 元素和 nav 内的无序列表的弹性布局方向改为垂直方向。
  • text-align: center; 让 nav 内的文字居中显示。
  • margin-top: 1rem; 给 nav 内的无序列表添加 1 个根元素字体大小的上外边距。
  • margin: 0.5rem 0; 给 nav 内无序列表的每个列表项添加上下 0.5 个根元素字体大小的外边距。
  • grid-template-columns: 1fr; 将 .portfolio 元素的网格布局改为单列。
  • padding: 1rem; 给 .portfolio 元素添加 1 个根元素字体大小的内边距。

HTML 部分

<!DOCTYPE html>
<html lang="zh-CN">
  • <!DOCTYPE html> 声明文档类型为 HTML5。
  • <html lang="zh-CN"> 定义 HTML 文档的根元素,并设置语言为中文(中国大陆)。
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>响应式作品集</title><link rel="stylesheet" href="style.css">
</head>
  • <meta charset="UTF-8"> 设置文档的字符编码为 UTF-8。
  • <meta name="viewport" content="width=device-width, initial-scale=1.0"> 配置视口,让页面宽度与设备宽度相同,初始缩放比例为 1.0。
  • <title>响应式作品集</title> 设置页面的标题为 “响应式作品集”。
  • <link rel="stylesheet" href="style.css"> 引入外部样式表 style.css
<body><header><nav><h1>我的作品集</h1><ul><li><a href="#home">首页</a></li><li><a href="#works">作品</a></li><li><a href="#about">关于</a></li></ul></nav></header>
  • <header> 定义页面的页眉部分。
  • <nav> 定义导航栏。
  • <h1>我的作品集</h1> 显示网站标题。
  • <ul> 定义无序列表。
  • <li> 定义列表项。
  • <a href="#home">首页</a> 定义链接,点击后跳转到页面内 ID 为 home 的元素位置(这里代码中未给出 home 元素)。
    <main><section id="works" class="portfolio"><div class="card"><img src="https://via.placeholder.com/300" alt="作品1"><h3>作品标题1</h3><p>作品描述内容</p></div><div class="card"><img src="https://via.placeholder.com/300" alt="作品2"><h3>作品标题2</h3><p>作品描述内容</p></div><div class="card"><img src="https://via.placeholder.com/300" alt="作品3"><h3>作品标题3</h3><p>作品描述内容</p></div></section></main>
  • <main> 定义页面的主要内容区域。
  • <section id="works" class="portfolio"> 定义一个章节,ID 为 works,类名为 portfolio
  • <div class="card"> 定义一个卡片容器。
  • <img src="https://via.placeholder.com/300" alt="作品1"> 显示一张占位图片,alt 属性为图片的替代文本。
  • <h3>作品标题1</h3> 显示作品标题。
  • <p>作品描述内容</p> 显示作品描述。
    <footer><p>&copy;  All rights reserved.</p></footer>
</body>
</html>
  • <footer> 定义页面的页脚部分。
  • <p>&copy; All rights reserved.</p> 显示版权信息,&copy; 是版权符号的 HTML 实体。

你尽管努力,剩下交给天意。

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

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

相关文章

洛谷P1434 [SHOI2002] 滑雪

P1434 [SHOI2002] 滑雪 - 洛谷 代码区&#xff1a; #include<algorithm> #include<iostream> #include<cstring> using namespace std;const int MAX 105; int r, c; int arr[MAX][MAX], dp[MAX][MAX]; int xindex[4] {-1,1,0,0};//上下左右 int yindex[…

【操作系统】进程间通信方式

进程间通信方式 前言 / 概述一、管道管道命名管道 二、消息队列三、共享内存四、信号量信号量概述互斥访问条件同步信号 五、socket总结 前言 / 概述 每个进程的用户地址空间都是独立的&#xff0c;⼀般而言是不能互相访问的&#xff0c;但内核空间是每个进程都共享的&#xff…

WPF 布局中的共性尺寸组(Shared Size Group)

1. 什么是共性尺寸组&#xff1f; 在 WPF 的 Grid 布局中&#xff0c;SharedSizeGroup 允许多个 Grid 共享同一列或行的尺寸&#xff0c;即使它们属于不同的 Grid 也能保持大小一致。这样可以保证界面元素的对齐性&#xff0c;提高布局的一致性。 SharedSizeGroup 主要用于需…

Netty源码—2.Reactor线程模型二

大纲 1.关于NioEventLoop的问题整理 2.理解Reactor线程模型主要分三部分 3.NioEventLoop的创建 4.NioEventLoop的启动 4.NioEventLoop的启动 (1)启动NioEventLoop的两大入口 (2)判断当前线程是否是NioEventLoop线程 (3)创建一个线程并启动 (4)NioEventLoop的启动总结 (…

前端项目中应该如何选择正确的图片格式

在前端项目中选择正确的图片格式是优化页面性能、提升用户体验的关键步骤之一。以下是常见图片格式的特点、适用场景及选择建议&#xff0c;帮助你在不同场景下做出最优决策&#xff1a; 一、常见图片格式对比 格式特点适用场景不适用场景JPEG- 有损压缩&#xff0c;文件小- 不…

保姆级 STM32 HAL 库外部中断教学

1. 外部中断概述 为什么用外部中断&#xff1f; 当按键按下时&#xff0c;CPU 无需轮询检测引脚状态&#xff0c;而是通过中断机制立即响应&#xff0c;提高效率&#xff0c;适用于实时性要求高的场景。 关键概念 EXTI (External Interrupt/Event Controller)&#xff1a;ST…

Postman高级功能深度解析:Mock Server与自动化监控——构建高效API测试与监控体系

引言&#xff1a;Postman在API开发中的核心价值 在数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为系统间交互的“神经网络”&#xff0c;其质量直接影响用户体验与业务连续性。然而&#xff0c;传统API测试面临两大挑战&#xff1a; 开发阶段依赖…

【程序人生】成功人生架构图(分层模型)

文章目录 ⭐前言⭐一、根基层——价值观与使命⭐二、支柱层——健康与能量⭐三、驱动层——学习与进化⭐四、网络层——关系系统⭐五、目标层——成就与财富⭐六、顶层——意义与传承⭐外层&#xff1a;调节环——平衡与抗风险⭐思维导图 标题详情作者JosieBook头衔CSDN博客专家…

【最后203篇系列】020 rocksdb agent

今天还是挺开心的一天&#xff0c;又在工具箱里加了一个工具。嗯&#xff0c;但是快下班的时候也碰到一些不太顺心的事&#xff0c;让我有点恼火。我还真没想到一个专职的前端&#xff0c;加测试&#xff0c;以及其他一堆人&#xff0c;竟然不知道后端返回的markdown,在前端渲染…

10-- 网络攻击防御原理全景解析 | 从单包攻防到DDoS军团作战(包你看一遍全记住)

&#x1f6e1;️ 网络攻击防御原理全景解析 | 从单包攻防到DDoS军团作战 如果你也对网络工程师的内容感兴趣的话&#xff0c;欢迎看我的最新文章9–BGP路由黑洞&#xff08;超万字大解析&#xff09;&#xff1a;网络世界的“百慕大三角“逃生指南(BGP路由配置实验含路由黑洞,…

解锁Python print()函数高级用法

print() 是 Python 中最常用的函数之一,用于将内容输出到控制台。虽然它的基本用法非常简单,但 print() 函数还支持许多高级功能,如格式化输出、重定向输出、控制分隔符和结束符等。 1. print() 函数的基本用法 1.1 语法 print() 函数的基本语法如下: print(*objects, …

鬼泣:动作系统3

文章目录 self-Tag&#xff1a;可以直接在游戏运行时通过标签区分不同Actorsolid隔离&#xff1a;模块化低耦合&#xff1a;将功能拆分成多个模块&#xff0c;修改单一模块时无需修改其他模块 动作优先级&#xff1a;当前动作能否打断上一动作函数不能使用timelineset timer by…

Polymer入门指南:从零开始构建、组织、管理Web Component

前言 Web Component是一种强大的技术&#xff0c;它允许开发者创建可重用的自定义元素&#xff0c;其功能和样式都与原生HTML元素类似。Polymer是一个用于创建Web Component的库&#xff0c;简化了开发过程。今天我们将一起来了解如何基于Polymer开发Web Component。 什么是P…

广度优先搜索(BFS) vs 深度优先搜索(DFS):算法对比与 C++ 实现

目录 一、BFS 和 DFS 的核心思想 1. BFS&#xff08;广度优先搜索&#xff09; 2. DFS&#xff08;深度优先搜索&#xff09; 二、BFS 和 DFS 的对比 三、C 代码实现 1. BFS 实现&#xff08;邻接表表示的无向图&#xff09; 2. DFS 实现&#xff08;递归与迭代两种方式&…

vulhub靶机----基于docker的初探索,环境搭建

环境搭建 首先就是搭建docker环境&#xff0c;这里暂且写一下 #在kali apt update apt install docker.io配置docker源&#xff0c;位置在/etc/docker/daemon.json {"registry-mirrors": ["https://5tqw56kt.mirror.aliyuncs.com","https://docker…

第7章 类与面向对象

6-1 二维平面上的点操作&#xff08;Python3&#xff09; 题目描述 设计一个表示二维平面上点的类 Point。该类应该包含以下功能&#xff1a; 两个私有属性 _x 和 _y&#xff0c;分别表示点的横坐标和纵坐标。 一个构造函数 __init__&#xff0c;用于初始化点的坐标。 一个…

算法训练篇06--力扣611.有效三角形的个数

目录 1.题目链接&#xff1a;611.有效三角形的个数 2.题目描述&#xff1a; 3.解法一&#xff1a;(暴力解法)(会超时)&#xff1a; 4.解法二(排序双指针) 1.题目链接&#xff1a;611.有效三角形的个数 2.题目描述&#xff1a; 给定一个包含非负整数的数组 nums &#xf…

网络编程之解除udp判断客户端是否断开

思路&#xff1a;每几秒发送一条不显示的信息&#xff0c;客户端断开则不再发送信息&#xff0c;超时则表示客户端断开连接。&#xff08;心跳包&#xff09; 服务器 #include <head.h>#define MAX_CLIENTS 100 // 最大支持100个客户端 #define TIMEOUT 5 // 5秒…

Python Cookbook-4.8 二维阵列变换

任务 需要变换一个列表的列表&#xff0c;将行换成列&#xff0c;列换成行。 解决方案 需要一个列表&#xff0c;其中的每一项都是同样长度的列表&#xff0c;像这样 arr [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]列表推导提供了简单方便的方法以完成二维阵列的转换: print …

B树与B+树在MySQL中的应用:索引

数据结构演示网站&#xff1a;Data Structure Visualization 先来了解两个数据结构B树与B树 B树&#xff1a; N阶B树每个节点最多存储N-1个Key&#xff0c;N个指针 例如&#xff1a;一个5阶B树&#xff0c;当前节点存储到5个Key时&#xff0c;中间的数会向上分离&#xff0c;…