CSS&HTML面经专题——(四)移动端响应式布局

2021-10-26 15:34:05 浏览数 (1)

CSS&HTML面经专题——移动端响应式布局

1、Viewport视口

在移动端viewport视口(pc端没有这个概念)就是浏览器显示页面内容的屏幕区域。

在viewport中有两种视口,分别表示为:

  • visual viewport(视觉视口):浏览器内看到的网站的显示区域,用户可以通过缩放来查看网页,从而改变视觉视口。视觉视口不会影响布局视口的宽度和高度。 固定大小——跟屏幕大小相同,在上面。
  • layout viewport(布局视口):布局视口定义了pc网页在移动端的默认布局行为。因为通常pc的分辨率较大,所以布局视口的默认大小为980像素,可==通过document.documentElement.clientWidth获取==。

也就是说,在不设置网页viewport的情况下,pc端的网页默认会以布局视口为基准,在移动端进行展示。

现代网页需要将layout viewport设置成跟visual viewport等同大小,方便进行网页制作。

2、媒体查询 @media

可以针对不同的媒体类型定义不同的样式,从而实现响应式布局。(很多网站都是移动端一套样式/PC端一套样式)

代码语言:javascript复制
.container{ padding-left:15px; padding-right:15px; margin-left:auto; margin-right:auto;}

@media all and ( min-width : 768px ){
    .container{ max-width : 720px; }
}

@media all and ( min-width : 992px ){
    .container{ max-width : 960px; }
}

@media all and ( min-width : 1200px ){
    .container{ max-width : 1140px; }
}

复制代码

媒体查询的缺点也很明显,如果在浏览器大小改变时,需要改变的样式太多,那么多套代码会很繁琐

  • 注意:响应式代码写到要适配的CSS后面。

3、rem/ vh和vw / 流式布局

(2)rem布局——等比缩放布局(网易新闻)

​em : 是一个相对单位,1em等于当前元素或父元素的font-size值。

​rem : 是一个相对单位,1rem等于根元素的font-size值。

  • 于是想要自适应各种屏幕就需要动态设置font-size:
    • 通过JS重置font-size(以iPhone6为基准)
    • 这时候1rem在iPhone6下就是100px,在iPhone 6 plus下就是110.4px
    • 但在实际开发中,这样会导致默认font-size很大,相当于是html的font-size为100px了,这个时候就要重置一下body的font-size:16px
    • <script> /* layout viewport : document.documentElement.clientWidth iphone 6 : 375px iphone 6 plus : 414px iphone 6 : document.documentElement.clientWidth / 3.75 -> 100 iphone 6 plus : document.documentElement.clientWidth / 3.75 -> 110.4 */ var fontsize = document.documentElement.clientWidth / 3.75; document.documentElement.style.fontSize = fontsize 'px'; </script> 复制代码

    介绍一个小插件:vscode的 px to rem 快捷键:ALT Z

(3)vh/vw
  • vw:相对于视窗的宽度,视窗宽度是100vw
  • vh:相对于视窗的高度,视窗高度是100vh

如果在iphone 6 下想 =100px , 我应该设置多少个vw呢?

375px/100 = 3.75px 也就是1vw = 3.75px

所以100px 为 100/3.75 = 26.666667 vw

代码语言:javascript复制
html{ font-size:26.666667vw;}
body{ font-size:16px }
复制代码
(4)流式布局——百分比布局
  • 高度定死,宽度自适应,常用flex 对于大屏幕来说,用户体验并不是特别好,有些布局元素会显得很长

4、响应式布局和自适应布局的区别

自适应布局
(1)出现的背景

在PC时代初期,网页设计者都会设计固定宽度的页面,最开始的电脑显示器分辨率种类不多,因为当时电脑本来就少。后来显示器大屏小屏种类越来越多,还有笔记本、平板电脑,这种固定宽度的页面出现了问题。于是出现了一种新的布局方式,宽度自适应布局。我们平时谈论的自适应布局,大多指的就是宽度自适应布局。后来网页从PC延伸到了手机,以及 HTML5 标准的发布。自适应布局也从PC延伸到手机,成为网页设计时候的需求.

(2)概念

就是宽度自适用布局,在不同大小的设备上,随着屏幕宽度缩放,网页以等比例的形式缩放宽度(包括内容)),不管屏幕宽度为多少,网页主体排版布局总是一样的。它需要开发多套界面来适应不同的终端。

响应式布局
(1)出现的背景

自适应虽然成为网页设计的必要需求,但还是暴露出一个问题,如果屏幕太小,即使网页内容能够根据屏幕大小进行适配,但是在小屏幕上查看,会感觉内容过于拥挤,降低了用户体验。为了解决这个问题而衍生出来的概念就是响应式布局。它可以自动识别屏幕宽度、并做出相应调整。网页的排版布局和展示的内容会有所变动。

(2)概念

根据屏幕大小变化,页面的内容排版布局会自动调整变动,已呈现更好的用户体验。

5、rem,em,px的区别是什么?

px

绝对单位,页面按精确像素展示。

em

相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。

rem

相对单位,可理解为”root em”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9 支持。

0 人点赞