css 子块级元素会继承父块级元素的宽高吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css 子块级元素会继承父块级元素的宽高吗?相关的知识,希望对你有一定的参考价值。

css 子块级元素不会继承父块级元素的宽高。

在width属性的值设置成auto的情况下,块级元素内容区的宽度取决于左右外边距是否明确设置了值。如果左右外边距值都是auto,则左右外边距的值都会被重置为默认的值0;如果左右外边距中只有一个值是auto,则该值被重置为0,另一个值有效;如果左右外边距都设置了明确的值,两个值都将有效,此时元素内容区的宽度就是父元素的宽度减去左右外边距后的值。需要说明的是,左右外边距的默认值是0,这意味着如果没有在CSS规则中声明margin-left或者margin-right,它们就会使用默认值0。

在width属性的值设置为大于0的值的情况下,块级元素内容区的宽度就是由width属性设置的值。此时,左右外边距的值如果都是auto,则会使块级元素在其父元素中居中;如果左右外边距中只有一个值是auto,则明确设置的值有效,auto值会自动适应剩余的宽度;如果左右外边距都设置了明确的值,那么在从左往右阅读的语言中,会把右外边距的值重置为auto。

第一种情况:

规则是 p margin-left:auto;width:auto;margin-right:auto;
即,三个属性全都取auto值。如图3所示,结果是p元素的内容区的宽度和父元素div的宽度相等。根据前面的公式(此例未考虑左右边框和内边距,假设它们全取默认值0)我们知道,此时的margin-left:auto和margin-right:auto等同于margin-left:0和margin-right:0。或者说此时的左右外边距都等于0。

第二种情况:

规则是 p margin-left:50px;width:auto;margin-right:auto;
即,把左外边距明确设置为50像素,width和margin-right的值仍然是auto。如图3所示,结果是p元素的内容区宽度等于div元素的宽度减去50像素。也就是说,此时左外边距是50像素,而margin-right:auto相当于margin-right:0,即右外边距为0。

第三种情况:

规则是 p margin-left:auto;width:auto;margin-right:50px;
与第二种情况类似,只不过是把右外边距而不是左外边距明确设置为50像素。图3所示的结果告诉我们,此时右外边距是50像素,而左外边距为0。

(以上三种情况,值为auto的外边距都被重置为默认值0)

第四种情况:

规则是 p margin-left:50px;width:auto;margin-right:50px;
这次是把左、右外边距都明确地设置为50像素,而只有width属性是auto。如图3所示,结果是p元素内容区的宽度等于div的宽度减去(50+50=)100像素。也就是说,50像素的左、右外边距是有效的。p元素内容区在左右外边距之间以自动适应的宽度值补足了div元素的宽度。

第五种情况:

规则是 p margin-left:auto;width:200px;margin-right:auto;
这次把左、右外边距都设置为auto,而把width明确地设置为200像素。如图3所示,结果是p元素的内容区宽度就是设置的200像素,而且,由于左右外边距同为auto,使得p元素在div元素中水平居中。这种情况也是网页布局中最常用的居中块级元素居的主要手段。

第六种情况:

规则是 p margin-left:50px;width:200px;margin-right:auto;
这次margin-left和width分别明确设置成了50px和200px,只有右外边距的值是auto。从图3中可以看到,结果是p元素的内容区就是设置的200像素,而左外边距也是设置的50像素。但右外边距此时在前两个部分之后以自动适应的宽度值补足了div元素的宽度。

第七种情况:

规则是 p margin-left:auto;width:200px;margin-right:50px;
与第六种情况相似,但这次是左外边距在后两个部分之前以自动适应的宽度值补足了div元素的宽度。

第八种情况:

规则是 p margin-left:50px;width:200px;margin-right:50px;
这是一种典型的情况,即三个属性都明确地设置相应的值。从图3的结果中我们看到,只有左外边距和p元素内容区的宽度是设置的值。右外边距虽然也明确设置了50像素的值,但实际情况就像是使用了auto的第六种情况一样。实际上,在三个属性都明确设置了值,但其中一个值在没有解的情况下--即在不能满足三者之和等于div元素宽度的情况下--在从左往右阅读的语言中,会把右外边距重置为自动适应的宽度值,也就是auto。

参考技术A

css 子块级元素会继承父块级元素的宽高。

一般来说,所谓块级元素就是指当它们显示在浏览器中时,会在自身前后各插入一个空行,而使自身在页面中占据一个相对独立的块状区域的元 素。因此,html文档中连续的块级元素的典型显示方式就是“堆叠”。

块级元素会独占一行,默认情况下宽度自动填满其父元素宽度;块级元素可以设置宽高;块级元素可以设置margin,padding。

块元素一般可以包含其他块元素和内联元素,当在网页中使用块元素的时候,块元素默认换行显示。在块元素中,可以正常显示所有定义的盒模型属性。

block(块)元素的特点:

①总是在新行上开始;

②高度,行高以及外边距和内边距都可控制;

③宽度缺省是它的容器的100%,除非设定一个宽度。

④它可以容纳内联元素和其他块元素

一文搞懂行内元素和块级元素的区别

行内元素

不会自动进行换行;元素的宽高不可设置;内边距可以设置、外边距水平方向有效,竖直方向无效;元素宽度在不设置的情况下,随内部元素的内容变化。

常见的行内元素

span , a ,strong ,b ,em , i , big ,small ,label ,img , input , select ,textarea

块级元素

独占一行;元素的宽高、以及内外边距都可设置;元素宽度在不设置的情况下,是它本身父容器的100%。

常见的块级元素

div , h1—h6 , p , ul , ol , dl , table , form

行内元素和块级元素之间的区别

是否独占一行width、heightpadding、margin默认宽高常见标签
块级元素有效有效撑满父元素div p h ul ol dl table form
行内元素无效padding有效;
margin水平方向有效,竖直方向无效
随内部元素的内容变化soan a strong i img input select
行内块元素有效有效随内部元素的内容变化

行内元素和块级元素之间的转化

  • 块级元素>>行内元素display:inline
<div> DIV1 </div>
<div> DIV2 </div>
display:inline//转化为行内元素之后,这两个div盒子就会在同一行进行显示
<div style="display:inline"> DIV1 </div>
<div style="display:inline"> DIV2 </div>
  • 行内元素>>块级元素
    方法一: display:block
<span > SPAN1 </span>
<span > SPAN2 </span>
display:block//转化为块级元素之后,span标签就会变成一个块占一行
<span style= "display:block "> SPAN1 </span>
<span style= "display:block "> SPAN2 </span>

方法二: float
给行内元素加上一个浮动

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .red {
      background-color: red;
      width: 100px;
      height: 100px;
    }

    .blue {
      background-color: blue;
      width: 100px;
      height: 100px;
      color: white;
      float: left;
    }
  </style>
</head>

<body>
  <div class="red">我是div标签</div>
  <span class="blue">我是span标签,加上float:left</span>
</body>

</html>

这是加上了float把span转化为块级元素这是没有加float的
因为span标签是行内元素,不能设置width和height属性 他的大小是由span标签内部文字大小决定的
加上float之后,就相当于把行内元素转化为块级元素,因此他就具备了宽和高的属性
具体显示结果如上图所示

注意:
display:inline 对应的不显示是display:none

display:block 对应的不显示是hidden

以上是关于css 子块级元素会继承父块级元素的宽高吗?的主要内容,如果未能解决你的问题,请参考以下文章

块级元素和内联元素的宽高是如何确定的

关于overflow:hidden的作用

HTML和CSS总结

09-块级元素和行内元素

子块元素在父块元素中居中

dom块级元素的各种宽高