CSS-自适应网页使用@media和rem

@media 查询

@media 媒体查询选择性加载css,意思是自动探测屏幕宽度,然后加载相应的CSS文件。可以针对不同的屏幕尺寸设置不同的样式,特别是需要设置设计响应式的页面,@media 是个不错的选择

用法:

 @media 设备类型 and (设备特性-宽度) {
   // css 样式
 } //设备类型有很多 这是screen是显示器的意思

@media screen and (min-1200px){//>=1200px的设备} 
@media screen and (min- 960px) and (max-1199px) {//<=1199px and >=960px的设备:PC端;}
@media screen and (min- 768px) and (max-959px) {//<=959px and >=768px的设备:PC端;}
@media screen and (min- 640px) and (max-767px) {//<=767px and >=640px的设备:平板端或者手机横屏;}
@media screen and (min- 480px) and (max-639px) {//<=639px and >=480px的设备:手机横屏;}
@media screen and (min- 320px) and (max-479px) {//<=479px and >=320px的设备:手机竖屏;}
@media screen and (min- 240px) and (max-319px) {//<=479px and >=320px的设备:手机竖屏;}
@media screen and (max-239px){//<=239px的设备:手机竖屏}

注意:单独使用min和max时使用顺序的 从上往下, min-width 从小到大 ,max-width 从大到小

Rem 像素单位

rem是根据网页根元素的字体大小来定义的若此时html{ font-size:14px} 那么在页面中1rem就表示14px

在PC端使用rem的一些弊端:

  1. 兼容性,pc端兼容性要求还是挺高的
  2. 计算,rem作为单位需要进行简单的计算的
  3. pc端浏览器大小是会变化的,每次变化都需要重新设置跟字体的大小
  4. pc端字体不能跟随浏览器大小来定(谷歌对最小字体大小是有限制的),而且pc端自适应主要是宽度吧,rem自适应是所有的,
  5. 我自己在使用还受到行高的影响,很是无奈啊

通常在使用rem时要结合js来动态设置根元素的字体大小

// 绑定到窗口的这个事件中
window.onresize(function (){
let designSize = 1920; // 设计图尺寸
let cW = document.documentElement.clientWidth;// 窗口宽度
let rem = cW * 100 / designSize;
document.documentElement.style.fontSize = rem + 'px';
});

(jquery: $(window).resize(function(){ //code }); )

//为什么要*100? 意思是设置根元素字体默认为100px,因为众多浏览器默认字体大小是不确定,谷歌12px一下默认为12px 这里设置为100,避免在各个浏览器出现样式错乱问题 在使用时
若设计图的尺寸是200px使用rem 写为2rem就可以了

原文地址:https://www.cnblogs.com/yangchin9/p/10780856.html