前端中常用的几种单位写法及其解释

前端单位的几种写法及其解释

在前端开发中,单位的选择对于页面的布局、元素的尺寸和响应式设计至关重要。CSS提供了多种单位,每种单位都有其特定的用途和适用场景。本文将介绍前端开发中常见的几种单位,并解释它们的使用方法和注意事项。

单位的几种写法

1. 像素(px)

定义:像素是屏幕上用于显示图像的最小单位,也是CSS中最基本的单位之一。

使用场景:像素单位适用于需要精确控制元素尺寸的场合,如图标、按钮等UI元素的宽高。

注意事项:由于像素是相对于屏幕分辨率的,因此在不同分辨率的设备上,使用像素单位可能会导致元素尺寸的差异。在响应式设计中,尽量避免使用像素单位来定义布局宽度。

2. 百分比(%)

定义:百分比是一个相对单位,它表示相对于父元素尺寸的比例。

使用场景:百分比单位适用于需要相对于父元素进行布局的场合,如宽度、高度、边距等。

注意事项:使用百分比单位时,需要确保父元素的尺寸已经确定,否则可能会导致布局混乱。此外,百分比单位在嵌套层级较多的情况下,计算会变得复杂。

3. 视口单位(vw、vh、vmin、vmax)
  • vw:视口宽度的1%。
  • vh:视口高度的1%。
  • vmin:视口宽度和高度中较小的那个的1%。
  • vmax:视口宽度和高度中较大的那个的1%。

使用场景:视口单位适用于需要相对于视口(浏览器窗口)进行布局的场合,如全屏背景、响应式布局等。

注意事项:视口单位在响应式设计中非常有用,因为它们会根据视口大小自动调整。但是,在需要精确控制元素尺寸的场合,视口单位可能不够精确。

4. em 和 rem
  • em:相对于当前元素的字体尺寸。
  • rem:相对于根元素(html元素)的字体尺寸。

使用场景:em和rem单位适用于需要相对于字体大小进行布局的场合,如文本大小、边距、内边距等。

注意事项:使用em和rem单位时,需要注意当前元素的字体大小以及根元素的字体大小。此外,由于em和rem单位是基于字体大小的,因此在不同字体大小的元素上,使用相同的em或rem值可能会导致不同的尺寸效果。

代码案例的详细解释

1. 像素(px)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pixel Example</title>
    <style>
        .box {
            width: 200px; /* 设置元素宽度为200像素 */
            height: 100px; /* 设置元素高度为100像素 */
            background-color: lightblue; /* 设置背景颜色为浅蓝色 */
        }
    </style>
</head>
<body>
    <div class="box"></div> <!-- 应用.box类的div元素 -->
</body>
</html>

2. 百分比(%)

<!-- ...(省略了与上一个例子相同的HTML结构部分)... -->
<style>
    .container {
        width: 80%; /* 设置容器宽度为父元素宽度的80% */
        background-color: lightgray; /* 设置背景颜色为浅灰色 */
    }
    .box {
        width: 50%; /* 设置元素宽度为.container宽度的50% */
        height: 50%; /* 设置元素高度为.container高度的50% */
        background-color: lightcoral; /* 设置背景颜色为浅珊瑚色 */
    }
</style>
<body>
    <div class="container"> <!-- 应用.container类的div元素 -->
        <div class="box"></div> <!-- 应用.box类的div元素,作为.container的子元素 -->
    </div>
</body>

详细解释

  • .container类设置了宽度为父元素(通常是body或最近的块级祖先元素)宽度的80%。
  • .box类设置了宽度和高度分别为.container宽度和高度的50%。这意味着.box的尺寸将基于.container的尺寸动态计算。
  • 由于.container没有显式设置高度,它将默认扩展到包含其内容所需的高度,或者如果内容不足以填满父元素,则可能采用父元素的高度(取决于其他CSS属性,如heightmin-heightmax-height等)。
  • 在这个例子中,.box的尺寸将基于.container的实际尺寸动态调整,而.container的尺寸将基于其父元素(通常是body)的尺寸动态调整。

3. 视口单位(vw, vh)

<!-- ...(省略了与上一个例子相同的HTML结构部分)... -->
<style>
    .box {
        width: 50vw; /* 设置元素宽度为视口宽度的50% */
        height: 50vh; /* 设置元素高度为视口高度的50% */
        background-color: lightgreen; /* 设置背景颜色为浅绿色 */
    }
</style>
<body>
    <div class="box"></div> <!-- 应用.box类的div元素 -->
</body>

详细解释

  • vwvh是视口单位,分别表示视口宽度的1%和视口高度的1%。
  • .box类设置了宽度为视口宽度的50%,高度为视口高度的50%。这意味着无论视口(浏览器窗口)的大小如何变化,.box的尺寸都将始终占据视口的一半。
  • 视口单位非常适合用于创建响应式设计,因为它们允许元素根据视口的大小动态调整尺寸。

4. em 和 rem

<!-- ...(省略了与上一个例子相同的HTML结构部分,但包含<html>标签内的font-size设置)... -->
<style>
    html {
        font-size: 16px; /* 设置根元素的字体大小为16像素 */
    }
    .parent {
        font-size: 2em; /* 设置字体大小为根元素字体大小的2倍,即32像素 */
    }
    .child {
        font-size: 1rem; /* 设置字体大小为根元素字体大小,即16像素,不受.parent影响 */
        margin: 1em; /* 设置外边距为.parent字体大小的1倍,即32像素 */
    }
</style>
<body>
    <div class="parent">
        Parent text <div class="child">Child text</div>
    </div>
</body>

详细解释

  • html元素设置了根元素的字体大小为16像素。
  • .parent类使用了em单位来设置其字体大小。由于它是根元素的直接子元素(或间接子元素,但在此例中为直接子元素),2em将计算为根元素字体大小的2倍,即32像素。
  • .child类使用了rem单位来设置其字体大小。rem单位始终基于根元素的字体大小来计算,因此1rem在这里等于16像素,不受.parent字体大小的影响。
  • .child还使用了em单位来设置其外边距。但是,这里的em是相对于.child自己的直接父元素(即.parent)的字体大小来计算的。因此,1em在这里等于.parent的字体大小,即32像素。
  • 需要注意的是,虽然.child的字体大小不受.parent影响,但其外边距等基于em单位的属性将受到.parent字体大小的影响。这可能会导致一些布局上的混淆,特别是在嵌套层级较深的元素中。因此,在使用emrem单位时,需要仔细考虑它们如何与父元素和根元素的字体大小相互作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/887318.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes云原生存储解决方案之 Rook Ceph实践探究

Kubernetes云原生存储解决方案之 Rook Ceph实践探究 除了手动部署独立的 Ceph 集群并配置与Kubernetes进行对接外&#xff0c;Rook Ceph 支持直接在 Kubernetes 集群上部署 Ceph 集群。 通过Rook Ceph云原生存储编排平台&#xff0c;使得 Kubernetes 集群中启用高可用的 Ceph…

【记录】Excel|Excel 打印成 PDF 页数太多怎么办

【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题 文章目录 【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题方法一&#xff1a;调整页边距WPS OfficeMicrosoft Excel 方法二&#xff1a;优化页面布局调整列宽和行高使用“页面布局”视图合并单…

蓝牙定位的MATLAB仿真程序(基于信号强度,平面内的定位,四个蓝牙基站)

这段代码通过RSSI信号强度实现了蓝牙定位,展示了如何使用锚点位置和测量的信号强度来估计未知点的位置。它涵盖了信号衰减模型、距离计算和最小二乘法估计等基本概念。通过图形化输出,用户可以直观地看到真实位置与估计位置的关系。 文章目录 蓝牙定位原理蓝牙定位的原理优缺…

实验5 累加器实验

实验5 累加器实验 6.1实验目的 1、理解累加器的概念和作用。 2、连接运算器、存储器和累加器&#xff0c;熟悉计算机的数据通路。 3、掌握使用微命令执行各种操作的方法。 6.2实验要求 1、做好实验预习&#xff0c;读懂实验电路图&#xff0c;熟悉实验元器件的功能特性和使用…

网络基础 【HTTP】

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;Linux初窥门径⏪   &#x1f69a;代码仓库:Linux代码练习&#x1f69a; &#x1f4bb;操作环境&#xff1a; CentOS 7.6 华为云远程服务器 &#x1f339;关注我&#x1faf5;带你学习更多Linux知识…

保险丝基础知识

一、简介 保险丝&#xff08;fuse&#xff09;也被称为电流保险丝&#xff0c;它能够在电流异常升高到一定的高度和热度时&#xff0c;自动熔断切断电流&#xff0c;从而保护电路安全运行。 IEC127标准将它定义为“熔断体&#xff08;fuse-link)”。熔断体是由电阻率比较大而熔…

【Linux】进程间关系与守护进程

超出能力之外的事&#xff0c; 如果永远不去做&#xff0c; 那你就永远无法进步。 --- 乌龟大师 《功夫熊猫》--- 进程间关系与守护进程 1 进程组2 会话3 控制终端4 作业控制5 守护进程 1 进程组 之前我们提到了进程的概念&#xff0c; 其实每一个进程除了有一个进程 ID(P…

计算机网络的整体认识---网络协议,网络传输过程

计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起; 广域网WAN: 将远隔千里的计算机都连在一起;所谓 "局域网" 和 "广域网" 只是一个相…

MetaJUI v0.4 遇到的一些问题及解决办法记录

1、Unity3d 版本 2022.3.29f1。 2、MetaJUI v0.4 的下载&#xff0c;https://download.csdn.net/download/xingchengaiwei/89334848 3、将MetaJUI v0.4解压&#xff0c;用Unity3d 打开项目&#xff0c;会出现如下问题&#xff0c;按照图中提示操作即可。 4、打开工程后会出现…

【2024年最新】基于Spring Boot+vue的旅游管理系统lw+ppt

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…

【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux进程间通信 &#x1f4d2;1. 进程间通信介绍&#x1f4da;2. 什么是管道&#x1f4dc;3…

如何使用ssm实现民族大学创新学分管理系统分析与设计+vue

TOC ssm763民族大学创新学分管理系统分析与设计vue 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不…

(作业)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第3关Git 基础知识

任务编号 任务名称 任务描述 1 破冰活动 提交一份自我介绍。 2 实践项目 创建并提交一个项目。 破冰活动 提交一份自我介绍。 每位参与者提交一份自我介绍。 提交地址&#xff1a;https://github.com/InternLM/Tutorial 的 camp3 分支&#xff5e; 安装并设置git 克隆仓库并…

Java中的Junit、类加载时机与机制、反射、注解及枚举

目录 Java中的Junit、类加载时机与机制、反射、注解及枚举 Junit Junit介绍与使用 Junit注意事项 Junit其他注解 类加载时机与机制 类加载时机 类加载器介绍 获取类加载器对象 双亲委派机制和缓存机制 反射 获取类对象 获取类对象的构造方法 使用反射获取的构造方法创建对象 获…

Redis介绍及整合Spring

目录 Redis介绍 Spring与Redis集成 Redis介绍 Redis是内存数据库&#xff0c;Key-value型NOSQL数据库&#xff0c;项目上经常将一些不经常变化并且反复查询的数据放入Redis缓存&#xff0c;由于数据放在内存中&#xff0c;所以查询、维护的速度远远快于硬盘方式操作数据&#…

Yolov8轻量级网络改进GhostNet

1,理论部分 由于内存和计算资源有限,在移动设备上部署卷积神经网络 (CNN) 很困难。我们的目标是通过利用特征图中的冗余,为 CPU 和 GPU 等异构设备设计高效的神经网络,这在神经架构设计中很少被研究。对于类 CPU 设备,我们提出了一种新颖的 CPU 高效 Ghost (C-Ghost) …

国庆普及模拟赛-5

题目链接&#xff1a; file:///C:/Users/Administrator/Desktop/%E4%B8%8B%E5%8F%91%E6%96%87%E4%BB%B61005/20241005.pdf T1&#xff1a; 题目分析&#xff1a;不需要进行模拟&#xff0c;想要获得分数最大化&#xff0c;只需要将大的数据相加&#xff0c;再减去小的数据。 …

Android AMS介绍

注&#xff1a;本文为作者学习笔记&#xff0c;如有误&#xff0c;请各位大佬指点 系统进程运行环境的初始化 Context是一个抽象类&#xff0c;它可以访问application环境的全局信息和各种资源信息和类 context功能&#xff1a; 对Activity、Service生命周期的管理通过Intent发…

DenseNet算法:口腔癌识别

本文为为&#x1f517;365天深度学习训练营内部文章 原作者&#xff1a;K同学啊 一 DenseNet算法结构 其基本思路与ResNet一致&#xff0c;但是它建立的是前面所有层和后面层的密集连接&#xff0c;它的另一大特色是通过特征在channel上的连接来实现特征重用。 二 设计理念 三…

【黑马点评】0.环境配置--Redis6.2.6和可视化工具在Windows上的安装

黑马点评--0.Redis6.2.6在windows上的环境配置与可视化 0 前言1 下载安装2 解压后运行msi文件3 修改配置文件并打开Redis3.1 修改密码&#xff08;可选&#xff09;3.2 测试 4 Redis可视化&#xff08;可选&#xff09;4.1 Another Redis Desktop Manager下载安装4.2 连接Redis…