rem和Less

本文介绍了rem单位及其在解决页面元素响应式布局中的应用,详细讲解了媒体查询的概念、类型、关键字和特性,展示了如何结合媒体查询和rem实现元素在不同设备上的动态大小变化。此外,还探讨了Less预处理器的基础知识,如变量、嵌套和运算,以及在实际开发中的rem适配方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 rem

1.1 rem能解决什么问题

  1. 页面布局文字能否随着屏幕大小变化而变化?
  2. 流式布局和flex布局主要针对于宽度布局,那高度如何设置?
  3. 怎么样让屏幕发生变化的时候元素高度和宽度等比例缩放?

所以提出rem

1.2 rem是什么?

 rem(root em)是一个相对单位,类似于em,em是父元素字体大小。
 不同的是rem的基准是相对于html元素的字体大小。
 比如,根元素(html)设置font-size=12px;非根元素设置width:2rem;则换成px就是24px

  1. em相对于父元素的字体大小来说的
  2. rem相对于html元素字体大小来说的
  3. rem的优点就是可以通过修改html里面的文字大小来改变页面中元素的大小可以整体控制

2 媒体查询

媒体查询(Media Query)是CSS3新语法

  1. 使用@media查询,可以针对不同的媒体类型定义不同的样式。
  2. @media 可以针对不同的屏幕尺寸设置不同的样式。
  3. 当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。

语法:

@media mediatype and| not | only  (media feature){
	CSS-Coda;
}

eg:
@media screen and (max-width:800px){
// 在我们的屏幕上 并且 最大宽度是:800像素   设置我们想要的样式
	body{
		background-color:pink;
	}
}

用@media开头 注意@符号
mediatype 媒体类型
关键字 and not only
media feature 媒体特性 必须有小括号包含

2.1 mediatype查询类型

将不同的终端设备划分成不同的类型,称为媒体类型

解释说明
all用于所有设备
print用于打印机和打印预览
screen用于电脑屏幕,平板电脑,智能手机等

2.2 关键字

关键字将媒体类型或多个媒体特性连接到一起做为媒体查询的条件。

解释说明
and可以将多个媒体特性连接到一起,相对于“且”的意思
not排除某个媒体类型,相对于“非”的意思,可以省略
only指定某个特定的媒体类型,可以省略

2.3 媒体特性

每种媒体类型都具有各自不同的特性,根据不同媒体类型的媒体特性设置不同的展示风格。

解释说明
width定义输出设备中页面可见区域宽度
min-width定义输出设备中页面最小可见区域宽度
max-width定义输出设备中页面最大可见区域宽度

2.4 媒体查询+rem实现元素动态大小变化

  1. rem单位是跟着html来走的,有了rem页面元素可以设置不同大小尺寸
  2. 媒体查询可以根据不同设备宽度来修改样式
  3. 媒体查询+rem就可以实现不同设备宽度,实现页面元素大小的动态变化

2.5 引入资源

 当样式比较繁多的时候,我们可以针对不同的媒体使用不同stylesheets(样式表)
 原理,就是直接在link中判断设备的尺寸,然后引用不同的css文件。

以下案例:当我们屏幕大于等于640px以上的,我们让div 一行显示2个,当我们屏幕小于640px 我们让div一行显示一个
在这里插入图片描述
在这里插入图片描述

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    </style>
<!--    当我们屏幕大于等于640px以上的,我们让div 一行显示2个-->
<!--    当我们屏幕小于640px  我们让div一行显示一个-->
<!--    一个建议: 我们媒体查询最好的方法是从小到大-->
<!--    引入资源就是针对不同的屏幕尺寸  调用不同的CSS文件-->
    <link rel="stylesheet" href="style320.css" media="screen and (min-width:320px)">
    <link rel="stylesheet" href="style640.css" media="screen and (min-width:640px)">
</head>
<body>
    <div>1</div>
    <div>2</div>
</body>
</html>



//   style320.css
div{
    width: 100%;
    height: 100px;
}
div:nth-child(1)
{
    background-color: pink;
}
div:nth-child(2)
{
    background-color: #449fdb;
}

//  style640.css
div{
    width: 50%;
    height: 100px;
    float: left;
}
div:nth-child(1)
{
    background-color: pink;
}
div:nth-child(2)
{
    background-color: #449fdb;
}

3 Less基础

3.1 维护css弊端

 CSS是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。

  1. CSS需要书写大量看似没有逻辑的代码,CSS冗余是比较高的。
  2. 不方便维护及扩展,不利于重复。
  3. CSS没有很好的计算能力。
  4. 非前端开发工程师来讲,往往会因为缺乏CSS编写经验而很难写出组织良好且易于维护的CSS代码项目。

3.2 Less介绍

 Less(Leaner Style Sheets的缩写)是一门CSS扩展语言,也成为CSS预处理器。
 作为CSS的一种形式的扩展,它并没有减少CSS的功能,而是在现有的CSS语法上,为CSS加入程序式语言的特性。
 它在CSS的语法基础上,引入了变量,Mixin,运算以及函数等功能,大大简化了CSS的编写,并且降低了CSS的维护成本,就像它的名称所说的那样,Less可以让我们用更少的代码做更多的事情。
 常见的CSS预处理器:Sass、Less、Stylus
Less是一门CSS预处理语言,它扩展了CSS的动态特性。

3.3 Less 变量

变量是指没有固定的值,可以改变的。因为我们CSS中的一些颜色和数值等经常使用。

@变量名:值;

变量命名规范:

  1. 必须有@为前缀
  2. 不能包含特殊字符
  3. 不能以数字开头,大小写敏感
    在这里插入图片描述
    生成CSS文件使用。

3.4 Less嵌套

  1 后代
在这里插入图片描述
  2 交集|伪类|伪元素选择器
在这里插入图片描述

3.5 Less运算

在这里插入图片描述
注意:

  1. 乘号(*)和除号(/)的写法
  2. 运算符中间左右有个空格隔开1px + 5
  3. 对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位
  4. 如果两个值之间只有一个值有单位,则运算结果就取该单位

3.6 rem实际开发适配方案

3.6.1 动态设置html标签font-size大小

在这里插入图片描述

3.6.2 元素大小取值方法

在这里插入图片描述

3.6.3 简洁高效的rem适配方案flexible.js

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值