当前位置: 首页 > news >正文

表格宽度设置百分比_相对值(百分比和em)介绍

本博客介绍了以下各属性中的相对值以什么为基础:

1、transform:translateX、transform:translateY;

2、margin、padding;

3、width、height;

4、line-height;

5、top/bottom/left/right。


父元素宽高设置 width:300px;height:200px;

子元素宽高设置为 height:150px;width:100px;

父元素border厚度20px;

子元素的border厚度10px;

子元素和父元素设置为box-sizing:content-box;(默认就是content-box)

bomber:CSS中的content-box 与 border-box 的区别​zhuanlan.zhihu.com

em可以查看如下链接说明:

font-size​developer.mozilla.org
98acc078e56af2e0aa52497fb3936fc1.png

1、transform:translateX、transform:translateY:

MDN关于transform的介绍:

transform​developer.mozilla.org
98acc078e56af2e0aa52497fb3936fc1.png

博客有说过transform在inline元素中是无效的。

bomber:CSS的带文字居中分析​zhuanlan.zhihu.com

(1)用transform:translateX(50%)测试,可以看到最后计算绝对值是60;

这是由子元素自己的宽度加上两边的border厚度(100+10+10)×50%=60计算得到,所以transform:translateX的相对值(百分比)是以子元素自己的宽度为基础计算的。

98275589df528d6ad2b74e03690be45a.png

子元素自身设置为box-sizing:border-box;计算就不用考虑border厚度,因为宽度已经把border厚度包括了。

5a13bb56383a560dab0f175b3b30b8c5.png

如果没有给body设置宽度,就会按照body的自身宽度,也就是窗口宽度与border厚度来计算。(这里只示例了block元素,因为block是占用一行,所以会随着窗口变宽而变化)

daad5bc128a09e31f33dbaf1a56e38a7.png

(2)子元素自己设置font-size:20px;父元素font-size:10px;

用transform:translateX(0.5em)测试,可以看到最后计算绝对值是10;所以transform:translateX的相对值(em)是以子元素自己的字体大小为基础计算的。

9a76a1851ceeb12beee932cb13d9af4e.png

如果没有设置font-size,就会按照浏览器默认的字体大小 font-size:16px为计算基础;

1753b829ae49729afc6e1a460b86e095.png

(3)用transform:translateY(50%)测试,可以看到最后计算绝对值是85;

这是由子元素自己的高度height加上两边的border厚度(150+10+10)×50%=85计算得到,所以transform:translateY的相对值(百分比)是以子元素自己的高度height为基础计算的。

e93e7561c5c62647b79f9db1b2778da6.png

子元素自身设置为box-sizing:border-box;计算就不用考虑border厚度,因为高度已经把border厚度包括了。

86c5b064478b22fb84baeacbc566204c.png

如果没有给body设置高度,就会按照body的自身高度,这个高度由文档流的高度决定(这个例子中是200+20+20),与body自己的border(10+10)厚度来计算,height等于240px。

6b6af240185e0e89a8c818eff4f884a0.png

(4)子元素自己设置font-size:20px;父元素font-size:10px;

用transform:translateY(0.5em)测试,可以看到最后计算绝对值是10;所以transform:translateY的相对值(em)是以子元素自己的字体大小为基础计算的。

35baf2e557b0976ff601739bb4e8acb5.png

如果没有设置font-size,就会按照浏览器默认的字体大小 font-size:16px为计算基础;

9c7ba3231e34bd40290bdea184603c10.png

2、margin、padding

(1)用margin:50%;padding:50%;测试,可以看到最后计算绝对值是150;说明margin/padding的相对值(百分比)都是按照父元素的宽度width作为基础

c4ff17edc244da1a3a876b8ea95210e3.png

(2)子元素自己设置font-size:20px;父元素font-size:10px;

用margin:0.5em;padding:0.5em;测试,可以看到最后计算绝对值是10;所以margin:0.5em;padding:0.5em的相对值(em)是以子元素的自身字体大小为基础计算的。

eda71e012d6d63aa4979b23d5bad4a22.png

3、width、height;

(1)用 height:50%;width:50%;测试,可以看到最后计算绝对值是height:100px;width:150px;说明height/width的相对值(百分比)都是按照父元素的高度和宽度height/width作为基础

a2c0dfaa9cb2667a3665694261742a90.png

(2)子元素自己设置font-size:20px;父元素font-size:10px;

用height:0.5em;width:0.5em;测试,可以看到最后计算绝对值是10;所以height:0.5em;width:0.5em;的相对值(em)是以子元素的自身字体大小为基础计算的。

a340dc3ccd4d573ade44fcfa3cca4b29.png

4、line-height

(1)子元素自己设置font-size:20px;父元素font-size:10px;

用line-height:50%;测试,可以看到最后计算绝对值是10;说明line-height:50%的相对值(百分比)都是按照子元素自身的字体大小作为基础

21508cb654ee7ce005ab791df59ec6e9.png

(2)子元素自己设置font-size:20px;父元素font-size:10px;

用line-height:0.5em;测试,可以看到最后计算绝对值是10;说明line-height:0.5em的相对值(em)都是按照子元素自身的字体大小作为基础

d53f7103c5896d35eb2f64bc3ed13981.png

5、top/bottom/left/right

(1)当使用position:relative前提使用top/bottom/left/right。

(1-1)用top/bottom/left/right:50%测试,可以看到最后计算绝对值是top/bottom:100px;left/right:150px;所以top/bottom和left/right的相对值(百分比)是以父元素的高height和宽width为基础计算的。

bf097f26931295ecf265119f2ed7a898.png

(1-2)子元素自己设置font-size:20px;父元素font-size:10px;

用top/bottom/left/right:0.5em测试,可以看到最后计算绝对值是top/bottom/left/right:10px;所以top/bottom和left/right的相对值(em)是以子元素自身的字体大小为基础计算的。

4210bddc13e1661a7b995cd31a35774c.png

(2)当使用position:absolute前提使用top/bottom/left/right。

bomber:position(absolute、relative、static)​zhuanlan.zhihu.com

(2-1) 在body上增加width:500px;height:400px;把它的非static父级元素定位在body上。

用top/bottom/left/right:50%测试,可以看到最后计算绝对值是top/bottom:200px;left/right:250px;所以top/bottom和left/right的相对值(百分比)是以非static父级元素定位的高height和宽width为基础计算的。

0ca73bb1beca30fcacf254ce6179af2b.png

(2-2)在body上增加width:500px;height:400px;fonti-size:30px;把它的非static父级元素定位在body上。

用top/bottom/left/right:0.5em测试,可以看到最后计算绝对值是top/bottom/left/right:10px;所以top/bottom和left/right的相对值(em)子元素自身的字体大小为基础计算的。

b775acf6d93d756e67453cf369c91f43.png

总结:

相对值(百分比和em)是以什么为基础计算。

8956d8618c1ebbdf876c8e38f7a09c02.png

本文为本人的原创文章,著作权归本人所有,转载务必注明来源

相关文章:

  • send函数 获得已发送数据长度_好用的云函数!后端低代码接口开发,零基础编写API接口...
  • 课程设计python调用摄像头权限_python课程设计
  • micropython定制_Micropython 如何用Turnipbit做一个自动浇水装置
  • 代码流程图怎么画_招聘流程图怎么画好看,原来方法这么简单!
  • paxos算法_zookeeper为什么弃用paxos而选用zab协议?
  • python中元组怎么存放元素_人生苦短 | Python列表和元组的性能以及存储方式等
  • 前端遍历导致查询数据时间过长_「干货」一文搞懂为什么图数据库比关系型数据库查询更快...
  • 对抗生成网络_如何应用TFGAN快速实践生成对抗网络?
  • debian编译安装python3.8_Debian8 下我想安装个 python3 的 pip,然而各种报错,完全不懂...
  • 用python语言实现人工智能猴子摘香蕉的问题_人工智能 猴子香蕉问题
  • python子类继承_Python:子类可以重载继承的方法吗?
  • python调用opengl_Python之OpenGL笔记(1):窗口工具包GLFW的安装
  • 最长有效括号python_leetcode 032中最长有效括号的Python实现,Leetcode032,python
  • 60多套html5移动端模板_扫盲贴:全网最系统、完整的Web前端和移动APP开发知识...
  • python实现端口转发_python实现超简单端口转发的方法
  • [译]Python中的类属性与实例属性的区别
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Date型的使用
  • JavaScript创建对象的四种方式
  • Java超时控制的实现
  • JAVA多线程机制解析-volatilesynchronized
  • JS数组方法汇总
  • Laravel 中的一个后期静态绑定
  • linux安装openssl、swoole等扩展的具体步骤
  • Median of Two Sorted Arrays
  • Redash本地开发环境搭建
  • Redux系列x:源码分析
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vim 折腾记
  • 初探 Vue 生命周期和钩子函数
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 番外篇1:在Windows环境下安装JDK
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 学习JavaScript数据结构与算法 — 树
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 用element的upload组件实现多图片上传和压缩
  • 《天龙八部3D》Unity技术方案揭秘
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 我们雇佣了一只大猴子...
  • $forceUpdate()函数
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (1)bark-ml
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (多级缓存)多级缓存
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (算法)N皇后问题
  • (一)RocketMQ初步认识
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)iOS字体
  • 、写入Shellcode到注册表上线