CSS布局

2018-10-08  本文已影响0人  饥人谷_王捷

介绍几种简单的css布局方式。

两栏布局

<div id='left'>left</div>
<div id='right'>right</div>
#left {
  float: left;
  width: 100px;
}
#right {
  margin-left: 100px;
}

两栏布局最简单的方式就是使用浮动,浮动其中一个元素,通常要给浮动的元素一个宽度,可以是固定值,也可以是百分数。添加浮动的元素脱离文档流,所以为了使非浮动元素显示完整,可以给非浮动元素添加一个外边距使内容远离浮动元素的遮盖。
另外,通常要在浮动元素的父元素中添加清除浮动类,代码如下。

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

另外一种效果更好的方式是使用display: table;,此方式产生的两栏高度相同并且没有浮动产生的副作用。

<div id='table'>
  <div id='table_row'>
    <div class='table_cell'>1</div>
    <div class='table_cell'>2</div>
  </div>
</div>
#table {
  display: table;
}
#table_row {
  display: table-row;
}
.table_cell {
  display: table-cell;
  vertical-align: top; 
}

三栏布局

三栏布局的实现方式和两栏布局基本相同。

<div class='left'>left</div>
<div class='center'>center</div>
<div class='right'>right</div>
.left {
  float: left;
  width: 100px;
}
.rigth {
  float: right;
  width: 100px;
}
.center {
  margin: 0 100px;
}

同样的,要在浮动的父级元素添加清除浮动代码,同上。

<div id='table'>
  <div id='table_row'>
    <div class='table_cell'>1</div>
    <div class='table_cell'>2</div>
    <div class='table_cell'>3</div>
  </div>
</div>
#table {
  display: table;
}
#table_row {
  display: table-row;
}
.table_cell {
  display: table-cell;
  vertical-align: top; 
}

水平居中

水平居中可分为几种情况.

<div>p</div>
<nav>
  <a>1</a>
  <a>2</a>
  <a>3</a>
</nav>
div, nav {
  text-align: center;
}
<div>
   I'm a block level element and am centered.
</div>
div {
  margin: 0 auto;
}

如果含有多个块级元素,则可以使用display: inline-block;将多个块级元素转换为内联块级元素,然后在它们的父级元素使用text-align: center;即可。

垂直居中

<div>I'm vertically centered multiple lines of text in a real table cell.</div>
div {
  padding: 20px 0;
  margin: 10px 0;
}

或者可以是用line-height来实现。

div {
  height: 100px;
  line-height: 100px;
}

还可以使用display: table;来实现。

.parent {
  display: table;
}
.child {
  display: table-cell;
  vertical: middle;
}
  1. 当元素高度已知。
.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  height: 100px;
  margin-top: -50px;
}
  1. 当元素高度未知。
.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
}

以上就是一些基本的布局方式,实际情况可能会比这些复杂的多,要考虑浮动以及绝对定位会脱离文档流,各种布局方式同时使用时产生的意想不到的情况。

其他小技巧。

上一篇 下一篇

猜你喜欢

热点阅读