为什么CSS不支持负填充?
我曾经看到过很多次,负面填充的前景可能会帮助某些页面元素的CSS开发变得更好和更容易。 然而,在W3C CSS中并没有规定负填充。 这背后的原因是什么? 有没有妨碍财产,阻止它的使用? 感谢您的回答。
UPDATE
正如我所看到的,例如,如果您使用的字体有一些20px的垂直间距,并且希望将虚线边框应用于字体的底部,请在出现超链接时进行说明。 在这种情况下,你会发现风格太破旧了,因为虚线边框会出现在指定字词下方20px的位置。 如果使用负值保证金,则无法工作,因为保证金会改变区域外的区域。 负填充可能有助于这种情况。
我最近回答了一个不同的问题 ,我讨论了为什么盒子模型是这样的。
盒子模型的每个部分都有具体的原因。 填充是为了将背景扩展到其内容之外。 如果您需要缩小容器的背景,则应该使父容器的大小正确,并给子元素一些负边距。 在这种情况下,内容没有被填充 ,这是溢出。
根据定义,填充是一个正整数(包括0)。
负面的填充会导致边框折叠到内容中(请参见w3上的框模型页面) – 这会使内容区域小于内容,这是没有意义的。
顺便说一下,这可能会有所帮助:
箱子大小的 CSS属性用于更改用于计算元素宽度和高度的默认CSS盒子模型。
http://www.w3.org/TR/css3-ui/#box-sizing
https://developer.mozilla.org/En/CSS/Box-sizing
我想描述一个非常好的例子,说明为什么negative padding
是有用的,真棒。
正如我们所有的CSS开发人员所知道的那样,在另一个CSS中垂直alignment一个dynamicresize的div是一件麻烦事,大部分情况下,被认为是不可能的,只能使用CSS。 negative padding
纳入可以改变这一点。
请查看以下HTML:
<div style="height:600px; width:100%;"> <div class="vertical-align" style="width:100%;height:auto;" > This DIV's height will change based the width of the screen. </div> </div>
使用下面的CSS,我们将能够垂直居中内部div
的内部div
在外部div
:
.vertical-align { position: absolute; top:50%; padding-top:-50%; overflow: visible; }
让我解释一下…
内部div的顶部绝对定位在50%的地方,内部div的顶部边缘在外部div的中心。 很简单。 这是因为基于百分比的定位是相对于父元素的内部维度 。
另一方面, 基于 百分比的填充 是基于目标元素的内部维度 。 所以,通过使用padding-top: -50%;
的属性padding-top: -50%;
我们已经把内部div的内容向上移动了内部div的内容的高度的50%的距离,因此将内部div的内容集中在外部div内,并且仍然允许内部div的高度维度是dynamic的!
如果你问我OP,这将是最好的用例,我认为它应该被实现,所以我可以做这个黑客。 大声笑。 或者,他们应该只是修复vertical-align
的function,并给我们一个适用于所有元素的vertical-align
版本。
你问为什么,而不是如何作弊:
通常由于最初实现的程序员的懒惰,因为他们已经付出了更多的努力在其他function,像浮游物更奇怪的副作用,因为他们当时更多的devise师要求,但他们没有花时间允许这样做,所以我们可以使用FOUR属性来向其邻居推送/拉一个元素(现在我们只有四个推动,只有两个拉动)。
当html被devise出来的时候,杂志就喜欢在那个时候回到图片周围的文本,现在很讨厌,因为今天我们有触摸的趋势,喜欢那些有很多空间和没有东西可读的东西。 这就是为什么他们对浮筒施加更多的压力而不是居中,或者他们可能devise了类似margin-top: fill;
东西margin-top: fill;
或margin: average 0;
简单地将内容alignment到底部,或者分配其额外的空间。
在这种情况下,我认为它还没有实现,因为有相同的原因,使CSS缺乏一个:parent
伪select器:为了防止循环评估。
如果不成为一名工程师,我现在可以看到,CSS现在被用来绘制元素一次,记住未来要素的一些属性,但是不要回到已经绘制的元素。
这就是为什么(我猜)填充计算的宽度,因为这是在开始绘制时可用的值。
如果您填充的值为负,则会影响外边界,当边界已经设定时,外边界已经被定义。 我知道,还没画出任何东西,但是当你读到90年代技术天才所创造的绘画过程时,我觉得自己在问愚蠢的问题,只是说“谢谢”嘿嘿。
网页的一个要求是,它们很快就可以使用,而不像一个应用程序,它可以花费时间和计算机资源来获取一切正确的显示之前,网页需要使用很less的资源(所以它们适合每个设备可能),并在微风中滚动。
如果您看到应用程序复杂的回stream和定位,如InDesign,您不能快速滚动! 处理器和显卡都需要很大的努力才能跳到下一页!
因此,绘画和计算前进和遗忘曾经绘制的元素,现在它似乎是必须的。
负填充的目的是什么? 填充用于收缩框中的内容,在边框和内容之间留下空间。 除非目的是把内容从盒子里拿出来,否则我认为它没有用处。 可能有人可能会有不同的意见。
在容器内安装一个Iframe将不符合容器的大小。 它增加了大约20px的填充。 目前没有简单的方法来解决这个问题。 你需要javascript( http://css-tricks.com/snippets/jquery/fit-iframe-to-content/ )
负利润率将是一个简单的解决scheme。