走进CSS布局

2018-08-03  本文已影响0人  猫晓封浪

div+css布局中常用的布局方式有两种:浮动定位

浮动

float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动中移除,尽管仍然保持部分的流动性(与绝对定位相反)。

常用值:

浮动可以让多个div在一行显示,“float”只有左右浮动和none。让元素默认转换为“内联块级元素”。

清除浮动的方式:

  1. 额外标签法:在浮动的左后一个元素后,新加一个标签,然后清除浮动。选择器{clear: both;}
  2. 给浮动的元素的父元素添加css样式。overflow: hidden;
  3. 伪元素清除浮动。
选择器::after{
        content: "";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
}

定位

CSS position属性用于指定一个元素在文档中的定位方式。toprightbottomleft属性则决定了该元素的最终位置。

常用值:

静态定位:用处是使元素取消定位。
相对定位:1. 边偏移时,元素位置移动,但是原位置还在。2. 边偏移时,元素总是以“自己”的左上角为主。
绝对定位:1. 不占位置,完全脱离文档流。2. 以当前屏幕的左上角为准。3. 当父级元素有定位时,以就近的父级元素的左上角为主。

左右布局

html代码:

  <div class="left">left</div>
  <div class="right">right</div>

css代码:

.left{
  width: 30%;
  height: 50px;
  background-color: red;
  float: left;
}
.right{
  margin-left: 32%;
  height: 50px;
  background-color: yellow;
}
效果图:
  <div class="big">
      <div class="left">left</div>
      <div class="right">right</div>
  </div>

css代码:

.big{
  position: relative;
}
.left{
  width: 30%;
  height: 50px;
  background-color: red;
  position: absolute;
}
.right{
  width: 69%;
  height: 50px;
  background-color: yellow;
  position: absolute;
  left: 31%;
}

左中右布局

html代码:

    <div class="left">left</div>
    <div class="right">right</div>
    <div class="middle">middle</div>

css代码:

.left{
  width: 20%;
  height: 50px;
  background-color: red;
  float: left;
}
.right{
  width: 20%;
  height: 50px;
  background-color: yellow;
  float: right;
}
.middle{
  height: 50px;
  background-color: pink;
  margin-left: 21%;
  margin-right: 21%;
}
效果图:

html代码:

  <div class="big">
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="middle">middle</div>
  </div>

css代码:

.big{
  position: relative;
}
.left{
  width: 20%;
  height: 50px;
  background-color: red;
  position: absolute;
  left: 0;
}
.right{
  width: 20%;
  height: 50px;
  background-color: yellow;
  position: absolute;
  right: 0;
}
.middle{
  width: 58%;
  height: 50px;
  background-color: pink;
  position: absolute;
  left: 21%;
}

水平居中

 <!-- html代码: -->
  <p>
    <span>hello</span>
  </p>
/*css代码:*/
p{
  text-align: center;
  border: 1px solid red;
}
span{
  border: 1px solid #000;
}

可以看到黑色边框的<span>在红色边框的<p>内居中。
 <!-- html代码: -->
  <div class="box">
    <div class="box-inner"></div>
  </div>
/* css代码:*/
.box{
  width: 200px;
  height: 200px;
  border: 1px solid #000;
}
.box-inner{
  width: 100px;
  height: 100px;
  border: 1px solid #000;
  margin: 0 auto;
}

定位的方法:
分两步:
  1. 首先left: 50%;,父级元素的一半。
  2. 再偏移自己宽度的负的一半。
 <!-- html代码: -->
  <div class="box">
    <div class="box-inner"></div>
  </div>
/* css代码:*/
.box{
  width: 200px;
  height: 200px;
  border: 1px solid #000;
  position: relative;
}
.box-inner{
  width: 100px;
  height: 100px;
  border: 1px solid #000;
  position: absolute;
  left: 50%;
  margin-left: -50px;
}

效果如上margin方法。

垂直居中

/* css代码:*/
.box{
  width: 200px;
  height: 200px;
  border: 1px solid #000;
  position: relative;
}
.box-inner{
  width: 100px;
  height: 100px;
  border: 1px solid #000;
  position: absolute;
  left: 50%;
  margin-left: -50px;
  top: 50%;
  margin-top: -50px;
}
/* css代码:*/
.box{
  width: 200px;
  height: 200px;
  border: 1px solid #000;
  position: relative;
}
.box-inner{
  width: 100px;
  height: 100px;
  border: 1px solid #000;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50px,-50px);
}

效果同上。

上一篇 下一篇

猜你喜欢

热点阅读