美文网首页
CSS之宽度与高度

CSS之宽度与高度

作者: 是刘快啊 | 来源:发表于2018-03-16 01:00 被阅读0次

使用CSS进行布局与定位,就必须了解CSS中的宽度与高度。
在CSS中:
1.内联元素的宽度由行高决定,宽度由内容、padding、border和margin决定;
2.块级元素的宽度自适应父元素,高度由其内部文档流元素的高度总和决定。


内联元素之宽高

1.通过JS Bin调试观察

分别给div和span加一个红色、绿色的border,便于观察:


border.JPG

给span加一个100px的margin,可以看到span左右各增加了100px的margin,宽度增加200px;上下没有变化,高度不变:


margin.JPG
给span增加一个100px的padding,可以看到span宽度增加200px,高度依然没有变化(红框没有变高):
padding.JPG

我们注意到两个span之间有一个空格,这是因为代码中两个span之间并不是没有东西的,而是有回车和空格,即下图中选中部分,显示为一个空格:


space.JPG
将span的border加到10px,可以弹道span的宽度增加了20px,行高依然没有改变:
border2.JPG
给span设置width和height,宽度和高度没有任何变化:
wh.JPG
综上,内联元素宽度受padding和margin影响,高度不受其影响;内联元素不接受指定宽高。
内联元素高度由行高决定,宽度由内容、padding、border、margin决定。

2.字体与行高

我们给到文本的font-size就是行高吗?答案是否定的。这是因为font-size是字体的最高点到最低点的高度,不同的font-size有不同的建议行高。字体设计师在设计字体时,会考虑到如果这种字体要写两行,行与行之间要有空隙,于是设计了建议行高。例如,给定font-size:20px;,如果这种字体的建议行高为1.2倍,则行高为24px。如果要明确行高为20px,那么应该写上line-height: 20px;
line-height可以确定内联元素高度,line-height的值是多少像素,内联元素所占的高度就是多少。


块级元素之宽高

1.文档流(Normal Flow)

W3C规范中是没有docuement flow这个概念的,只有Normal Flow,即普通流,文档流是多数中文翻译者的翻译方式问题。
文档流中内联元素默认从左到右排列,宽度不够则自动换行;
文档流中块级元素从上到下排列,每个元素占一行。
一个子元素脱离文档流后计算父元素高度不再算它的高度,脱离文档流的方式:
float:left;
position:absolute;
position:fixed;
相对定位position: relative;不脱离文档流,不管位置怎样移动,父元素计算高度仍要算上它的高度。

2.margin合并

给父元素一个border,给子元素一个100px的margin,可以看到子元素的margin仍在父元素内:

son.JPG
将父元素的border变为outline,发现子元素上下margin与父元素合并:
dad.JPG
如果父元素没有border,那么子元素的margin上下方向会与父元素margin合并。如果不想让margin合并,可以给父元素加上border-topborder-bottom(不一定是border,也可以是别的东西,如padding,只要可以挡着子元素margin就可以)。
在CSS中,即使只给到border-top:0.1px;,依然会出现一个1px的border-top。
其他阻止margin合并方法:
1.给父元素加上overflow: hidden;,一般不用这种方法,所有东西都不能超出,例如要加悬浮层会遇到问题;
overflow.JPG
2.内联元素也可以挡住,写个字,一般不用,没必要无故写个字。
dang.JPG

所以子元素的margin能否使父元素变高,取决于是否有东西挡着它。
一个div里还有div,这个div的高度就是里面div的高度+padding+border+(sometimes)margin
一个div里有span,把span的行高加起来就是div的高度。
综上,块级元素宽度自适应父元素,高度是由其内部文档流元素的高度总和决定的。

相关文章

  • CSS之宽度与高度

    使用CSS进行布局与定位,就必须了解CSS中的宽度与高度。在CSS中:1.内联元素的宽度由行高决定,宽度由内容、p...

  • [CSS] box-sizing

    content-box:这是由 CSS2.1 规定的宽度高度行为。宽度和高度分别应用到元素的内容框。在宽度和高度之...

  • CSS 高度与宽度

    文字的对齐 word-break: break-all 发现文字超出了div的宽度,因为浏览器不会自动打断,可以添...

  • css 宽度与高度

    文档流(normal flow)div竖着排,内联元素横着排 块级元素div的宽高:未设置宽高时 宽:div的宽度...

  • CSS 宽度与高度

    前言:如果你写的 CSS 中经常出现 width 与 height,说明你写的 CSS 是有问题的 一、文档流(N...

  • css的宽度与高度

    div的高度问题 1. div里面没有内容的时候,高度是多少? 是0 2. 若div里面有文字,且css设置fon...

  • css_高度与宽度

    以下是css深入浅出视频截图 个人觉得非常实用且涨知识

  • css-宽度与高度

    文档流 文档内元素的流动方向。内联元素:从左到右;块级元素:从上到下,每块占一行。 块级元素高度由其内部文档流高度...

  • CSS连载(一、宽度与高度)

    弱弱的说下,因为特殊原因电脑没网,只能打出来拍照。

  • CSS边框、图片alt、input标签placeholder、f

    CSS边框属性CSS 边框的属性有style(样式)、color(颜色)、width(宽度)、height(高度)...

网友评论

      本文标题:CSS之宽度与高度

      本文链接:https://www.haomeiwen.com/subject/qhvkqftx.html