龙空技术网

你需要知道的css布局

魔法小白呀哈哈 87

前言:

如今大家对“简单的css布局”都比较讲究,咱们都需要分析一些“简单的css布局”的相关内容。那么小编同时在网摘上收集了一些对于“简单的css布局””的相关资讯,希望小伙伴们能喜欢,咱们一起来了解一下吧!

背景

布局是我们前端开发中不可避免的,简单回忆一下 css 的布局方案,供大家参考以及自己参阅。

居中布局

这里的居中布局是不定宽度为前提,固定宽度情况也包含其中。

水平居中inline-block + text-align

.parent {    text-align: center;}.child {    display: inline-block;}复制代码

这个方案的兼容性比较好,可兼容到 IE8,对于 IE567 不支持inline-block,需要使用 css hack 进行兼容。

table + margin

.child {    display: table;    margin: 0 auto;}复制代码

这个方案兼容到 IE8,可以使用

代替 css 写法,兼容性更好。

absolute + transform

.parent {    position:relative;    height:1.5em;}.child {    position:absolute;    left:50%;    transform:translateX(-50%);}复制代码

这个方案兼容到 IE9,因为transform兼容性导致,如果.child为定宽元素,可以使用以下写法,提高兼容性。

.parent {    position: relative;    height:1.5em;}.child {    position: absolute;    width:100px;    left:50%;    margin-left:-50px;}复制代码
flex + justify-content
.parent {    display:flex;    justify-content;}.child {    margin:0 auto;}复制代码

flex 布局很强大,但是受到兼容的限制。不考虑兼容可以大胆使用。

垂直居中布局table-cell + vertial-align

.parent {    display: table-cell;    vertical-align: middle;}复制代码

此方案可以用

替换,提高兼容性。

absolute + transform

.parent {    position: relative;}.child {    position: absolute;    top: 50%;    transform: translateY(-50%);}复制代码

css3 新属性兼容性不是很好。

flex + align-items

.parent {    display: flex;    align-items: center;}复制代码

兼容性不是很好,不考虑低版本浏览器。

水平垂直居中inline-block + table-cell + text-align + vertical-align

.parent{ text-align: center; display: table-cell; vertical-align: middle;}.child{ display: inline-block;}复制代码

兼容到 IE8.

absolute + transform

.parent{ position: relative;}.child{ position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);}复制代码

兼容性差,兼容 IE10 以上

flex

.parent{ display: flex; justify-content: center; align-items: center;}复制代码

兼容差

多列布局一列定宽,一列自适应float + margin

.left{ float: left; width: 100px;}.right{ margin-left: 120px;}复制代码

此方案对于定宽布局比较好,不定宽布局推荐下面方法 2.

float + overflow

.left{ float: left; width: 100px; margin-right: 20px;}.right{ overflow: hidden;}复制代码

此方案不管是多列定宽或是不定宽,都可以完美实现,同时可以实现等高布局。

table

.parent{ display: table; width: 100%; table-layout: fixed;}.left,.right{ display: table-cell;}.left{ width: 100px; padding-right: 20px;}复制代码
flex
.parent{ display: flex;}.left{ width: 100px; padding-right: 20px;}.right{ flex: 1;}复制代码
多列定宽,一列自适应float + overflow
.left,.center{ float: left; width: 100px; margin-right: 20px;}.right{ overflow: hidden;}复制代码
table
.parent{ display: table; width: 100%; table-layout: fixed;}.left,.center,.right{ display: table-cell;}.right{ width: 100px; padding-right: 20px;}复制代码
flex
.parent{ display: flex;}.left,.center{ width: 100px; padding-right: 20px;}.right{ flex: 1;}复制代码
一列不定宽,一列自适应float + overflow
.left{ float: left; margin-right: 20px;}.right{ overflow: hidden;}.left p{width: 200px;}复制代码
table
.parent{ display: table; width: 100%;}.left,.right{ display: table-cell;}.left{ width: 0.1%; padding-right: 20px;}.left p{width:200px;}复制代码
flex
.parent{ display: flex;}.left{ margin-right: 20px;}.right{ flex: 1;}.left p{width: 200px;}复制代码
多列不定宽,一列自适应float + overflow
.left,.center{ float: left; margin-right: 20px;}.right{ overflow: hidden;}.left p,.center p{ width: 100px;}复制代码
等分float + margin
.parent{ margin-left: -20px;}.column{ float: left; width: 25%; padding-left: 20px; box-sizing: border-box;}复制代码
table + margin
.parent-fix{ margin-left: -20px;}.parent{ display: table; width:100%; table-layout: fixed;}.column{ display: table-cell; padding-left: 20px;}复制代码
flex
.parent{ display: flex;}.column{ flex: 1;}.column+.column{ margin-left:20px;}复制代码
等高float + overflow
.parent{ overflow: hidden;}.left,.right{ padding-bottom: 9999px; margin-bottom: -9999px;}.left{ float: left; width: 100px;}.right{ overflow: hidden;}复制代码
table
.parent{ display: table; width: 100%;}.left{ display:table-cell; width: 100px; margin-right: 20px;}.right{ display:table-cell;}复制代码
flex
.parent{ display:flex; width: 100%;}.left{ width: 100px;}.right{ flex:1;}复制代码
并排等分,单排对齐靠左布局flex
.main {    display: flex;    flex-flow: row wrap;    justify-content: space-between;}.item {    display: inline-block;}.empty{    height: 0;    visibility: hidden;}复制代码
圣杯布局&双飞翼布局圣杯布局
<div class="container">    <div class="header">header</div>    <div class="wrapper clearfix">        <div class="main col">main</div>        <div class="left col">left</div>        <div class="right col">right</div>    </div>    <div class="footer">footer</div></div>.container {width: 500px; margin: 50px auto;}.wrapper {padding: 0 100px 0 100px;}.col {position: relative; float: left;}.header,.footer {height: 50px;}.main {width: 100%;height: 200px;}.left {width: 100px; height: 200px; margin-left: -100%;left: -100px;}.right {width: 100px; height: 200px; margin-left: -100px; right: -100px;}.clearfix::after {content: ""; display: block; clear: both; visibility: hidden; height: 0; overflow: hidden;}复制代码
双飞翼布局
<div class="container">    <div class="header">header</div>    <div class="wrapper clearfix">        <div class="main col">            <div class="main-wrap">main</div>        </div>        <div class="left col">left</div>        <div class="right col">right</div>    </div>    <div class="footer">footer</div></div>.col {float: left;}.header {height: 50px;}.main {width: 100%;}.main-wrap {margin: 0 100px 0 100px;height: 200px;}.left {width: 100px; height: 200px; margin-left: -100%;}.right {width: 100px; height: 200px; margin-left: -100px;}.footer {height: 50px;}.clearfix::after {content: ""; display: block; clear: both; visibility: hidden; height: 0; overflow: hidden;}复制代码
定位布局
<div class="header">header</div><div class="wrapper">    <div class="main col">        main    </div>    <div class="left col">        left    </div>    <div class="right col">        right    </div></div><div class="footer">footer</div>.wrapper { position: relative; }.main { margin:0 100px;}.left { position: absolute; left: 0; top: 0;}.right { position: absolute; right: 0; top: 0;}复制代码

链接:

作者:water

来源:掘金

标签: #简单的css布局 #jqueryie8parent #css布局思想 #css怎么布局