前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >块级元素与行内元素的区别以及BFC模型的简单解释

块级元素与行内元素的区别以及BFC模型的简单解释

原创
作者头像
伯约同学
发布2022-03-06 20:59:27
7920
发布2022-03-06 20:59:27
举报

块级元素与行内元素的区别以及BFC布局的简单解释

工作中其实经常用到一些span标签和div标签来进行内容的显示,但涉及到文本标签的换行,总得多花那么一两分钟多写一下,今天就专门来瞅一瞅。

按照标签的分类可以分为块级元素和行内元素

什么是块级元素?

独占其父元素的整个水平空间,垂直空间等于其内容高度的元素称之为块级元素。

我们常用的div、h、p等标签都属于块级元素

可以看到,对于一个普通的div标签而言,其内部元素是可以超出其限定高度进行显示,有与外界内容重叠的情况

代码语言:javascript
复制

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

```
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <div>
    <div id="content" class="container">
    contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent
    
    </div>
    <div class="div2">div2</div>
    <div class="div3">
      div3
    </div>
    <div class="div4">
      div4
    </div>

  </div>

</body>

<style>
  #content {
    color: blueviolet;
    word-wrap: break-word;
    width: 500px;
    height: 60px;
  }

  .div3 {
    float: left;
  }
</style>

</html>
```

就上述代码而言可以看到#content中的内容会跟div2中的内容重叠,同时也可以看到div2是直接换行,紧贴着其父元素的左侧往下排列,这就是普通文档流的排列规则。

当然如果上面的代码没有写word-wrap属性,文本内容会向右延伸,超出其边界。

而对于行内元素而言,如果行内有空间,他们会在行内从左往右排列,否则的话会换下一行显示

代码语言:javascript
复制
    <div id="content" class="container">
      <span>
        contentcontentcontent
      </span>
      <span>
        contentcontentcontent
      </span>
      <span>
        contentcontentcontent
      </span>
    </div>

像上面的代码,content会自动换行,div的左侧有内容,右侧则直接留白,有兴趣的手动练习一下

当然,如果行内元素你没给他设置word-wrap属性的话,文本内容也会在同一行内往右延伸,不会自动换行的。

也就是说对于文档流(Normal flow/正常流)而言块级元素将款级元素自从上往下、行内元素在每行中从左往右,从上往下的顺序排列。由于普通的块级元素里面的内容很容易与外面的内容重叠产生影响,所以我们还需要使用BFC盒子模型来避免一些布局问题

看下W3C上对BFC的定义

```

浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。

```

ok,看了跟没看一样,完全不知道所以然。用通俗的话来讲,BFC就是一个容器,这个容器内存放任何内容都不会影响到外部容器。当然,他并不是像我们说的标签的那种,而是一种特征,具备了某些属性,就不会影响到外部标签的属性。

如何触发成为一个BFC盒模型的条件还是挺简单的

```

1:float的值不为null

2:overflow的值不为visible

3:display的值为table-cell,table-caption,inline-block

4:position的值不为static,relative

```

我们利用BFC也可以做很多事情,最简单的就是在上面的#content样式中加一个overflow:auto来避免其与div2中的内容重叠。

此外还可以用于布局、清除浮动(在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。)、防止margin重叠等场景

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com