We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在介绍响应式布局之前,先讲讲响应式布局产生的原因。由于存在各种不同分辨率的设备,在开发人员采用css渲染页面的时候展示页面的布局也需要随之改变,比如:在PC端屏幕尺寸大,字体可以显示20px正好,但是移动端字体20px就很大。因此,对于不同的设备,我们需要不同的布局方案。但是这又存在一个很大的问题,市场上的设备非常多,难道每一个设备都要编写不同的css样式吗?那工作量也太大了。因此,还需要一套较通用的响应式布局方案。
响应式设计
使得一个网站同时适配 多种设备 和 多个屏幕,让网站的布局和功能随用户的使用环境(屏幕大小、输出方式、设备/浏览器能力而变化),使其视觉合理,交互方式符合习惯。如使得内容区块可伸缩与自由排布,边距适应页面尺寸,图片适应比例变化,能够自动隐藏/部分显示内容,能自动折叠导航和菜单。
在开始介绍响应式布局前,先介绍一下逻辑像素和物理像素。
物理像素
物理像素也叫设备像素,是设备屏幕实际拥有的像素点,单位px(Pixel )。一个设备的像素点个数在生产时就固定了。比如iPhone 5的分辨率640 x 1136px,那么水平方向上有640个像素点,竖直方向上有1136个像素点。
逻辑像素
逻辑像素也叫设备独立像素。可以理解为反映在css里的像素点,单位也是px,是浏览器使用的抽象单位,主要用来在网页上绘制内容。也可以说css px是专门为web开发者提出的一个抽象概念,也只跟我们平时写的css样式有关,与分辨率(比如720px*1280px)里的px没关系。
DevicePixelRadio 也叫像素比,window.devicePixelRatio是设备上物理像素和逻辑像素的比例。公式表示就是window.devicePixelRatio = 物理像素/逻辑像素。
注意:
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
❗❓问题:
常规的css大小单位是px,假设需要让图片占满整个分辨率为100*100px的屏幕,像素比是1,那么我们就需要设置图片的大小为100*100px。但是当另一个分辨率为200*200px,像素比为1的屏幕打开这个网页时,就会发现图片只占屏幕一半。这就是常规的css单位px存在的问题,下面将介绍解决方案。
通过给不同分辨率的设备编写不同的样式实现响应式布局,用于解决不同设备不同分辨率之间兼容问题,一般是指PC、平板、手机设备之间较大的分辨率差异。
@media only screen and (min-width: 375px) and (max-width: 750px){ 样式1 }
布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。Flex布局,可以简便、完整、响应式地实现各种页面布局。
.box{ display: flex; }
教程见:[Flex教程](!https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html)
em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
**注意:**任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
所以我们在写CSS的时候,需要注意两点:
rem为元素设定字体大小时,相对的HTML根元素。集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。
var getFontSize = () => { let deviceWidth = document.documentElement.clientWidth; //获取逻辑像素 let FontSize = (20*(deviceWidth/320) > 40 ? 40 + "px" : 20*(deviceWidth/320) + "px") document.documentElement.style.fontSize = FontSize; //设置html字体大小 } window.addEventListener("load", getFontSize) window.addEventListener("resize", getFontSize)
视口是浏览器中用于呈现网页的区域,移动端的视口通常指的是 布局视口
使用 css 预处理器把设计稿尺寸转换为 vw 单位,包括 文本,布局高宽,间距 等,使得这些元素能够随视口大小自适应调整。
#box { width: 50vw; height: 50vh; margin: 25vh auto; }
%
相对于父元素的大小占比。
1、对于普通定位元素就是我们理解的父元素
2、对于position: absolute;的元素是相对于已定位的父元素
position: absolute;
3、对于position: fixed;的元素是相对于ViewPort(可视窗口)
position: fixed;
.div { width: 100px; } .div div { width: 80%; //80px }
参考文章:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
在介绍响应式布局之前,先讲讲响应式布局产生的原因。由于存在各种不同分辨率的设备,在开发人员采用css渲染页面的时候展示页面的布局也需要随之改变,比如:在PC端屏幕尺寸大,字体可以显示20px正好,但是移动端字体20px就很大。因此,对于不同的设备,我们需要不同的布局方案。但是这又存在一个很大的问题,市场上的设备非常多,难道每一个设备都要编写不同的css样式吗?那工作量也太大了。因此,还需要一套较通用的响应式布局方案。
响应式设计
使得一个网站同时适配 多种设备 和 多个屏幕,让网站的布局和功能随用户的使用环境(屏幕大小、输出方式、设备/浏览器能力而变化),使其视觉合理,交互方式符合习惯。如使得内容区块可伸缩与自由排布,边距适应页面尺寸,图片适应比例变化,能够自动隐藏/部分显示内容,能自动折叠导航和菜单。
在开始介绍响应式布局前,先介绍一下逻辑像素和物理像素。
物理像素和逻辑像素
物理像素
物理像素也叫设备像素,是设备屏幕实际拥有的像素点,单位px(Pixel )。一个设备的像素点个数在生产时就固定了。比如iPhone 5的分辨率640 x 1136px,那么水平方向上有640个像素点,竖直方向上有1136个像素点。
逻辑像素
逻辑像素也叫设备独立像素。可以理解为反映在css里的像素点,单位也是px,是浏览器使用的抽象单位,主要用来在网页上绘制内容。也可以说css px是专门为web开发者提出的一个抽象概念,也只跟我们平时写的css样式有关,与分辨率(比如720px*1280px)里的px没关系。
DevicePixelRadio
也叫像素比,window.devicePixelRatio是设备上物理像素和逻辑像素的比例。公式表示就是window.devicePixelRatio = 物理像素/逻辑像素。
注意:
❗❓问题:
常规的css大小单位是px,假设需要让图片占满整个分辨率为100*100px的屏幕,像素比是1,那么我们就需要设置图片的大小为100*100px。但是当另一个分辨率为200*200px,像素比为1的屏幕打开这个网页时,就会发现图片只占屏幕一半。这就是常规的css单位px存在的问题,下面将介绍解决方案。
响应式布局方案
媒体查询
通过给不同分辨率的设备编写不同的样式实现响应式布局,用于解决不同设备不同分辨率之间兼容问题,一般是指PC、平板、手机设备之间较大的分辨率差异。
flex
布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现。Flex布局,可以简便、完整、响应式地实现各种页面布局。
教程见:[Flex教程](!https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html)
em
em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。
**注意:**任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。
所以我们在写CSS的时候,需要注意两点:
rem
rem为元素设定字体大小时,相对的HTML根元素。集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。
vh/vw方案
视口是浏览器中用于呈现网页的区域,移动端的视口通常指的是 布局视口
使用 css 预处理器把设计稿尺寸转换为 vw 单位,包括 文本,布局高宽,间距 等,使得这些元素能够随视口大小自适应调整。
%
相对于父元素的大小占比。
1、对于普通定位元素就是我们理解的父元素
2、对于
position: absolute;
的元素是相对于已定位的父元素3、对于
position: fixed;
的元素是相对于ViewPort(可视窗口)参考文章:
The text was updated successfully, but these errors were encountered: