⤴Top⤴

CSS 盒子模型与定位

博客分类: 前端

CSS 盒子模型与定位

CSS 盒子模型与定位

什么是盒子模型

盒子模型包含 4 个属性,即内容(content)填充(padding)边框(border)边界(margin)。目前有两种模型:

标准盒子模型

box-model-w3c

IE 盒子模型

box-model-ie

可以看出和标准 W3C 盒子模型不同的是,IE 盒子模型的 content 部分包含了 border 和 padding。

box-sizing

CSS3 引进了 box-sizing 属性,用来设置或检索对象的盒模型组成模式,取值为:

box-sizing:content-box | border-box

如下例子,盒子模型下的四个属性都一致时的表现:

content-box
border-box

利用盒子模型还可以画出常用的倒三角:

/*箭头向下*/
.arrow-down {
  width: 0;
  height: 0;
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
  border-top: 20px solid #0066cc;
}

定位 position

定位(position)用来设置定位方式,当 position 的值为非 static 时,其层叠级别通过 z-index 属性定义,偏移量通过 toprightbottomleft 这 4 个定位偏移属性进行定义。position 属性有以下几个值:

relative

先看个默认下 static 的栗子:

static

在上面方块样式中添加 position:relative,并用 top 等定位偏移属性进行调整,可见其原本的空间仍然保留,不会影响常规流中的任何元素:

relative

absolute

再看看 absolute 绝对定位,已经脱离文档流:

absolute: 我感觉我跑偏了 😭

这次将小方块作为父元素,设置为 relative,里面嵌套了绿色方块,且设置为 absolute,则子元素绝对定位是依赖于父元素的:

absolute: 在呵护下成长 😁

其规则为: 当元素设置 position:absolute 时,位置就是以其父代元素 position 不为 static 的元素作为参考,若都为 static,则以一直回溯到 body 元素。

fixed

再看看 fixed 固定定位,是以窗口为参考的,在下面的栗子中,虽然它被包裹在褐色方块下,但它其实一直在你屏幕的右上角:

fixed: 是不是觉得我很烦,因为我是下面栗子要用到的
absolute: 在呵护下成长 😁,fixed 兄弟仍在外流浪

利用 fixed 居中显示的一个方法:

.center{
  position: fixed;
  width: 200px;
  height: 200px;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background-color:orange;
}

参考链接

  1. css 盒模型和定位扫盲