时间:2023-09-23 17:42:01 | 来源:网站运营
时间:2023-09-23 17:42:01 来源:网站运营
你必须知道的响应式布局:<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />width=device-width 视口为设备宽度(就是人设置的一个宽度)//不设置的话默认为980pxinitial-scale=1.0 初始化的视口大小是1.0倍maximum-scale=1.0 最大的倍数是1.0倍user-scalable=0 不允许缩放视口
这个视口的标签告诉浏览器怎么渲染网页。在这里,标签想表达的意思是:按照设备的宽度(device-width)来渲染网页内容。事实上,在支持这个标签的设备上给你看一看效果,你就明白了。img { max-width: 100%;}
回到手机上,刷新页面,结果比较符合预期了。 这里声明 max-width 规则,就是要保证所有图片最大显示为其自身的 100%(即最大只可以显示为自身那么大)。此时,如果包含图片的元素(比如包含图片的 body 或 div)比图片固有宽度小,图片会缩放占满最大可用空间。兼容的前缀:1 -ms-2 -moz-3 -o-4 -webkit-
中国用户的浏览器市场份额:div{ width:200px; height:300px; padding:10px; } div p{ width:50%; height:50%; padding:10%; } /*此时p的真实宽度是多少?*/
body { background-color: grey; }@media screen and (min-width:1200px){ body{ background-color: pink; }} @media screen and (min-width:700px) and (max-width:1200px){ body{ background-color: blue; }}@media screen and (max-width:700px){ body{ background-color: orange; }}
其中 @media 就表示媒体查询,查询现在看这个网页的设备是什么,以及它的宽度是多少。screen 表示看这个网页的设备是显示器,而不是残疾人听力设备、也不是打印机。后面用 and 符号罗列所有的可能性。 值得注意:媒体查询只能包裹选择器,不能包裹 k:v 对儿。rem 响应式布局思想
什么是 rem,它与 em 有何区别rem:当前页面中元素的 REM 单位的样式值都是针对于 HTML 元素的 font-size 的值进行动态计算的
body →font-size:20px; <div class="box1"> → font-size:2em; box1 <div class="box2"> → font-size:2em; box2 <div class="box3"> → font-size:2em; box3 </div> </div> </div>
@media screen and (min-width: 320px) { html {font-size: 14px;}}@media screen and (min-width: 360px) { html {font-size: 16px;}}@media screen and (min-width: 400px) { html {font-size: 18px;}}
运用场景如果我们做的 H5 页面只在移动端访问,这是因为 REM 不兼容低版本的浏览器。而如果移动端和 PC 端公用一套代码,建议使用流式布局。
如何做个 REM 响应式布局1、从 UI 设计师拿到 PSD 设计稿,然后在样式中给 HTML 设定一个 font-size 的值,我们一般都设置一个方便后面计算的值,例如:100px
html{ font-size:100px;//1rem=100px}
2、写页面,写样式 首先按照设计稿的尺寸来写样式,然后在写样式值的时候,需要把得到的像素值除以 100 计算出对应的 REM 的值。 值得注意的是:真实项目中外层盒子的宽度我们一般还是不写固定值,沿用流式布局法的思想,我们用百分比的方式布局margin:0 0.2rem;height:3rem;
3、根据当前屏幕的宽度和设计稿的宽度来计算我们 HTML 的 font-size 的值 例如:设计稿宽度为 640px,其中有一个部分是轮播图,它的尺寸是 600*300,在样式中给 HTML 设定一个 font-size 的值为 100px,则轮播图大小应该为 6rem×3rem,那如果手机屏幕宽度为 375px,其 font-size 应该设置为多少。375/640*100->fontsize=58.59375//此时轮播图能自适应手机屏幕大小
根据当前屏幕宽度和设计稿宽度的比例,动态计算一下当前宽度下的 fontsize 值应该是多少,如果 fontsize 的值改变了,之前设定的所有 REM 单位的值自动会跟着放大或者缩小。可以通过以下这段代码实现:<script>~function(){var desW=640,winW=document.documentElement.clientwidth,ratio=winW/desW;document.documentElement.style.fontSize=ratio*100+"px";}();</script>
但如果当前屏幕宽度大于设计稿宽度,图片会被拉长而失真,所以以上代码需要稍微做些修改://html部分<section id="main"><div class="box"></div></section>//js部分<script>~function(){var desW=640,winW=document.documentElement.clientwidth,ratio=winW/desW;var oMain=document.getElementById(main");if(winW>desW){oMain.style.width=desW+"px";oMain.style.margin="0 auto";return;}document.documentElement.style.fontSize=ratio*100+"px";}();</script>
作者:浪里行舟
链接:关于响应式布局,你必须要知道的
来源:GitHub
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明住处
关键词:响应,布局,须知