CSS各种布局和技巧

2019-06-04  本文已影响0人  WlSE

本文主要参考CSS 布局经典问题初步整理, 还有一些自己的看法.

左右布局

  1. float和负margin,在一个容器中有两个子元素, 第一个子元素左浮动, 第二个子元素, margin: -第一个子元素的宽度
  2. 用绝对定位和margin: 还是一个容器中两个子元素, 第一个绝对定位, 宽度可以定死, 然后 第二个元素的margin-left: 就是第一个元素的嗯宽度;

左中右布局

常用双飞翼布局和圣杯布局, 圣杯布局和双飞翼布局解决的问题是一样的,都是两边定宽,中间自适应的三栏布局

圣杯布局

父盒子包含三个子盒子(左,中,右)

<!-- 圣杯的 HTML 结构 -->
<div class="container">
    <!-- 中间的 div 必须写在最前面 -->
    <div class="middle">中间弹性区</div>
    <div class="left">左边栏</div>
    <div class="right">右边栏</div>
</div>

演示jsbin

双飞翼布局

父盒子包含三个子盒子(左,中,右),中间的子盒子里再加一个子盒子。

<!-- 双飞翼的 HTML 结构 -->
<div class="container">
    <!-- 中间的 div 必须写在最前面 -->
    <div class="middle">
         <div class="middle-inner">中间弹性区</div>
    </div>
    <div class="left">左边栏</div>
    <div class="right">右边栏</div>
</div>

演示jsbin

圣杯和双飞翼异同

圣杯布局和双飞翼布局解决的问题是一样的,都是两边定宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染。

简单说起来就是双飞翼布局比圣杯布局多创建了一个 div,但不用相对布局了,少设置几个属性。

浮动实现三联布局

我自己使用浮动也实现了三栏式布局:左边盒子左浮动,右边盒子右浮动,中间盒子利用 margin-leftmargin-right 来为左右盒子留位置,同时父盒子设置 overflow: auto; 来避免子盒子溢出。

<!-- 浮动实现的 HTML 结构 -->
<div class="container">
    <div class="left">左边栏</div>
    <div class="right">右边栏</div>
    <!-- 中间的 div 必须写在最后面 -->
    <div class="middle">中间弹性区</div>
</div>

水平居中

垂直居中

水平垂直居中

其他技巧

用浮动的时候, 需要clearfix清除浮动, 记住:

.clearfix::after{
    content:'';
    display: block;
    clear:both
}

把浮动元素的父级加上clearfix这个类, 就能做到没有副作用的清楚浮动.

注意:

元素高度由什么决定

由内容决定 div高度由其内部文档流元素的高度总和决定(决定不是相等)

文档流: 文档内元素的流动方向, 行内元素从左到右, 块级元素从上到下.

上一篇 下一篇

猜你喜欢

热点阅读