目录

1.长度单位(rem,vw/vh)

1.1rem介绍

1.2利用媒体查询对不同宽度屏幕设置html字号大小

1.3flexible.js

2.less

2.1.less公式实现px到rem单位转换

2.2.less嵌套写法后代选择器

2.3.less变量

2.4.less的导入

2.5.less的导出

2.6.less的禁止导出


1.长度单位(rem,vw/vh)

由于移动端不同屏幕大小的手机等设备过多,

对文字,图片盒子等用像素(px)单位不能随屏幕大小而变化大小,

会对使用者造成巨大困扰(字体图片过大,无法看到全部内容等).

同时百分比布局特点宽度自适应,高度固定,高度不能变化.

所以我们要对移动端进行适配.

适配方案有:rem,vw/vh.

1.1rem介绍

rem是相对单位
rem单位是相对于HTML标签的字号计算结果

1rem = 1HTML字号大小

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* rem默认是html字体大小,默认是16px *//* 使用场景:html字体变化,页面跟着一起变化,单位为rem */html{font-size: 20px;}.box {width: 10rem;height: 10rem;background-color: yellow;}</style>
</head><body><div class="box"></div>
</body></html>

1.2利用媒体查询对不同宽度屏幕设置html字号大小

通过媒体查询,调节宽度时,达到特定宽度时,body显示不同颜色.

注意:当出现不生效问题时,检查一下屏幕显示设置是否为100%设置,当为其他值时可能会不生效.

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 检测屏幕大小使用媒体查询@media *//* 检测屏幕宽度为320px时,body变成绿色 */@media (width:320px) {body {background-color: green;}}/* 检测屏幕宽度为375px时,body变成粉色 */@media (width:375px) {body {background-color: pink;}}/* 检测屏幕宽度为414px时body变成绿色 */@media (width:414px) {body {background-color: green;}}</style>
</head><body></body></html>

为了在不同屏幕宽度下适配,在我们目前rem布局方案中,

将网页等分成10份, HTML标签的字号为视口宽度的 1/10

代码如下:

px转化为rem:

rem等于px数除以一个rem的大小,如宽为190px在iPhone6/7/8中下rem为

190/37.5 rem=5.067rem

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 标准高为iphone6,7,8,宽375px屏幕分成十等分,一个宽为37.5 */@media (width:375px) {/* 设置html字体大小 */html {font-size: 37.5px;}}.box{width: 2rem;height: 2rem;background-color: pink;}/* 设计师说应用得是iphone6,7,8的大小 */.one{/* rem等于px数除以一个rem的大小,宽为190/37.5 */width: 5.067rem;height: 5.3334rem;background-color: red;}</style>
</head><body><div class="box"></div><!-- 测量的宽为180px高为200px,转换为rem --><div class="one"></div>
</body></html>

1.3flexible.js

通过上面的方法对不同设备一个个适配太慢了,我们引用一个名为flexible.js的js文件可以对所有屏幕大小进行适配;

注意:flexible.js的原理与上面相同, 原理:通过媒体查询设置html标签字体大小.

同时,script导入位置要在</body>标签之前.

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* rem=测量值/根字号大小 */.box {width: 2rem;height: 2rem;background-color: pink;}</style>
</head><body><div class="box"></div><!-- flexible 原理:通过媒体查询设置html标签字体大小,就不需要我们自己写媒体查询 --><script src="./js/flexible.js"></script>
</body></html>

2.less

由于css中不支持语句内像素转为rem的除法运算;

我们对vscode中下载一个less插件;我们使用Less运算写法完成px单位到rem单位的转换

Less是一个CSS预处理器, Less文件后缀是.less
扩充了 CSS 语言, 使 CSS 具备一定的逻辑性、计算能力。
注意:浏览器不识别Less代码,目前阶段,网页要引入对应的CSS文件,

对.less文件进行保存后会自动在相同目录下生成同名的.css文件,或者设置一个特定的输出文件夹;

2.1.less公式实现px到rem单位转换

注意:less中的除法要加括号.

.box {background-color: pink;width: (150/37.5rem);height: (150 / 37.5rem);// less中加减padding: 100 + 50px  100 - 50px;// less中乘除,注意除法要加括号margin: 10*10px (100 / 10px);}

2.2.less嵌套写法后代选择器

后代选择器在less中的写法,父盒子套子盒子;

伪类选择器和伪元素在less中的写法.

&:hover::after;&表示当前包裹&的元素

// 后代选择器
.box {width: 900px;height: 1000px;.father {width: 800px;color: #fff;.son {color: red;}}
}// 伪类选择器和伪元素less中使用
.box {a {display: flex;justify-content: center;align-items: center;img {width: 100%;height: 100%;}
// &表示当前包裹我的元素&:hover::after {content: '';}span {font-size: 11px;color: #ccc;}}
}

2.3.less变量

变量:是一个容器,装东西

语法:@变量名:值;

调用方法:

在原本写值的地方,用 "@变量名"代替,如:

width: (250 / @baseSize);

用变量来代替那些用的较多,并且可能会更改的值;

// 变量:是一个容器,装东西// 语法:@变量名:值;@borderColor: 1px solid yellow;@baseSize: 37.5rem;.box {border: @borderColor;width: (250 / @baseSize);height: (230 / @baseSize);.left {width: 100/ @baseSize;height: 100/ @baseSize;background-color: pink;border-right: @borderColor;a {display: flex;justify-content: center;align-items: center;img {width: 100%;}span {font-size: (10 / @baseSize);}}}.right {width: 100/ @baseSize;height: 100/ @baseSize;background-color: blue;}}

2.4.less的导入

这是less之间的导入,用于多个less整合到一个less中.

@import './1.less'

/*less的导入*/
//导入的是less文件
//第一种写法
@import url(./1.less公式实现px到rem单位转换.less);
//第二种写法
@import './2.less嵌套写法后代选择器.less';
@import './3.less变量.less';

2.5.less的导出

配置EasyLess插件, 实现所有Less有相同的导出路径

配置插件: 设置 → 搜索EasyLess → 在setting.json中编辑 → 添加代码(注意,必须是双引号)

2.6.less的禁止导出

对于一些基础less,不需要我们直接导出css,

而是作为less导入到其他的less中使用,

由其他的less导出.如:base.less和nomalize.less

禁止导出语法:

//out:false

必须在less的第一行使用,否则不生效

//out:false
body{background-color: #fff;
}

5.移动适配(rem,less)相关推荐

  1. H5移动端适配 rem 和 vw 的区别

    当我们做H5移动端项目或移动官网时,要求要根据不同机型做等比例缩放 一.rem适配 rem是相对单位,是相对HTML根元素的 font-size 来决定它的大小,1rem 就等同于 html标签fon ...

  2. 移动端适配 rem

    前置知识: 物理像素(physical pixel,device pixel) 物理像素(设备像素),显示设备中一个最微小的物理部件.每个像素可以根据操作系统设置自己的颜色和亮度. 设备独立像素(de ...

  3. 移动web开发适配rem

    移动的meta标签 <meta  name="viewport" content="width=device-width, initial-scale=1,user ...

  4. rem适配的浏览器_移动端网页布局适配rem方案小结

    前言 根据 W3C 规范中对 1rem 的定义: 1rem 与等于根元素 font-size 的计算值.当明确规定根元素的 font-size 时,rem 单位以该属性的初始值作参照. 这就意味着 1 ...

  5. 使用Flexible.js实现手机端网页内容适配(rem适配法)

    曾几何时为了兼容IE低版本浏览器而头痛,以为到Mobile时代可以跟这些麻烦说拜拜.可没想到到了移动时代,为了处理各终端的适配而乱了手脚.对于混迹各社区的偶,时常发现大家拿手机淘宝的H5页面做讨论-- ...

  6. pc端 移动端适配rem插件方式

    vue-屏幕适配方案 一,PC端适配 开发PC端项目,通常会要求适应各种的屏幕尺寸,并且要求浏览器缩小页面等比例变化,因此就要求写出来的前端页面是能够自适应的. 利用webpack配置px2rem-l ...

  7. vue项目适配 rem

    1.安装插件 npm install postcss-px2rem px2rem-loader --svae 2.在vue.config.js内加入 // 引入等比适配插件 const px2rem ...

  8. 移动端 原生 js + canvas 实现刮奖效果(适配rem布局)

    效果 思路 使用 canvas 绘制刮奖灰色遮罩部分 监听 touchstart.touchmove 和 touchend 事件 在事件中处理擦除效果 rem 环境 本文的 rem 布局基础为:基于宽 ...

  9. h5 手机屏幕适配—REM

    一.rem.em和px之间的关系     使用rem之前,先得弄清楚rem.em和px之间的关系,特别是每一个单位的使用跟代码块的继承之间的关系: 单位 代码地址 运行后截图 说明 px https: ...

最新文章

  1. Pytorch源码与运行原理浅析--网络篇(一)
  2. 六个最佳的软件工程实践(基于构件的体系结构、可视化建模)
  3. LeetCode Hot100 ---- 链表专题专题
  4. 蓝桥杯2018初赛-哪天返回-模拟
  5. 【Matlab】利用diary记录日志/保存命令窗口输出
  6. python ip,Python IP处理模块IPy(转载)
  7. 程序员转讲师 | 你约我写
  8. 【嵌入式工具】Keil下载,安装,配置教程大全
  9. Qt读写Excel--QXlsx工作表显示/隐藏状态设置4
  10. java导出数据库_如何在Java中从整个数据库导出数据?
  11. linux 队列缓冲,linux驱动的等待队列(阻塞操作)和轮询(poll),缓冲区笔记
  12. 怎么做科研你懂吗?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  13. 拆卸台式计算机的顺序,台式电脑拆装与清灰教程,让电脑焕然一新|Crucial(英睿达)...
  14. [翻译]Convolutional Two-Stream Network Fusion for Video Action Recognition
  15. windows在此计算机上找不到系统映象,笔记本电脑没有系统映像怎么办
  16. C语言-链表-添加到链表尾部
  17. 70个JavaScript面试问题
  18. 可转债历史最低最高价格统计表
  19. C语言字符型变量的存储和取值
  20. RFID技术在服装领域的具体应用

热门文章

  1. 怎么在cmd中查看环境变量
  2. 【每日早报】2019/09/11
  3. m基于matlab的雷达信号分选技术研究,包括PRI分选器以及SDIF法
  4. Servlet 3特性:异步Servlet
  5. vue 事件修饰符 .passive 最通俗的理解
  6. PCBA打样方法和注意事项
  7. GAMES101-现代计算机图形学-闫令琪 作业2 反走样 antialiasing 抗锯齿
  8. java用redis缓存的步骤_Java 使用Redis缓存工具的图文详细方法
  9. 下载Android源代码
  10. 【数据的存储】浮点数在内存中的存储详解【超详细的保姆级别教程,让面试官心服口服】手撕浮点数存储使用方式