本文作者:IMWeb jerryOnlyZRJ
原文出处:你知道我们平时在CSS中写的%都是相对于谁吗? - 腾讯Web前端 IMWeb 团队社区
在我们编写css的时候,经常会用到百分比赋值(%)实现自适应。像我们最常使用的流式布局设计模式,基本所有的column的宽度都是通过%来取值的。或者比如经常会遇到的元素水平垂直居中问题,我们常常会使用下面这样的CSS代码加以实现(absolute+transform思路):
.wrap {
position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
大家因为经常使用,肯定都知道前面两个50%指的是wrap的定位参照物的宽、高的50%,而translate()里的50%指的是wrap自身,这应该不会有什么疑问,但在这简单的三行代码中,就出现了两类不同的%值,一种是相对于参照物盒子的,一种是相对自身的。不过你以为CSS世界里就只有这两类百分比值吗?一切可没这么简单,下面我会列举出不同的情况下%值的参照对象,且听我娓娓道来。
熟悉的小伙伴都知道CSS中的定位分为四种,默认值static,相对定位relative,绝对定位absolute还有固定定位fixed。虽然说每一类定位的%值的参照物都各不相同,但因为都具有定位的特殊性质,所以我把它们归为一类,现在对四种不同的定位分类讨论:
在一个盒子模型内有很多特别常见的属性值,大家天天用也天天看,就是这些:width,height,margin,border,padding,width和height就不用说了,是相对于父盒子的,重点讲下margin和padding
border-radius:top-left|top-right|bottom-right|border-left / top-left|top-right|bottom-right|border-left
background-size:100% 100%;
因此,background-size的参照物和border-radius一样,都是盒子自身的宽高。
大家可能大概看一遍下来还是一脸懵逼,为了给大家加强记忆,我就以参照物的不同类别为主线做个总结:
最常见的应该就算是参照父盒子(containing box)的属性,但是还有一些特例参照的是父盒子的width,只有这个类别还需要分两类讨论:
以盒子自身为参照的属性就比较多了,参照的属性一般也是与自身有关联的属性,属于这一类的属性值有:定位中的relative;盒子模型中的border-radius;背景中的background-size;背景中的background-position比较特殊,还记得吗,它需要减去你的背景图片的宽高,你可以联想到flex布局中的flex属性值;在transform变换中,translate()、transform-origin、scale()还有我们拓展的与transform相似的zoom属性,他们都是参照自身的;line-height行高与它的字体大小有关,所以参照的就是自身的font-size。
因为定位的性质比较特殊,所以将他单独分出一类,定位元素参照的是他的定位对象,因为relative是相对于自身定位,所以我把他归为相对盒子自身一类中去了,其他的属性值我们都可以看作是参照他们的定位元素。
文章列出的所有属性具体的一些属性值的特性可以参考MDN官网,其实像上文列出的属性,我们并不需要全部去记忆,也很难做到把所有的都记下来,很多时候,我们只需要自己在浏览器中测试一下就知道这些CSS是参照谁的啦。最后留下一个小问题,如果不用px,只用%,如何实现一个宽高相等的正方形div?
网页开发过程中经常会遇到需要把多行文字溢出显示省略号,这篇文章将总结通过多种方法实现文本末尾省略号显示。
word-spacing 属性增加或减少单词间的空白(即字间隔)。 letter-spacing 属性增加或减少字符间的空白(字符间距)。
满屏div之css最容易中枪的二十条规则,你中枪了吗?一、float:left/right 或者 position: absolute 后还写上 display:block?二、认为布局就是 Float,所有的地方都是 Float,全家都是 Float!
我想每个人都应该归纳总结工作中的常见需求,编写一套适合自己的 CSS 框架。大多数的轻量级框架只是 CSS 框架,不涉及 JS 部分,主要用于网页的布局。
定义简洁的CSS规则:CSS的每条规则中都包含了规则的属性及属性值。定义简洁的CSS规则主要是指合并相关规则和定义简洁的属性值。
css完美解决iphonX白条,网站扩展到整个屏幕,CSS Shapes中有个CSS属性名为shape-outside实现元素滚动自动环绕iPhone X刘海
我们都知道需要给html和body标签设置了高度height:100%之后,再给内部的div设置height:100%的时候,内部div的高度100%才会起到作用。这是由于:%是一个相对父元素计算得来的高度,要想使他有效,我们需要设置父元素的height。
clip-path属性可以创建一个只有元素的部分区域可以显示的剪切区域。区域内的部分显示,区域外的隐藏。剪切区域是被引用内嵌的URL定义的路径或者外部svg的路径,或者作为一个形状例如circle().。clip-path属性代替了现在已经弃用的剪切 clip属性。
这篇文章整理css中无继承性的属性、继承性的属性、所有元素可以继承的属性、内联元素可以继承的属性、块级元素可以继承的属性
CSS技术技巧法则:不要让你的代码脱离你的掌控,尽量简洁、掌握基础、保持代码的可复用性、面向对象的css、Css3了解他能做的以及你可以使用的部分、渐进增强与优雅降级、Css预处理工具...
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!