CSS布局与居中

这篇文章会介绍本人已学会的CSS中常用的左右布局、左中右布局、水平居中方法、垂直居中方法和一些CSS小技巧,如有错误,欢迎指出~

1.左右布局

通过float:left;来实现
但要记得在布局元素的父元素里声明clearfix类,clearfix类的代码如下:

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

另外,可以通过设置元素width的比例来让调节布局的比例。

2.左中右布局

通过float:left;之后,调节三个元素之间的margin,并把第一个元素的margin-left设置成0即可。

/*css*/
.Border {
  width:200px;
  height:200px;
  border:1px solid red;
}
ol {
  list-style:none;
  margin:0;
  padding:0;
}
.clear::after {
  content:'';
  display:block;
  clear:both;
}
ol li {
  float:left;
  margin-left:30px;
}
ol li:nth-child(1) {
  margin-left:0;
}
<!--HTML-->
<div class="Border clearfix">
    <ol>
      <li>1</li>
      <li>2</li>
      <li>3</li>
    </ol>
</div>

这样就能实现左中右布局。

3.水平居中

(1)若是内联元素, 给其父元素设置text-align:center,即可实现行内元素水平居中。
(2)若是块级元素, 该元素设置 margin:0 auto;即可。

4.垂直居中

(1)若元素为单行文本,直接让其line-height等于父元素高度即可。
(2)若元素为块级元素,那么可以考虑通过display:inline-block;,并在父元素处使用伪元素after,由于两个内联元素是基于基线对齐,因此通过vertical-align:middle;来让两个元素居中对齐,再把伪元素设置成height:100%;,即可实现垂直居中的效果。具体代码如下:

/*css*/
.parent {
  width:200px;
  height:200px;
  border:1px solid red;
}
.parent::after, .son{
    display:inline-block;
    vertical-align:middle;
}
.parent::after{
    content:'';
    height:100%;
}
<!--HTML-->
<div class="parent">
 <div class="son">
   abc
 </div>
</div>

(3)如果元素为固定高度的块级元素,则可以通过相对定位和绝对定位来实现垂直居中,设置父元素相对定位position:relative, 子元素如下css样式:

.parent {
  width:200px;
  height:200px;
  border:1px solid red;
  position:relative;
}
.son{
    position:absolute;
    top:50%;
    height:20px;
    margin-top:-10px; /*固定高度的一半*/
}

或者

.parent {
  width:200px;
  height:200px;
  border:1px solid red;
  position:relative;
}
.son{
    position:absolute;
    height:20px;
    top:0;
    bottom:0;
    margin:auto 0;
}


5.其他小技巧

(1)clear:both;可以消除因为建议行高不同而导致浮动后无法对齐的问题。
(2)伪元素在CSS里要写content:'';否则不会出现,而且伪元素的内容是无法复制的。
(3)伪类不是实实在在的东西,是某个元素的状态,可能特指某些元素,要区分清楚伪类和伪元素。
(4)绝对定位后,元素类型会自动变为block。
(5)可以通过设置transition属性可以通过控制变化时间来控制元素变化的过程。
(6)使用了display:inline-block;之后,要习惯加vertical-align:top;来消除基线对齐。
(7)设置触摸标签时的手势:cursor:pointer;
(8)div里嵌套了img后,img底部会出现白边,因为img默认按基线对齐,因此要输入vertical-align:top;来消除白边。
(9)属性box-sizing:border-box;可以把边框和padding也算进宽度中。



本教程版权归宣泽彬所有,转载须说明来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 1. 前言 前端圈有个“梗”:在面试时,问个css的position属性能刷掉一半人,其中不乏工作四五年的同学。在...
    YjWorld阅读 10,085评论 5 15
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 12,529评论 3 30
  • 紫煊: 我亲爱的宝贝!妈妈昨天太想你了,总给姥姥打电话,想听听你的声音。结果你总是忙乎乎,不在家,看来你在...
    窚煊阅读 1,722评论 0 0
  • 连续阴雨绵绵了一个多月的贵阳今天迎来了艳阳天,同学们都脱下臃肿的棉服换上了春装,去上课的路上随手拍了几张照片。
    Luckier阅读 3,142评论 2 1