CSS面试题:说一说对rem的理解?

概述:

页面响应式用 rem 实现【根据设备屏幕宽度改变根元素fontsize】,设备自适应用 媒体查询 实现【根据设备屏幕宽度控制哪些样式class生效】

媒体查询实现:【页面结构需要变化时使用】

1、link元素中的CSS媒体查询【一般用于Js项目】

<!-- pc端,设备屏幕宽度大于等于901px时,pc端样式文件class生效,控制某些元素显示隐藏、字体rem值改变等 -->

<link rel="stylesheet" media="(min-width:901px)" href="./css/pc/index.css">

<!-- 移动端,设备屏幕宽度小于等于900px时,移动端样式文件class生效,控制某些元素显示隐藏、字体rem值改变等 -->

<link rel="stylesheet" media="(max-width:900px)" href="./css/pe/index.css">

2、样式表中的CSS媒体查询【一般用于Vue项目】

<!-- pc端 -->

@media screen and (min-width:901px){

body {

background-color: red;

}

}

<!-- 移动端 -->

@media screen and (max-width:900px){

body {

background-color: green;

}

}

rem原理:

百分比布局可实现响应式布局,而rem相当于百分比布局。无论设备可视窗口如何变化,始终设置rem为width的1/n,即实现了百分比布局。

rem公式:

方案一:1rem=100px【方便计算】

html.fontSize = 1rem = 设备屏幕宽度/(设计稿宽度/100),

1、分析阶段 --- 让设备屏幕宽度等于设计稿宽度,则1rem=100px,此时方便计算、编写设计稿元素宽度对应的rem。

2、执行阶段 --- 让设备屏幕宽度等于Js获取的设备屏幕宽度

方案二:1rem = 设计稿宽度/份数【需使用cssrem插件来方便计算】

1、分析阶段 --- html.fontSize = 1rem = 设计稿宽度/份数

2、执行阶段 --- html.fontSize = 1rem = 设备屏幕宽度/份数

3、页面元素的rem:nrem = 设计稿元素宽度/1rem

rem实现:

1、分析阶段,先根据设计稿宽度px计算1rem,再根据设计稿元素宽度px计算、编写页面元素的rem

2、执行阶段,Js先自动根据设备屏幕宽度计算1rem,再将1rem对应的px赋值给Html的fontsize,再根据编写好的页面元素的rem,计算实际页面元素的px

rem工具:

分析阶段:cssrem插件,把页面元素px自动计算成rem。需先在VSCode的配置文件中,根据设计稿宽度px计算1rem。

执行阶段:flexible.js库,将设备屏幕宽度分成了10份,根据设备屏幕宽度自动计算1rem。【Js项目在head中引入,Vue项目在main.js中引入】

相关推荐
qq_364371721 小时前
Vue 内置组件 keep-alive 中 LRU 缓存淘汰策略和实现
前端·vue.js·缓存
y先森2 小时前
CSS3中的弹性布局之侧轴的对齐方式
前端·css·css3
new出一个对象5 小时前
uniapp接入BMapGL百度地图
javascript·百度·uni-app
你挚爱的强哥6 小时前
✅✅✅【Vue.js】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本
javascript·vue.js·jquery
y先森7 小时前
CSS3中的伸缩盒模型(弹性盒子、弹性布局)之伸缩容器、伸缩项目、主轴方向、主轴换行方式、复合属性flex-flow
前端·css·css3
前端Hardy7 小时前
纯HTML&CSS实现3D旋转地球
前端·javascript·css·3d·html
susu10830189117 小时前
vue3中父div设置display flex,2个子div重叠
前端·javascript·vue.js
IT女孩儿8 小时前
CSS查缺补漏(补充上一条)
前端·css
吃杠碰小鸡9 小时前
commitlint校验git提交信息
前端
天天进步20159 小时前
Vue+Springboot用Websocket实现协同编辑
vue.js·spring boot·websocket