《CSS 简易速速上手小册》第3章:CSS 响应式设计(2024 最新版)

news2024/11/18 22:50:29

在这里插入图片描述

文章目录

  • 3.1 媒体查询基础:网页的智能眼镜
    • 3.1.1 基础知识
    • 3.1.2 重点案例:适应三种设备的响应式布局
    • 3.1.3 拓展案例 1:改变字体大小
    • 3.1.4 拓展案例 2:暗模式适配
  • 3.2 响应式图片和视频:让内容自由呼吸
    • 3.2.1 基础知识
    • 3.2.2 重点案例:响应式图片画廊
    • 3.2.3 拓展案例 1:使用 `<picture>` 元素适配暗模式
    • 3.2.4 拓展案例 2:创建响应式视频
  • 3.3 移动优先与桌面优先策略:瑜伽大师的两种姿态
    • 3.3.1 基础知识
    • 3.3.2 重点案例:从移动到桌面的响应式博客布局
    • 3.3.3 拓展案例 1:移动优先的导航菜单
    • 3.3.4 拓展案例 2:响应式图片展示

3.1 媒体查询基础:网页的智能眼镜

在数字世界的时尚秀上,网页需要能够自如地切换它们的“服装”,以适应各种屏幕尺寸和环境。这就是媒体查询(Media Queries)发挥作用的地方,它们就像是网页的智能眼镜,帮助网页观察和适应周围的环境。通过使用媒体查询,我们可以为不同的屏幕尺寸、方向、分辨率等条件定义不同的CSS规则。

3.1.1 基础知识

  • 媒体类型:包括 allprintscreen 等,分别适用于所有设备、打印机和屏幕设备。
  • 媒体特性:例如 widthheightorientation(方向)等,用于描述媒体的特定特性。
  • 媒体查询语法:媒体查询允许我们根据媒体类型和一个或多个媒体特性的值来应用CSS规则。例如:@media (min-width: 600px) { ... } 表示屏幕宽度至少为600像素时应用的规则。

3.1.2 重点案例:适应三种设备的响应式布局

假设你正在设计一个简单的响应式布局,需要适应手机、平板和桌面三种不同的屏幕尺寸。

  • HTML 结构
<div class="container">
  <header>头部</header>
  <main>主要内容</main>
  <aside>侧边栏</aside>
  <footer>页脚</footer>
</div>
  • CSS 样式
.container {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

@media (min-width: 600px) {
  .container {
    grid-template-columns: 2fr 1fr;
  }
}

@media (min-width: 1000px) {
  .container {
    grid-template-columns: 3fr 1fr;
  }
}

在这个案例中,我们使用了媒体查询来调整网格布局的列数,以适应不同的屏幕宽度。在宽度至少为600像素的屏幕上,布局变为两列;在宽度至少为1000像素的屏幕上,布局变为三列加上侧边栏。

3.1.3 拓展案例 1:改变字体大小

为了提高在小屏设备上的可读性,我们可能需要在屏幕尺寸较小的设备上减小字体大小。

  • CSS 样式
body {
  font-size: 16px;
}

@media (max-width: 600px) {
  body {
    font-size: 14px;
  }
}

通过设置一个最大宽度为600像素的媒体查询,我们减小了小屏设备上的字体大小,使内容更易于阅读。

3.1.4 拓展案例 2:暗模式适配

许多用户喜欢在低光环境中使用暗模式,我们可以使用媒体查询来为这些用户提供更舒适的视觉体验。

  • CSS 样式
@media (prefers-color-scheme: dark) {
  body {
    background-color: #333;
    color: #fff;
  }
}

这个媒体查询检查用户的系统是否设置为暗模式,并相应地调整网页的背景颜色和文字颜色。

通过这些案例,我们可以看到媒体查询如何使得创建响应式网站变得简单而直观。无论是适应不同的设备尺寸、调整字体大小还是适配暗模式,媒体查询都是实现这些目标的强大工具。继绀实践和探索媒体查询的可能性,让你的网站在任何环境下都能完美展现。

在这里插入图片描述


3.2 响应式图片和视频:让内容自由呼吸

在响应式设计的舞台上,图片和视频是那些需要特别关照的明星。如果处理得当,它们可以在任何尺寸的屏幕上都展现出最佳状态,为用户带来视觉上的享受。让我们探索如何让这些内容元素在响应式网页设计中“自由呼吸”,无论是在宽敞的桌面显示器上,还是在紧凑的手机屏幕上。

3.2.1 基础知识

  • 使用 srcsetsizes 属性:HTML5 引入了 srcset 属性,让我们可以为 <img> 标签指定一系列的图片资源,浏览器会根据屏幕条件选择最合适的一张。sizes 属性则允许我们定义一系列的媒体条件(如屏幕宽度),并为每一条件指定一个图片大小。
  • 使用 <picture> 元素<picture> 元素允许更多的灵活性,通过包含零个或多个 <source> 元素以及一个 <img> 元素作为回退,可以根据不同的条件(包括媒体查询)来指定不同的图片资源。
  • 响应式视频:视频也可以是响应式的,通常通过设置视频容器的宽度为100%,高度自动调整来实现。

3.2.2 重点案例:响应式图片画廊

假设你需要创建一个图片画廊,其中的图片需要根据访问者的屏幕尺寸加载不同分辨率的图片。

  • HTML 结构
<img src="example-small.jpg"
     srcset="example-small.jpg 500w, example-medium.jpg 1000w, example-large.jpg 1500w"
     sizes="(max-width: 600px) 500px, (max-width: 900px) 1000px, 1500px"
     alt="示例图片">

在这个案例中,srcset 属性定义了三种不同宽度的图片资源,而 sizes 属性则根据屏幕宽度的不同条件来指定使用哪个资源。这样,浏览器会选择最适合当前屏幕尺寸的图片来显示。

3.2.3 拓展案例 1:使用 <picture> 元素适配暗模式

当网站支持暗模式时,我们可能希望根据用户的偏好显示不同风格的图片。

  • HTML 结构
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="example-dark.jpg">
  <source media="(prefers-color-scheme: light)" srcset="example-light.jpg">
  <img src="example-light.jpg" alt="在不支持 source 元素的浏览器中显示">
</picture>

使用 <picture><source> 元素,我们可以根据系统的颜色方案偏好来加载不同的图片,从而提升用户体验。

3.2.4 拓展案例 2:创建响应式视频

为了确保视频内容也能在不同设备上良好展示,我们需要使视频容器具有响应性。

  • HTML + CSS
<div class="responsive-video">
  <iframe src="https://www.youtube.com/embed/dQw4w9WgXcQ" frameborder="0" allowfullscreen></iframe>
</div>
.responsive-video {
  position: relative;
  padding-bottom: 56.25%; /* 16:9 比例 */
  height: 0;
  overflow: hidden;
}

.responsive-video iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

通过创建一个包装器 div 并使用上述 CSS 规则,我们可以让视频自适应容器的宽度,同时保持正确的宽高比,确保视频在任何设备上都能完美播放。

通过这些案例,我们学会了如何使图片和视频在响应式网页设计中自由呼吸,确保它们在不同设备上都能以最佳状态展现。掌握了这些技巧后,你就能为你的网站访问者提供一个无论在哪种设备上都能享受的美好视觉体验。继续探索和实验吧,让你的内容在数字世界中自由呼吸!

在这里插入图片描述


3.3 移动优先与桌面优先策略:瑜伽大师的两种姿态

在响应式设计的世界里,“移动优先” 和 “桌面优先” 是两种常见的开发策略,它们就像瑜伽大师在展示不同姿态时的两种起始点。选择哪一种,取决于你的目标受众、内容策略以及设计理念。

3.3.1 基础知识

  • 移动优先(Mobile First):这种策略是从最小的屏幕尺寸(通常是手机)开始设计和开发,然后逐渐添加更多的特性和布局来适应更大的屏幕。它强调内容的优先级和核心功能,确保所有用户都能获得最优质的体验。
  • 桌面优先(Desktop First):相反,这种策略是从桌面尺寸的屏幕开始设计,然后通过逐步减少内容和布局复杂度来适应更小的屏幕。这种方法适合内容丰富、功能复杂的网站。
  • 断点(Breakpoints):无论采用哪种策略,断点都是关键概念。断点是在媒体查询中定义的,用于在不同屏幕尺寸下改变布局和样式。

3.3.2 重点案例:从移动到桌面的响应式博客布局

假设你正在设计一个博客网站,希望它在手机、平板和桌面上都能提供优秀的阅读体验。

  • HTML 结构
<div class="blog">
  <header>博客头部</header>
  <main>博客文章</main>
  <aside>侧边栏</aside>
  <footer>页脚</footer>
</div>
  • CSS 样式
.blog {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

@media (min-width: 600px) {
  .blog {
    grid-template-columns: 3fr 1fr;
  }
}

@media (min-width: 1000px) {
  .blog {
    grid-template-columns: 4fr 1fr;
    grid-template-areas:
      "header header"
      "main aside"
      "footer footer";
  }
}

从移动优先的角度出发,我们首先为手机屏幕设计了一个单列布局。随后通过媒体查询逐步为平板和桌面屏幕引入更复杂的多列布局。

3.3.3 拓展案例 1:移动优先的导航菜单

对于导航菜单,移动优先的方法通常涉及到一个折叠式菜单,它在桌面上展开为水平菜单。

  • HTML 结构
<nav class="mobile-first-nav">
  <ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">文章</a></li>
    <li><a href="#">关于</a></li>
  </ul>
</nav>
  • CSS 样式
.mobile-first-nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}

@media (min-width: 600px) {
  .mobile-first-nav ul {
    flex-direction: row;
  }
}

这个例子展示了如何使用移动优先策略来创建一个适应不同屏幕尺寸的导航菜单。

3.3.4 拓展案例 2:响应式图片展示

针对不同设备,展示不同尺寸的图片也是响应式设计的一部分。

  • HTML 结构
<img src="small.jpg"
     srcset="small.jpg 500w, medium.jpg 1000w, large.jpg 1500w"
     sizes="(max-width: 600px) 500px, (max-width: 900px) 1000px, 1500px"
     alt="示例图片">

利用 srcsetsizes 属性,我们可以根据屏幕宽度为用户提供最合适的图片大小,从而优化加载时间和视觉体验。

通过这些案例,我们可以看到,无论是移动优先还是桌面优先策略,关键在于理解目标用户和内容优先级,以及如何利用CSS的强大功能来适应不同设备。这样的策略让我们的网站不仅仅能够在任何设备上工作,而且能够为每个用户提供最佳的体验。继续实践这些技巧,让你的网站成为真正的响应式瑜伽大师!

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

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

相关文章

STM32标准库驱动W25Q64模块读写字库数据+OLED0.96显示例程

STM32标准库驱动W25Q64 模块读写字库数据OLED0.96显示例程 &#x1f3ac;原创作者对W25Q64保存汉字字库演示&#xff1a; W25Q64保存汉字字库 &#x1f39e;测试字体显示效果&#xff1a; &#x1f4d1;功能实现说明 利用W25Q64保存汉字字库&#xff0c;OLED显示汉字的时候&…

flutter使用qr_code_scanner扫描二维码

qr_code_scanner仓库地址&#xff1a;qr_code_scanner | Flutter Package 需要添加android和ios的相机权限和本地相册权限&#xff1a; android中添加权限: 在android\app\build.gradle中修改&#xff1a;minSdkVersion 20 并且在android/app/src/main/AndroidManifest.xml中…

机器学习系列——(十二)线性回归

导言 在机器学习领域&#xff0c;线性回归是最基础且重要的算法之一。它用于建立输入特征与输出目标之间的线性关系模型&#xff0c;为我们解决回归问题提供了有效的工具。本文将详细介绍线性回归的原理、应用和实现方法&#xff0c;帮助读者快速了解和上手这一强大的机器学习…

C++ 贪心 区间问题 区间选点

给定 N 个闭区间 [ai,bi] &#xff0c;请你在数轴上选择尽量少的点&#xff0c;使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。 输入格式 第一行包含整数 N &#xff0c;表示区间数。 接下来 N 行&#xff0c;每行包含两…

nginx添加lua模块

目录 已安装了nginx&#xff0c;后追加lua模块nginx 重新编译知识参考&#xff1a; 从零安装一、首先需要安装必要的库&#xff08;pcre、zlib、openssl&#xff09;二、安装LUA环境及相关库 &#xff08;LuaJIT、ngx_devel_kit、lua-nginx-module&#xff09;注意&#xff1a;…

怎么理解 Redis 事务

背景 在面试中经常会被问到&#xff0c;redis支持事务吗&#xff1f;事务是怎么实现的&#xff1f;事务会回滚吗&#xff1f;又是一键三连&#xff0c;我下面分析下&#xff0c;看看能不能吊打面试官 什么是Redis事务 事务是一个单独的隔离操作&#xff1a;事务中的所有命令…

骨科器械行业分析:市场规模为360亿元

骨科器械一般指专门用于骨科手术用的专业医疗器械。按国家食品药品监督局的分类划分常分为&#xff1a;一类;二类和三类。按照使用用途和性能主要分为骨科用刀、骨科用剪、骨科用钳、骨科用钩、骨科用针、骨科用刮、骨科用锥、骨科用钻、骨科用锯、骨科用凿、骨科用锉/铲、骨科…

知名开发工具RubyMine全新发布v2023.3——支持AI Assistant

RubyMine 是一个为Ruby 和 Rails开发者准备的 IDE&#xff0c;其带有所有开发者必须的功能&#xff0c;并将之紧密集成于便捷的开发环境中。 RubyMine v2023.3正式版下载 新版本改进AI Assistant支持、Rails应用程序和引擎的自定义路径、对Rails 7.1严格locals的代码洞察、RB…

网课:[NOIP2017]奶酪——牛客(疑问)

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 现有一块大奶酪&#xff0c;它的高度为 h&#xff0c;它的长度和宽度我们可以认为是无限大的&#xff0c;奶酪中间有许多半径相同的球形空洞。我们可以在这块奶酪中建立空间坐标系&a…

灰度发布浅见

在之前的稳定性生产文章中有一项对于研发人员比较重要的措施是变更管控&#xff0c;关于变更管控其实在实际生产活动中有很多措施&#xff0c;因为对于不太的行业&#xff0c;其行业特点和稳定性生产的要求也不一样&#xff0c;例如下图&#xff0c;我们可以看到信通院调研的不…

AJAX——AJAX入门

1 什么是AJAX&#xff1f; Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于在Web应用程序中实现异步通信的技术。 简单点说&#xff0c;就是使用XMLHttpRequest对象与服务器通信。它可以使用JSON、XML、HTML和test文本等格式发送和接收数据。 AJAX最吸…

vue3 之 商城项目—登陆

整体认识 登陆页面的主要功能就是表单校验和登陆登出业务 路由配置 模版 <script setup></script><template><div><header class"login-header"><div class"container m-top-20"><h1 class"logo"&g…

【开源】基于JAVA+Vue+SpringBoot的智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

电子电器架构 —— 区域控制器是未来架构的正解吗?

电子电器架构 —— 区域控制器是未来架构的正解吗? 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶…

每日五道java面试题之java基础篇(一)

第一题 什么是java? PS&#xff1a;碎怂 Java&#xff0c;有啥好介绍的。哦&#xff0c;⾯试啊。 Java 是⼀⻔⾯向对象的编程语⾔&#xff0c;不仅吸收了 C语⾔的各种优点&#xff0c;还摒弃了 C⾥难以理解的多继承、指针等概念&#xff0c;因此 Java 语⾔具有功能强⼤和简单易…

中联重科舞动央视春晚舞台,长沙制造迎来高光时刻

文 | 螳螂观察 作者 | 陈淼 “龙行龘龘&#xff0c;欣欣家国”。癸卯兔年的腊月三十晚八点&#xff0c;央视龙年春晚如约而至。 这一次&#xff0c;龙年春晚以北京为主会场&#xff0c;联动辽宁沈阳、湖南长沙、陕西西安、新疆喀什&#xff0c;在除夕为全球华人奉上了精彩演…

基于 multiprocessing.dummy 的多线程池与单线程访问多网页的比较示例

一、示例代码&#xff1a; from multiprocessing.dummy import Pool as ThreadPool import time import requestsurls [ # URL队列&#xff0c;通过多线程访问http://www.python.org,http://www.python.org/about/,http://www.…

三、搜索与图论

DFS 排列数字 #include<iostream> using namespace std; const int N 10; int a[N], b[N]; int n;void dfs(int u){if(u > n){for(int i 1; i < n; i)cout<<a[i]<<" ";cout<<endl;return;}for(int i 1; i < n; i){if(!b[i]){b[…

ubuntu篇---ubuntu安装python3.9

ubuntu篇—ubuntu安装python3.9 在ubuntu上安装Python有两种方法:在线安装和源码编译安装。 方法1&#xff1a;使用apt在线安装 1.更新软件包列表并安装必备组件&#xff1a; $ sudo apt update $ sudo apt install software-properties-common2.将Deadsnakes PPA添加到系统…

LLM之LangChain(七)| 使用LangChain,LangSmith实现Prompt工程ToT

如下图所示&#xff0c;LLM仍然是自治代理的backbone&#xff0c;可以通过给LLM增加以下模块来增强LLM功能: Prompter AgentChecker ModuleMemory moduleToT controller 当解决具体问题时&#xff0c;这些模块与LLM进行多轮对话。这是基于LLM的自治代理的典型情况&#xff0c;…