CSS基础: rem和媒体查询

2024-06-18 21:18

本文主要是介绍CSS基础: rem和媒体查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

rem单位

em 单位

首先说一个单位:em

em 值的大小是动态的。当定义或继承font-size属性时,1em等于该元素的字体大小。如果你在网页中任何地方都没有设置文字大小的话,那它将等于浏览器默认文字大小,通常是16px。所以通常1em = 16px。2em = 32px。 如果你设置了body元素的字体大小为20px,那1em = 20px、2em = 40px。那个2就是当前em大小的倍数。

简单的说em是父元素字体的大小,和px不同,毕竟px象素是一个标准的单位,而em是一个相对的单位,来一个例子演示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试文档</title><style>div:nth-of-type(1){font-size: 48px;}div:nth-of-type(1)  p{width: 1em;height: 1em;background-color: green;}div:nth-of-type(2){font-size: 24px;}div:nth-of-type(2) p{width: 1em;height: 1em;background-color: red;}</style>
</head>
<body><div><p></p>
</div><div><p></p>
</div></body>
</html>

在这里插入图片描述

可以看出在元素上设置完em的大小的时候会影响自己子元素的em的值。

rem

不同于em因为rem是根据html元素在字体大小作为参考的。

这个时候又有疑问了,既然是基于html的标准,那么直接在html上定义em不就行了,为什么还要来一个rem这个单位?有必要吗?

很有必要,因为rem是基于html元素的,不会被中间的元素所影响,比如:

<html><body><div><p>  </p></div></body>
</html>

如果定义号rem为24px,无论body还是最里面的p标签无论如何修改其本身font-size,其子类的1rem还是为24px。但是em就不同了,比如html定义font-size=24px。然后body=0.5em,那么div的1em就是12px了。毕竟em受父类标签的影响。

演示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试文档</title><style>html{font-size: 24px;}div:nth-of-type(1){font-size: 2em;}div:nth-of-type(1)  p{width: 1em;height: 1em;background-color: green;}div:nth-of-type(2){font-size: 2rem;}div:nth-of-type(2) p{width: 1rem;height: 1rem;background-color: red;}</style>
</head>
<body><div><p></p>
</div><div><p></p>
</div></body>
</html>

在这里插入图片描述

可以看出第一个div下的p标签1em变成了48px了。所以可以看出虽然em也是相对单位,但是其会被其父类影响。而这个时候就需要一个更加稳定的相对单位rem。

为什么要了解rem呢?因为可以对网页设置的时候可以用rem作为单位,可以修改rem这个相对单位的真实大小来修改网页呈现的状态。比如苏宁易购的网页就是通过这种凡是实现页面元素根据窗口变大变小的。

在这里插入图片描述

媒体查询

媒体查询(media query)是CSS3的新语法。

格式:

@media mediatype  and | not |only(media feature){.....
}
  • @media 开头这个是格式要求

  • mediatype是媒体类型,具体有:

    描述
    all用于所有设备
    print用于打印机或者打印预览
    screen用于电脑屏幕,平板电脑,智能手机等
  • 关键字and , not ,only作为条件的逻辑复合

    关键字描述
    and和,且的意思
    not非的意思
    only指特定的媒体类型
  • media feature 媒体的特性:

在这里插入图片描述

​ 上面截图中解释一下min和max,举例说一下,那就是min-width和max-width。

​ max-width的意思以小于等于这个值,而min-width是大于等于这个值。

还是老规矩来一个演示:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试文档</title><style>div{height: 200px;}@media screen and (max-width: 800px){div{background-color: green;}}@media screen and (max-width: 500px){div{background-color: red;}}</style>
</head>
<body>
<div>
</div>
</body>
</html>

在这里插入图片描述

可以看出媒体查询可以根据网页视口的大小而改变一些css的样式,所以很多时候rem的和媒体查询两个相互结合就可以实现了页面变化而呈现的元素也会成缩放。

现在演示一窗口变化,字体也在变化的例子。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试文档</title><style>div{width: 750px;margin: 10px auto;font-size: 1rem;background-color: #55a532;}@media screen and (min-width: 750px){html{font-size: 48px;}}@media screen and (min-width: 500px){div{font-size: 24px;}}</style>
</head>
<body>
<div>好人无敌。
</div>
</body>
</html>

在这里插入图片描述

引入资源

当样式比较繁多的时候,开发者针对不同的媒体使用不同的css样式表,原理也是在link的时候通过媒体查询进行判断,然后引入不同的css文件。

格式如下:

<link rel="stylesheet" media="mediatype  and | not |only(media feature)" href="路径">

演示:

首先写一个css1.css样式表。

div{width: 100%;height: 20px;}
div:nth-child(1){background-color: red;
}
div:nth-child(2){background-color: green;
}

再来一个css2.css

div{float: left;width: 50%;height: 20px;}
div:nth-child(1){background-color: red;
}
div:nth-child(2){background-color: green;
}

最后来一个html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试文档</title><link rel="stylesheet" media="screen and (min-width:500px)" href="css2.css"><link rel="stylesheet" media="screen and (max-width:500px)" href="css1.css"></head>
<body>
<div></div>
<div></div>
</body>
</html>

在这里插入图片描述

这篇关于CSS基础: rem和媒体查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073080

相关文章

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

房产证 不动产查询

陕西政务服务网(便民服务)陕西政务服务网(手机版?更直观)不动产权证书|不动产登记证明(电子证照)商品房合同备案查询权利人查询

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

ps基础入门

1.基础      1.1新建文件      1.2创建指定形状      1.4移动工具          1.41移动画布中的任意元素          1.42移动画布          1.43修改画布大小          1.44修改图像大小      1.5框选工具      1.6矩形工具      1.7图层          1.71图层颜色修改          1

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN