CSS布局技巧 | 青训营

97 阅读3分钟

一、float浮动布局

  • 文档流

正常文档流,将一个页面从上到下分为一行一行的,其中块元素独占一行,相邻行内元素在每一行中按照从左到右排列直到该行排满。”即,正常文档流指的就是默认情况下页面元素的布局情况。如div、p、hr都是块元素,因此独占一行。而span、i、img都是行内元素,因此如果两个行内元素相邻,就会位于同一行,并且从左到右排列。

  • 脱离文档流

使得标签不再遵循文档流规则(不再占据文档流大小),处于漂浮状态。浮动是CSS布局的最佳利器,我们可以通过浮动来灵活地定位页面元素,以达到布局网页的目的。例如我们可以通过设置float属性让元素向左浮动或者向右浮动,以便让周围的元素或文本环绕着这个元素。float属性值只有两个:left / right。如果出现子元素全部浮动,导致了父视图高度为0,导致了页面紊乱,可以通过给父视图添加固定高度解决。

   .left {
        float: left;
        width: 100px;
        height: 200px;
        background: black;
    }
    .right {
        float: right;
        width: 100px;
        height: 200px;
        background: blue;
    }

二、position定位布局

  • 相对定位:relative

依据原本的位置进行定位,参考点:本身的位置,在原本的位置上进行偏移时,一般可以使用相对定位。相对定位的元素脱离标准文档流,不会对文档流产生影响,但是它原本的位置还是被自己占用着,别人无法占用。当进行了相对定位,基本上都要通过top, left, bottom, right来设置偏移量。

  • 绝对定位:absolute

绝对定位的文档流被释放了。首先,他会查找自己的父视图是否带有定位属性,如果有,则相对于【父视图左上角的点】进行定位;如果没有,则查找父视图的父视图,以此类推,如果都没有,他会相对于原点定位。他的上下左右定位,不是平移,他是相对于父视图的距离。多个元素都进行了绝对定位,都完全脱离了标准流 ,多个元素可能发生重叠 。默认情况下,后面的元素会覆盖前面的元素。

  • 固定定位:fiexd

完全脱离标准文档流。固定定位的参考点是浏览器的窗口,不会随着内容的滚动而滚动。 也需要设置偏移量:top right bottom left。语法: position:fixed。多用于网页的头部区域固定。

三、flex弹性盒子布局

flex容器:任何一个容器都可以指定为flex布局(display:flex),其包含flex项。

flex项:(也称flex子元素),需要布局的元素 排列方向(direction):决定了flex项的布局方向。

容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。

  • 弹性盒布局的常用属性有7个,具体如下

display属性用于指定元素容器的类型。

flex-flow属性用于排列弹性子元素。

justify-content属性设置子元素在主轴方向的排列方式。

align-items属性用于定义子元素在侧轴上的对齐方式。

order属性用于设置子元素出现的排列顺序,数值越小,排列将会越靠前,默认为0

flex属性能够设置子元素的伸缩性

align-self属性能够覆盖容器中的align-items属性,用于设置单独的子元素如何沿着纵轴排列

我们经常遇到弹性盒子布局时,文字需居中的情况,可以通过以下方法实现:

.box1{
	width: 200px;
	height: 200upx;
	display: flex;
        align-items: center;
	justify-content: center;
	background-color: red;
}