前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS(三)

CSS(三)

作者头像
1ess
修改2021-10-29 17:17:18
1.9K0
修改2021-10-29 17:17:18
举报
文章被收录于专栏:0x7c00的专栏

CSS(三)

發佈於 2018-06-28

本篇将讲解盒模型以及外边距折叠的相关知识。 “CSS 盒模型”是一组规则,用于定义如何呈现 Internet 上的每个网页。 CSS 将 HTML 文档中的每个元素视为一个”框”或”盒”,其中包含一系列不同的属性,用于确定它在页面上的显示位置。 本章介绍了 CSS 框模型的核心组件: 填充,边框,边距,Block boxes 和 Inline boxes。可以将此视为 CSS 布局的”微观”视图,因为它定义了框的个别行为。在以后的章节中,我们将更多地了解 HTML 结构和 CSS 框模型如何组合以形成各种复杂的页面布局。

Block 元素和 Inline 元素

屏幕上呈现的每个 HTML 元素都是一个框,它们有两种形式: Block boxes 和 Inline boxes。

Block boxes 和 Inline boxes 的行为

  • Block boxes 总是在前一个 Block 元素之后
  • Block boxes 的宽度基于其父容器的宽度
  • Block boxes 的高度基于其所容纳的内容
  • Inline boxes 不会影响垂直间距,它们不是用于确定布局,只是用于构建块内的样式
  • Inline boxes 的宽度基于其所容纳的内容,而与父容器的宽度无关

改变 Box 的行为

我们可以使用 CSS display 属性覆盖 HTML 元素的默认 box 类型。

em, strong { display: block; }

这时,em 和 strong 元素的行为就跟 Block 元素一样了。

Content、Padding、Border and Margin

盒模型是一组规则,用于确定网页中每个元素的尺寸。它为每个 Box 提供了四个属性:

  • Content: 一个元素的文本,图片或其他媒体内容
  • Padding: box 的内容和边框之间的距离
  • Border: box 的填充和边距之间的线
  • Margin: box 和周围 box 之间的距离

Padding

h1 { background: #eee; padding: 50px; }

注意背景颜色如何扩展以填充此空间。填充总是如此,因为它在边框内部,边框内的所有内容都有背景。

速记格式

两值速记

四值速记

注意: 是否想要使用速记表格主要取决于个人偏好和团队惯例。一些开发人员喜欢速记形式更加浓缩的事实,而另一些开发人员认为长形式一目了然(因此更容易维护)。

Border

Border 就是围绕内容和填充绘制的线,注意边框如何在填充旁边碰撞,两者之间没有空隙。

h1 { border: 1px solid #5D6063; }

Margin

边距定义元素边框外的空间。或者更确切地说,一个盒子和它周围的盒子之间的空间。

p { margin-bottom: 50px; }

margin 和 padding 有一样的速记形式。 边距和填充可以在很多情况下完成同样的事情,因此很难确定哪一个是”正确的”选择。 您选择其中一个的最常见原因是:

  • 填充具有背景,而边距始终是透明的
  • 填充包含在元素的单击区域中,而边距则不包括在内
  • 边距会发生垂直折叠,而填充则不会

块级元素和内联元素之间最明显的对比之一是它们对边距的处理。Inline box 完全忽略元素的顶部和底部边距。 水平边距显示会像我们期望的那样,而元素周围的垂直空间没有变化。

strong { margin: 50px; }

如果我们将边距更改为填充,它会显示背景。但是,它不会影响周围盒子的垂直布局。

垂直边距折叠

盒子模型的另一个怪癖是”垂直边距折叠”。当你有两个垂直边距彼此相邻的盒子时,它们会折叠。不是将边距加到一起,而是仅显示最大的边距。

垂直外边距折叠最可能发生的两种简单情况:

  • 两个紧邻的兄弟元素的外边距发生折叠
  • 父子元素的外边距发生折叠
  1. 首子元素与父元素的上外边距发生折叠
  2. 尾子元素与父元素的下外边距发生折叠

预防边距折叠

有时我们确实希望防止边距折叠。做法就是在它们之间放置另一个不可见的元素。

一定要记住,填充不会折叠。

Content Boxes and Border Boxes

Content Boxes

我们定义的 width 属性仅表示内容的宽度。

我们可以通过修改 box-sizing 属性,使其变为不同的 Boxes。

box-sizing: border-box;

Border Boxes

Border Boxes 的 width 属性表示包括内容 + 填充 + 边框的总宽度。

注意: 只有 Block 元素修改 width 属性才生效,Inline 元素修改 width 属性无效。height 属性同理。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Block 元素和 Inline 元素
    • Block boxes 和 Inline boxes 的行为
      • 改变 Box 的行为
      • Content、Padding、Border and Margin
        • Padding
          • 速记格式
        • Border
          • Margin
          • 垂直边距折叠
            • 预防边距折叠
            • Content Boxes and Border Boxes
              • Content Boxes
                • Border Boxes
                相关产品与服务
                容器服务
                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档