我爱编程

CSS布局

2018-04-07  本文已影响20人  酷热summer

今天我们介绍一下CSS的一些布局处理:

一、左右布局
1)浮动完成左右布局:

结构:

<div class="box clearfix">
  <div class="div1 div">div1</div>
  <div class="div2 div">div2</div>
</div>

样式:

<style>
    *{
      box-sizing: border-box;
    }
    .box{
      width: 202px;
      height: 200px;
      border:1px solid #e6e6e6;
    }
    .div{
      width: 100px;
      height: 100px;
      border:1px solid #f00;
      float: left;
    }
    .clearfix:before{
      content:'';
      display: block;
      clear: both;
    }
  </style>

具体还可使用float:right进行右对齐。

2)设置div为行内块

布局:

<div class="box">
  <div class="div1 div">div1</div>
  <div class="div2 div">div2</div>
</div>

样式:

<style>
  *{
    box-sizing: border-box;
  }
  .box{
    width: 202px;
    height: 200px;
    border:1px solid #e6e6e6;
    font-size: 0px;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
    display: inline-block;
    vertical-align: top; 
    font-size: 12px;
  }
</style>

子元素宽度可根据需要使用百分比或者固定宽度。
此处需要注意两个问题:

3)flex布局

flex常用布局为左侧固定宽度右侧自适应。
页面结构为:

<div class="box">
  <div class="div1 div">div1</div>
  <div class="div2 div">div2</div>
  <div class="div2 div">div3</div>
</div>

样式为:

<style>
  *{
    box-sizing: border-box;
  }
  .box{
    width: 202px;
    height: 200px;
    border:1px solid #e6e6e6;
    display: flex;
    flex-direction: row;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
  }
  .div1{
    width: 50px;
  }
  .div2{
    flex: 1;
  }
</style>
二、左中右布局
1)浮动完成左中右布局:

布局:

<div class="box clearfix">
  <div class="div1 div">div1</div>
  <div class="div2 div">div2</div>
  <div class="div3 div">div3</div>
</div>

样式:

<style>
  *{
    box-sizing: border-box;
  }
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
  }
  .div{
    height: 100px;
    border:1px solid #f00;
    font-size: 12px;
  }
  .div1{
    width: 50px;
    float: left;
  }
  .div2{
    width: 200px;
    display: inline-block;
    vertical-align: top; 
  }
  .div3{
    width: 50px;
    float: right;
  }
  .clearfix:before{
    content:'';
    display: block;
    clear: both;
  }
</style>
2)行内块

布局:

<div class="box">
  <div class="div1 div">div1</div>
  <div class="div2 div">div2</div>
  <div class="div3 div">div3</div>
</div>

样式:

<style>
  *{
    box-sizing: border-box;
  }
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    font-size: 0px;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
    font-size: 12px;
    display: inline-block;
    vertical-align: top; 
  }
  .div1{
    width: 50px;
  }
  .div2{
    width: 200px;
  }
  .div3{
    width: 50px;
  }
</style>
3)flex

布局:

<div class="box">
  <div class="div1 div">div1</div>
  <div class="div2 div">div2</div>
  <div class="div3 div">div3</div>
</div>

样式:

<style>
  *{
    box-sizing: border-box;
  }
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    display: flex;
    flex-direction: row;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
  }
  .div1{
    flex: 1;
  }
  .div2{
    width: 200px;
  }
  .div3{
    flex: 1;
  }
</style>
三、水平居中
1)设置为行内块

布局:

<div class="box">
  <div class="div">div</div>
</div>

样式:

<style>
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    text-align: center;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
    display: inline-block;
  }
</style>

或者不使用text-align:center,只对子元素div.div设置宽度,然后样式添加margin:0 auto;同样可完成水平居中。

2)flex布局实现水平居中

布局与上述相同,样式为:

<style>
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    display: flex;
    flex-direction: row;
    justify-content: center;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
    display: inline-block;
  }
</style>
3)绝对定位

布局仍旧与上述相同,样式为:

<style>
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    position: relative;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
  }
</style>
四、垂直居中
1)设置为行内块

布局为:

<div class="box">
  <div class="div">div</div>
</div>

样式为:

<style>
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    line-height: 200px;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
    display: inline-block;
    vertical-align: middle;
    line-height: 100px;
  }
</style>
2) flex垂直居中

布局同上,样式为:

<style>
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    display: flex;
    flex-flow: row;
    align-items: center;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
  }
</style>
3)绝对定位

布局同上,样式为:

<style>
  .box{
    width: 303px;
    height: 200px;
    border:1px solid #e6e6e6;
    position: relative;
  }
  .div{
    width: 100px;
    height: 100px;
    border:1px solid #f00;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
  }
</style>

关于CSS布局与样式暂时就介绍这么多,如有错误敬请指正。个人原创,转载请注明出处。本文已转发至个人博客知乎

上一篇 下一篇

猜你喜欢

热点阅读