盒模型

作者: 陈守法 | 来源:发表于2018-01-27 21:03 被阅读0次

盒模型

盒模型

盒模型基础属性

浏览器默认样式

浏览器对某些元素设置有默认样式,如 h1, ul, li 等。

/* user agent stylesheet 即浏览器默认样式 */
h1 {
  display: block;
  font-size: 2em;
  -webkit-margin-before: 0.67em;
  -webkit-margin-after: 0.67em;
  -webkit-margin-start: 0px;
  -webkit-margin-end: 0px;
  font-weight: bold;
}

常见处理方式

* {
  margin: 0;
  padding: 0;
}

margin

水平居中

对于固定宽度的块级元素,设置 margin-left: auto, margin-right: auto即可实现水平居中

<div class="container">
  ...
</div>

.container {
  width: 960px; /* max-width: 960px; */
  margin: auto;
}

外边距合并

正常流(Normal Flow)下,外边距会进行合并。

  1. 相邻元素边距合并
<h1>好好学习</h1>
<h2>天天向上</h2>

h1 { margin: 20px 0; }
h2 { margin: 30px 0; }

  1. 父子元素合并范例
  <header></header>
  <main>
    <h1>饥人谷</h1>
  </main>
  <footer></footer>

  <style>
    header, footer {
      height: 30px;
      background: blue;
    }
    main {
      background: red;
    }

  </style>

  1. 自我合并

浮动元素和绝对定位元素的外边距不会合并。

外边距为负

设置 margin-left margin-right 为负数可以增加块状元素宽度。

<div class="T"></div>

.T {
  width: 30px;
  height: 210px;
  margin: 50px auto;
  background: orange;
}

.T::after {
  content: '';
  height: 30px;
  margin: 0 -70px;
  display: block;
  background: limegreen;
}

运行结果 https://codepen.io/twhy/pen/zzrQMR

display

display 用于设置元素渲染框的类型。

  • none 不显示元素。
  • block 显示为块状元素。
  • inline 显示为行内元素。
  • inline-block 显示为行内块,创建一个 BFC。
  • table-cell 显示行为与 <td> 一样。🌰 垂直居中 https://codepen.io/twhy/pen/rwejpZ
  • flex flex 布局
  • grid grid 布局
  • ...

问题 blockinlineinline-block 元素的区别是什么?

<details style="box-sizing: border-box; -webkit-tap-highlight-color: transparent; text-size-adjust: none; -webkit-font-smoothing: antialiased; display: block; font-size: 16px; color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.2px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"><summary style="box-sizing: border-box; -webkit-tap-highlight-color: transparent; text-size-adjust: none; -webkit-font-smoothing: antialiased; display: block; font-size: inherit;">参考答案</summary></details>

box-sizing

box-sizing 用于更改用于计算元素宽度和高度的默认的 CSS 盒模型。

box-sizing: content-box 默认值

.box {
  width: 300px;
  border: 10px;
}

渲染出来的盒子宽度为 320px

box-sizing: border-box

.box {
  width: 300px;
  border: 10px;
  padding: 10px;
  box-sizing: border-box;
}

渲染出来的盒子宽度为 300px

其他相关属性

outline

如果你看到被选中的 <a> <input> <button> 周围有一圈黄或蓝色的外框,就是 outline 了,可以通过设置 outline: 0outline: none 去除。

overflow

overflow 用于控制内容溢出包含它的块状元素时的显示方式。
overflow-xoverflow-y 分别用于控制水平溢出和垂直溢出。

  • visible 默认值 显示溢出的内容
  • hidden 内容被裁剪且不会出现滚动条
  • scroll 内容被裁剪但出现滚动条
  • auto 由浏览器决定

inline-block 常见问题 🕳️

inline-block 之间空隙

🤔 inline-block 之间有空格、Tab、换行符。
💡 给父元素设置 font-size: 0,在 inline-block 元素上重新设置 font-size

inline-block 导致父元素增高若干像素

💡 给 inline-block 元素设置 vertical-align: top

.item {
  vertical-align: top;
  display: inline-block;
  ...
}

通用解决办法 不要设置 inline-block,使用 floatflex

相关文章

  • CSS面试题

    1、盒模型 答:分为标准盒模型和怪异盒模型(IE盒模型) 标准盒模型:宽高(content)+ padding +...

  • CSS面试题

    1、 盒模型 答:分为标准盒模型和怪异盒模型(IE盒模型) 标准盒模型:宽高(content)+ padding ...

  • CSS盒模型和BFC

    盒模型 盒模型分为IE盒模型和W3C标准盒模型。 IE盒模型 IE盒模型也称border-box。属性width,...

  • 前端第四天

    前端第四天 目录: 盒模型之display 盒模型之overflow 盒模型之隐藏 盒模型之border 盒模型之...

  • 前端面试之浏览器/HTML/CSS问题

    盒模型 盒模型主要两种,标准盒模型和怪异和模型 标准盒模型:width指content部分的宽度 怪异盒模型:wi...

  • 前端面试之浏览器/HTML/CSS问题

    盒模型 盒模型主要两种,标准盒模型和怪异和模型 标准盒模型:width指content部分的宽度 怪异盒模型:wi...

  • 盒模型

    盒模型 盒模型,可以简单解释为:盒模型用来描述元素所占据的空间。有两种盒模型:W3C盒模型(标准盒模型)和IE盒模...

  • CSS

    Q1.简单描述CSS的盒模型 1.盒模型种类:包括标准盒模型和IE盒模型(怪异盒模型) 2.盒模型设置方式:通过b...

  • css问题

    标准盒模型&非标准盒模型(怪异盒模型) 标准盒模型 box-sizing (模型样式) 语法: box-sizin...

  • 两种Box Model(盒模型)的理解、区别以及注意事项

    盒模型,可以简单解释为:盒模型用来描述元素�所占据的空间。 有两种盒模型:W3C盒模型(标准盒模型)和IE盒模型这...

网友评论

      本文标题:盒模型

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