前端页面布局之【响应式布局】

news/2025/2/13 6:04:21/

目录

  • 🌟前言
  • 🌟优点
  • 🌟缺点
  • 🌟@media兼容性
  • 🌟利用CSS3-Media Query实现响应式布局
  • 🌟常见的媒体类型
  • 🌟常见的操作符
  • 🌟属性值
  • 🌟设备检测
  • 🌟响应式阈值选取
  • 🌟简单案例查看
  • 🌟写在最后

在这里插入图片描述

🌟前言

现在很流行的一个设计理念,随着移动互联网的盛行,为解决如今各式各样的浏览器分辨率以及不同移动设备的显示效果,设计师提出了响应式布局的设计方案。所谓的响应式布局,就是一个网站能够兼容多个终端——而不是为每个终端做一个特定的版本。也就说一个页面可以在多个终端呈现出你想要的效果,能够兼容各个终端。

🌟优点

  • 面对不同分辨率设备灵活性强
  • 能够快捷解决多设备显示适应问题
  • 根据不同的显示器调整设计最适合用户浏览习惯的页面

🌟缺点

  • 兼容各种设备工作量大,效率低下
  • 代码累赘,会出现隐藏无用的元素,加载时间加长
  • 其实这是一种折衷性质的设计解决方案,多方面因素影响而达不到最佳效果
  • 因为要适应不同的设备,页面的结构可能会有所不同,会导致页面的辨识度不强

🌟@media兼容性

在这里插入图片描述

ie8及以下不支持 @media

Respond.js可帮助IE6-8兼容 "min/max-width" 媒体查询条件: Respond.js

使用方法:在页面中所有css文件的引用位置之后引用Respond.js。而且Respond.js的引用得越早,用户看到页面闪烁的机会越小。

🌟利用CSS3-Media Query实现响应式布局

  • media query:

通过不同的媒体类型和条件定义样式表规则。媒体查询让CSS可以更精确作用于不同的媒体类型和同一媒体的不同条件

  • 语法结构及用法:

@media设备名 only (选取条件) not (选取条件) and(设备选取条件),设备二{sRules}

  • 在link中使用@media
    • screen:指的是一种媒体类型;
    • and:被称为关键词,与其相似的还有not,only。可能的操作符
    • max-width:600px这个就是属性值,媒体特性,也就是就是媒体条件。
<link rel="stylesheet" type="text/css" media="screen and (max-width:     600px)"href="link.css"/>
  • 在样式表中内嵌 @media
@media screen and (max-width: 600px) {
选择器 {属性:属性值;}
}

🌟常见的媒体类型

描述
all默认。适用于所有设备。
print打印预览模式/打印页。
screen计算机屏幕。

🌟常见的操作符

描述
and逻辑与,连接设备名与选择条件、选择条件1与选择条件2。
not排除某种设备
only限定某种设备类型
,设备列表

🌟属性值

媒体特性可用媒体类型接受min/max简介
width<length>视觉屏幕/触摸设备yes定义输出设备中的页面可见区域宽度(单位一般为px)
heigth<length>视觉屏幕/触摸设备yes定义输出设备中的页面可见区域高度(单位一般为px)
device-width<length>视觉屏幕/触摸设备yes定义输出设备的屏幕可见宽度(单位一般为px)
device-heigth<length>视觉屏幕/触摸设备yes定义输出设备的屏幕可见高度(单位一般为px)
orientationportrait /landscape位图介质类型no定义’height’是否大于或等于’width’。值portrait代表是,landscape代表否即设,备手持方向:portait为横向,landscape为竖向
aspect-ratio<ratio>位图介质类型yes定义’width’与’height’的比率,即浏览器的长宽比
device-aspect-ratio<ratio>位图介质类型yes定义’device-width’与’device-height’的比率,即设备屏幕长宽比。如常见的显示器比率:4/3, 16/9,16/10
color<integer>视觉媒体yes定义每一组输出设备的彩色原件个数。如果不是彩色设备,则值等于0
color-index<integer>视觉媒体yes定义在输出设备的彩色查询表中的条目数。如果没有使用彩色查询表,则值等于0
monochrome<integer>视觉媒体yes定义在一个单色框架缓冲区中每像素包含的单色原件个数。如果不是单色设备,则值等于0
resolution<resolution>位图介质类型yes定义设备的分辨率。如:96dpi,300dpi,118dpcm
scanprogressive / interlace电视类no定义电视类设备的扫描工序, progressive逐行扫描,interlace隔行扫描
grid<integer>栅格设备no用来查询输出设备是否使用栅格或点阵。只有1和0才是有效值,1代表是,0代表否

🌟设备检测

  • Phone
<link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="iphone.css" />
  • iPad
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css" type="text/css" />
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css"  type="text/css" />
  • android
/*240px的宽度*/
<link rel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" type="text/css" />
/*360px的宽度*/
<link rel="stylesheet" media="only screen and (min-device-width:241px) and (max-device-width:360px)" href="android360.css" type="text/css" />
/*480px的宽度*/
<link rel="stylesheet" media="only screen and (min-device-width:361px) and (max-device-width:480px)" href="android480.css" type="text/css" />

🌟响应式阈值选取

响应式的阈值即不同设备宽度的临界值,该值由当前市面上设备分辨率比例得出,详见Statcounter:

阈值内宽设备描述
<768pxauto手机超小屏幕
≥768px750px平板小屏幕
≥992px970px桌面显示器中等屏幕
≥1200px1170px大桌面显示器大屏幕

🌟简单案例查看

F12打开控制台,控制台置与浏览器右侧,拖动观察页面变化

案例一:StatCounter Global Stats - Screen Resolution Market Share

案例二:苹果官方

案例三:Bootstrap

🌟写在最后

更多前端知识请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

✨原创不易,还希望各位大佬支持一下!
👍 点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!


http://www.ppmy.cn/news/1155152.html

相关文章

GOPATH和Go Modules

Go语言的包依赖管理经历了几次变革 最早的时候&#xff0c;Go所依赖的所有的第三方库都放在GOPATH目录下面 go v1.5引入vendor模式&#xff0c;如果项目目录下有vendor目录&#xff0c;那么go工具链会优先使用vendor内的包进行编译、测试等 go v1.11开始&#xff0c;引入Go …

王阳明学习笔记

王阳明(一)溺 少年时五溺 任侠、骑射、辞章、神仙、佛氏。 始归正于圣贤之习。 今天的人们需要王阳明吗 35岁王阳明的至暗时刻&#xff0c;投江之前因言遭到了宦官的迫害&#xff0c;熬过酷刑&#xff0c;被贬放&#xff0c;留下了告终词和两首绝命诗。 1472王阳明出生在浙江…

Linux | 关于入门Linux你有必要了解的指令

目录 前言 1、ls指令 2、pwd指令 3、cd指令 4、touch指令 5、stat指令 6、mkdir指令 7、rmdir 与 rm指令 8、man指令 9、cp指令 10、mv指令 11、cat指令 &#xff08;1&#xff09;输入重定向 &#xff08;2&#xff09;输出重定向与追加重定向 12、less指令 1…

Yakit工具篇:简介和安装使用

简介(来自官方文档) 基于安全融合的理念&#xff0c;Yaklang.io 团队研发出了安全领域垂直语言Yaklang&#xff0c;对于一些无法原生集成在Yak平台中的产品/工具&#xff0c;利用Yaklang可以重新编写 他们的“高质量替代”。对于一些生态完整且认可度较高的产品&#xff0c;Y…

嵌入式实时操作系统的设计与开发(轮询系统学习)

轮询系统具有以下工作特点&#xff1a;系统完成一个轮询的时间取决于循环中需要执行的函数个数。此外&#xff0c;轮询的次序是静态固定的&#xff0c;在运行时不能进行动态调整。 典型系统 许多工业线程网络中&#xff0c;由于需要控制的设备较多、相互距离又较远&#xff0…

LeetCode每日一题:1488. 避免洪水泛滥(2023.10.13 C++)

目录 1488. 避免洪水泛滥 实现代码与解析&#xff1a; 贪心 原理思路&#xff1a; 1488. 避免洪水泛滥 题目描述&#xff1a; 你的国家有无数个湖泊&#xff0c;所有湖泊一开始都是空的。当第 n 个湖泊下雨前是空的&#xff0c;那么它就会装满水。如果第 n 个湖泊下雨前是…

C++——C++入门

C 前言一、认识C二、C入门C关键字(C98)命名空间命名空间定义命名空间使用 C输入&输出缺省参数缺省参数概念缺省参数分类 函数重载函数重载概念C支持函数重载的原理--名字修饰(name Mangling) 总结 前言 C的学习开始啦&#xff01; 来吧~让我们拥抱更广阔的知识海洋&#x…

解决:由于找不到 VCRUNTIME140_.dll,无法继续执行代码。重新安装程序可能会解决此问题

最近我在安装一个软件时&#xff0c;遇到过这样的问题“由于找不到 VCRUNTIME140 1.dll&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题”。 要解决这个问题&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 重新安装程序&#xff1a; 尝试重新安装使用…