返回顶部
首页 > 资讯 > 前端开发 > node.js >CSS中一些百分比相关调试的方法
  • 737
分享到

CSS中一些百分比相关调试的方法

2024-04-02 19:04:59 737人浏览 薄情痞子
摘要

本篇文章为大家展示了CSS中一些百分比相关调试的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。很多css属性的取值都可以是百分比值。虽然形式上来说,百分比值都是

本篇文章为大家展示了CSS中一些百分比相关调试的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

很多css属性的取值都可以是百分比值。虽然形式上来说,百分比值都是数字后跟%的形式(注意数字和%之间不可以有空格),但在不同的使用场合下,其意义会有很多不同。因此,百分比值可以说包含了相当丰富的内容。
百分比值是相对值

要理解诸如100%这样的百分比值,其关键点是要明白,百分比是一定有其对应的参照值的。也就是说,百分比值是一种相对值,任何时候要分析它的效果,都需要正确找到它的参照。

一个css属性值从定义到最终实际使用,是存在一个过程的。这其中涉及到Specified Values(指定值)、Computed Values(计算值)、 Used Values(使用值)、Actual Values(实际值)等概念,可以想见到,百分比值实际会在这个过程中,根据它的参照计算转化为一个绝对值(比如100px),然后再被应用。这就是百分比值的意义。

更多关于css属性值的处理过程的信息,可以查看Value Processing。
百分比值的作用?

简单地说,就是可变性。这可以衍生出自适应、响应式等看起来很有用的东西。

比如说,一个固定宽高的盒子,然后希望盒子内有一个绝对定位的,宽高和盒子一样的盖板(就这样称呼吧...),下面这样的写法会很合适:

CSS Code复制内容到剪贴板

.box{position:relative;width:100px;height:100px;}   
.box_cover{position:absolute;width:100%;height:100%;left:0;top:0;}

这里使用百分比值的好处的是,如果需要修改盒子的尺寸,只需要修改盒子的宽高,而盖板会自动保持和盒子的尺寸一致。

再一个例子是Bootstrap的栅格系统:
CSS中一些百分比相关调试的方法

可以看到,栅格系统里会用到百分比值来实现确切的对空间的划分。百分比值是相对的,自适应的,因此栅格系统可以很好地用于响应式设计。
可用百分比值的常见css属性
width & height

宽和高在使用百分比值时,其参照都是元素的包含块(Containing Block,详情)。width参照包含块的宽度,height参照包含块的高度。在大部分情况下,包含块就是父元素的内容区(盒模型里的content)。

我以前写过width:100%; height:100%;这样的代码来实现尺寸和父元素一致。但我发现有时候宽度是符合意思(100%)的,但高度却没有效果。请看下面这个示例:
CSS中一些百分比相关调试的方法

可以看到,直接父元素(包含块)是否有明确的高度定义,会影响height为百分比值时的结果。

关于这一点的详细解释是,当一个元素的高度使用百分比值,如果其包含块没有明确的高度定义(也就是说,取决于内容高度),且这个元素不是绝对定位,则该百分比值等同于auto。auto是初始默认值,所以看起来就像是“失效”了。

如果元素是根元素(<html>),它的包含块是视口(viewport)提供的初始包含块(initial containing block),初始包含块任何时候都被认为是有高度定义的,且等于视口高度。所以,<html>标签的高度定义百分比总是有效的,而如果你希望在<body>里也用高度百分比,就一定要先为<html>定义明确的高度。这就是为什么在之前的固定页脚一文中,有html, body{height:100%;}这样的写法。
margin & padding

这2个属性属于混合属性,也通过一个例子说明:
CSS中一些百分比相关调试的方法

可以分析得到,对于margin和padding,其任意方向的百分比值,参照都是包含块的宽度。

为什么会多个方向都取包含块的宽度作为参照呢?在我看来,包含块的宽度在块布局的排版中是最有用的(想象一下Word里输入文字,到宽度边缘后换行的场景),对应的,水平方向的内外边距一定要参照包含块的宽度。再考虑垂直方向的内外边距,它们如果不和水平方向取相同的参照物,就会因为不一致而很难使用。所以,总体来说,统一以包含块的宽度作为参考,会具有相对最好的可用性。

严格地说,参照是包含块的宽度,是在样式属性writing-mode为默认值时的情况。不过这个属性极少被用到,所以在此不做考虑。
border-radius

你也许见过有人用下面的代码来让一个矩形变成刚好的圆形(请体会这个“刚好”):

CSS Code复制内容到剪贴板

  1. .circle{border-radius:50%;}  

对此的解释是,为一个元素的border-radius定义的百分比值,参照物是这个元素自身的尺寸。也就是说,假如这个元素宽是60px,高是50px(border-box的尺寸),那么border-radius:50%的结果等同于border-radius:30px/20px;。

如果你还疑惑这里带/的圆角写法,请查看MDN对border-radius的说明。
background-position

background-position的初始值就是百分比值0% 0%。下面是一个使用示例:
CSS中一些百分比相关调试的方法

background-position的百分比值,取的参照是一个减法计算值,由放置背景图的区域尺寸,减去背景图的尺寸得到,可以为负值。对照上面的示例,思考一下,应该可以感受到,以这个减法计算值为参照的话,正好可以符合我们感官上对背景图位置的理解。

这个属性包括水平位置和垂直位置,它们分别参照的是宽度减法计算值和高度减法计算值。

你可能注意到了上面示例的最后一个竟然写了4个值(一般都只用2个值)。关于它的意义,请查看W3C的background-position。
font-size

参照是直接父元素的font-size。例如,一个元素的直接父元素的font-size是14px,无论这个是直接定义的,还是继承得到的,当该元素定义font-size:100%;,获得的效果就是font-size:14px;。
line-height

参照是元素自身的font-size。例如,一个元素的font-size是12px,那么line-height:150%;的效果是line-height:18px;。
vertical-align

参照是元素自身的line-height(和前面很有关联吧,所以我排在了这里)。例如,一个元素的line-height是30px,则vertical-align:10%;的效果是vertical-align:3px;。

对这个属性我还想说,尽管vertical-align可以使用数字,百分比值,但浏览器兼容性差异较大,在跨浏览器实现时可能需要较多hack。因此,我个人倾向于使用middle等相对来说兼容性差异较小的关键字类型的值。
定位用的bottom、left、right、top

参照是元素的包含块。left和right是参照包含块的宽度,bottom和top是参照包含块的高度。
transform: translate

平移变换,在水平方向和垂直方向上也可以使用百分比,其参照是变换的边界框的尺寸(等于这个元素自己的border-box尺寸)。例如,一个宽度为150px,高度为100px的元素,定义transfORM:translate(50%, 50%)的效果是transform:translate(75px, 50px);。

还可以补充一点,translate3D对应是还有第三个维度的,但是,经过测试,最后的第3个值不可以使用百分比(否则样式定义无效)。至于为什么不可以参照呢,大概是因为那是神秘的第三维度吧...
其他

如果你想要知道更多的百分比值在css属性中的可用情况及参照值,请参考MDN的CSS percentage values。
百分比值的继承

请注意,当百分比值用于可继承属性时,只有结合参照值计算后的绝对值会被继承,而不是百分比值本身。例如,一个元素的font-size是14px,并定义了line-height:150%;,那么该元素的下一级子元素继承到的line-height就是21px,而不会再和子元素自己的font-size有关。
结语

百分比值是css所提供的一种建立元素与元素之间,或者元素的不同属性之间的关联性的有效方法。只要是想建立一种关联性,都可以适当考虑使用百分比值。而且,不需自己做任何动态的事件处理和更新,任何时候,你都可以信赖这个百分比。

上述内容就是CSS中一些百分比相关调试的方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网node.js频道。

--结束END--

本文标题: CSS中一些百分比相关调试的方法

本文链接: https://lsjlt.com/news/81235.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • CSS中一些百分比相关调试的方法
    本篇文章为大家展示了CSS中一些百分比相关调试的方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。很多css属性的取值都可以是百分比值。虽然形式上来说,百分比值都是...
    99+
    2024-04-02
  • CSS中视窗单位和百分比单位的使用方法
    本篇内容主要讲解“CSS中视窗单位和百分比单位的使用方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS中视窗单位和百分比单位的使用方法”吧!视窗(View...
    99+
    2024-04-02
  • Java中常用时间的一些相关方法
    目录前言一、获取当前时间的方式二、获取当月第n天三、格式化为字符串四、加减时间(单位可以是秒,小时等)五、通过出生日期获取年龄六、判断两个时间段是否覆盖七、求两个时间间隔八、UTC时...
    99+
    2024-04-02
  • css样式中单位百分比和px的区别有哪些
    这篇文章主要介绍了css样式中单位百分比和px的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 区别:...
    99+
    2024-04-02
  • PHP中的调试方法有哪些
    这篇文章主要介绍“PHP中的调试方法有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP中的调试方法有哪些”文章能帮助大家解决问题。PHP中的debug(调试)方法有:1、在PHP代码中添加e...
    99+
    2023-06-29
  • 比较同一字符串中相邻字符的方法
    从现在开始,努力学习吧!本文《比较同一字符串中相邻字符的方法》主要讲解了等等相关知识点,我会在编程网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮...
    99+
    2024-04-04
  • 【整理分享】一些node模块相关的面试题及答案(收藏)
    node.js缓存和热更新密切相关,我们先简单看下Node.js的模块机制(下图来源于hyj1991大神)。简单的说就是,require A模块之后,会把A模块放入到缓存里,第二次取的时候就取缓存了,所以你仅仅改变了文件并不会让这个文件重新...
    99+
    2023-05-14
    前端 面试 Node.js
  • 分析PostgreSQL SetupLockInTable方法中与OOM相关的代码
    这篇文章主要介绍“分析PostgreSQL SetupLockInTable方法中与OOM相关的代码”,在日常操作中,相信很多人在分析PostgreSQL SetupLockInTable方法中与OOM相关...
    99+
    2024-04-02
  • Linux Shell循环中实现展示进度百分比的实现方法
    Shell 循环中实现展示进度百分比的脚本方法 当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的。我一开始的想法是,没处理一行,就输出一个 # 号。但是这样还是会出现很多很多的 # 号,即便是放...
    99+
    2022-06-04
    百分比 进度 方法
  • 网页布局中CSS布局调试的有效方法是怎样的
    网页布局中CSS布局调试的有效方法是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。网页布局中CSS布局调试...
    99+
    2024-04-02
  • Javascript中字符串相关常用的使用方法有哪些
    小编给大家分享一下Javascript中字符串相关常用的使用方法有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JavaScript的内置功能之一就是字符串连接,如果用‘+'连...
    99+
    2024-04-02
  • HTML5移动端开发中Viewport标签及相关CSS用法的示例分析
    这期内容当中小编将会给大家带来有关HTML5移动端开发中Viewport标签及相关CSS用法的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。移动前端中常说的 vi...
    99+
    2024-04-02
  • css同一样式表中区分IE6 IE7 Firefox样式的方法
    本篇内容主要讲解“css同一样式表中区分IE6 IE7 Firefox样式的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css同一样式表中区分IE6 IE...
    99+
    2024-04-02
  • 针对不同浏览器获取到css文件里相关属性的两种方法分别是怎样的
    针对不同浏览器获取到css文件里相关属性的两种方法分别是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 先看...
    99+
    2024-04-02
  • Shell中调用、引用、包含另一个脚本文件的方法有哪些
    本篇内容介绍了“Shell中调用、引用、包含另一个脚本文件的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!脚本 first (测试...
    99+
    2023-06-09
  • mssql 存储过程调用另一个存储过程中的结果的方法分享
    摘要:下文将分享"一个存储过程"中如何调用"另一个存储过程的返回结果",并应用到自身的运算中 在实际开发中,我们经常会遇到在一个存储过程中调用另一个存储过程的返回结果...
    99+
    2024-04-02
  • 分布式系统中的缓存一致性算法有哪些值得关注的问题?
    随着互联网的发展,分布式系统得到了广泛的应用。分布式系统中,缓存是提高系统性能的关键技术之一。但是,在分布式系统中,缓存的一致性问题也是一个不可忽视的问题。如果缓存的一致性出现问题,会导致数据的不一致,进而影响系统的正确性和可用性。 为了...
    99+
    2023-10-05
    缓存 分布式 编程算法
  • 【整理分享】PHP字符串中一些处理中空格和符号的方法
    在PHP编程过程中,经常需要处理字符串中的空格和符号,例如在表单输入中去除用户输入的空格、在搜索引擎中处理搜索关键词、在生成URL中去除特殊字符等等。本文将介绍一些PHP中处理字符串中空格和符号的方法。一、去除空格1.使用trim...
    99+
    2023-05-14
    php php字符串
  • ajax对象一些常用属性和事件以及方法大小写比较常见的示例分析
    ajax对象一些常用属性和事件以及方法大小写比较常见的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。最近比较空闲,于是抽个时间整理...
    99+
    2024-04-02
  • Win7系统中的一些自动维护计划、任务关闭、禁用方法图文教程
      Windows自动维护功能会在计划任务时间中执行对系统安全扫描、系统诊断和软件更新等等,在这些过程中也需要一定的时间来完成,如果用户在设置每天都运行计划任务来自动维护也会显得麻烦,也会影响到系统的运行速度,很多用户都...
    99+
    2023-06-13
    Win7系统 自动维护计划 关闭 禁用方法 任务 禁用 方法 计划 系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作