前言:在网页布局中,经常遇到需要使元素居中对齐的时候,居中对齐的方式有:水平居中、垂直居中和水平垂直居中。这次,借此回顾总结一下,并在此记录下相关内容。

一、水平居中:

(1)行内元素的水平居中

如果被设置的元素为文本、图片等行内元素时,在父元素中设置text-align:center实现行内元素水平居中,将子元素的设置为display:inline-block,使子元素变成行内元素;

<div class="parent" style="background-color: gray;"><div class="child" style="background-color: light-blue;">demo</div>
</div>
<style>
.parent {text-align: center;
}
.child {display: inline-block;
}
</style>

   (2)块状元素的水平居中(定宽)

当被设置元素为定宽块级元素时用text-align:center;就不起作用了。可以通过设置“margin: 0 auto;”来实现居中的。

<div class="parent" style="background-color: gray;"><div class="child" style="background-color: lightblue;">demo</div>
</div>
.child {width: 200px;margin: 0 auto;
}

(3)块状元素的水平居中(不定定宽)

在实际工作中,我们会遇到需要为“不定宽度的块级元素”设置居中,如网页上的分页导航,因为分页的数量是不确定的,所以,不能通过设置宽度来限制它的弹性。

可以直接给补丁款的块级元素设置text-align:center;来实现,也可以给父元素加text-align:center;来实现居中效果。

当不定宽块级元素的宽度不要占一行时,可以设置display为inline类型或inline-block(设置为行内元素显示或行内块元素)。

<div class="container"><ul><li><a href="#">1</a></li><li><a href="#">2</a></li><li><a href="#">3</a></li></ul>
</div>
.container {text-align: center;background: beige;
}
.container ul {list-style: none;margin: 0;padding: 0;display: inline-block;
}
.container li {margin-right: 8px;display: inline-block;
}

二、垂直居中

和水平居中一样,垂直居中,首先需设定两个条件即父元素是盒子容器且高度已经设定。

(1)子元素是行内元素,高度是由其内容撑开的。

这种情况下,需要通过设定父元素的line-height为其高度来使得子元素垂直居中。

<div class="wrap line-height"><span class="span">111111</span>
</div>
.wrap {width: 200px;height: 300px;line-height: 300px;border: 2px solid #ccc;
}
.span {background: red;
}

 (2)子元素是块级元素但子元素高度没有设定,在这种情况下,实际上是不知道子元素的高度的,无法通过计算得到padding或margin来调整。

可以通过给父元素设定display:table-cell;vertical-align:middle;来解决。

<div class="wrap"><div class="non-height">111111</div>
</div>
.wrap {width: 200px;height: 300px;border: 2px solid #ccc;display: table-cell;vertical-align: middle;
}
.non-height {background: green;
}

(3)子元素是块级元素且高度已经设定

计算子元素的margin-top或margin-bottom,计算方法为父(元素高度-子元素高度)/ 2;

<div class="wrap"><div class="div1">111111</div>
</div>
.wrap {width: 200px;height: 300px;border: 2px solid #ccc;
}
.div1 {width: 100px;height: 100px;margin-top: 100px;background: darkblue;
}

三、水平垂直居中

(1)水平对齐+行高

text-align + line-height实现单行文本水平垂直居中

<style>.test {text-align: center;line-height: 100px;
}
</style>
<div class="test" style="background-color: lightblue;width: 200px;"></div>

(2)水平+垂直对齐

①text-align + vertical-align 在父元素设置text-align和vertical-align,并将父元素设置为table-cell元素,子元素设置为inline-block元素。

<style>
.parent {display: table-cell;text-align: center;vertical-align: middle;
}
.child {display: inline-block;
}
</style>
<div class="parent" style="background-color: gray; width: 200px; height:100px;><div class="child" style="background-color: lightblue;">测试文字</div>
</div>

②若子元素是图像,可不使用table-cell,而是其父元素用行高代替高度,且字体大小设为0。子元素本身设置vertical-align:middle;

<style>
.parent {text-align: center;line-height: 100px;font-size: 0;
}
.child {vertical-align: middle;
}
</style>
<div class="parent" style="background-color: gray; width: 200px;"><img class="child" src="data:images/1.png" width="50%" alt="test">
</div>

(3)相对+绝对定位

使用absolute,利用绝对定位元素的盒模型特性,在偏移属性为确定值的基础上,设置margin: auto;

<style>
.parent {position: relative;
}
.child {position: absolute;top: 0;left: 0;right: 0;bottom: 0;width: 80px;margin: auto;
}
</style>
<div class="parent" style="background-color: lightgray;width: 200px; height: 100px;><div class="child" style="background-color: lightblue;">测试文字</div>
</div>

PS:01、补充《三》中的水平垂直居中的方式(2018/08/29)

translate()函数可以在不知道自身宽高的情况下,利用它进行水平垂直居中。但是,有兼容性问题,支持IE9+的游览器。

使用translate函数,配合left,top属性,可以让目标元素始终保持水平垂直居中,当游览器窗口发生变化时,也能一直保持水平垂直居中。

<div class="wrap">不知道宽高,可以水平垂直居中
</div>
.wrap {padding: 10px;background: green;color: #fff;border-radius: 5px;position: absolute;top: 50%;left: 50%;  /*定位margin-left:50%的位置*/-webkit-transform: translate(-50%,-50%); /*Safari,Chrome*/-moz-transform: translate(-50%,-50%);  /*IE9+*/transform: translate(-50%,-50%); /*使元素本身向左移动宽度的一半*//*transform使元素在当前位置分别往x轴,y轴正向平移自身宽度的一半距离。*/
}

02、补充《三》中的水平垂直居中的方式(2018/11/29)

场景:使用背景图片属性,使图片在父元素的盒子中始终居中,但是,背景图片的尺寸大小不固定。

关键:background-position:center center;(background-position:50% 50%;)属性。

<div class="index-imgBlock"><div class="index-image"></div>
</div>
.index-image {height: 268px;/*选取三张图片中最大高度的尺寸设定*/width: 100%;max-width: 484px; /*选取三张图片中的最大宽度的尺寸设定*/background: url(images/403.png);       /*403图片尺寸为484*206*//*background: url(images/404.png);*/   /*403图片尺寸为428*268*//*background: url(images/500.png);*/   /*500图片尺寸为475*236*/background-position: center center;border: 1px solid #333333;
}

background-position属性默认值为0% 0%,即背景图像的左上角与对象背景区域的左上角对齐。使用background-position:center center;/background-position:50% 50%;这样就可以使背景图像的中心,与背景区域的中心对齐,即背景图像位于对象的中央位置。

参考博客:CSS布局(六)对齐方式  点击打开链接  http://www.cnblogs.com/chaixiaozhi/p/8490725.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

CSS布局对齐方式--水平居中、垂直居中、水平垂直居中相关推荐

  1. 【css】常用的几种水平垂直居中方式与盒子模型,面试经常问到!

    div水平垂直居中 假设结构为此,2个div嵌套 <div class="box"><div class="content"></ ...

  2. html背景图片垂直居中,css — 定位、背景图、水平垂直居中

    css - 定位.背景图.水平垂直居中 目录 1. 定位 2. 背景图 3. 水平垂直居中 1. 定位 position:static | relative | absolute | fixed; s ...

  3. CSS水平居中+垂直居中+水平/垂直居中的方法总结

    目录 水平居中 行内元素 块级元素 方案一:(分宽度定不定两种情况) 方案二:使用定位属性 方案三:使用flexbox布局实现(宽度定不定都可以) 垂直居中 单行的行内元素 多行的行内元素 块级元素 ...

  4. css实现文字或者div盒子水平垂直居中的方法

    实现水平垂直居中的方法 文本(文字)内容属于行内元素 行内元素水平垂直居中方法 方式一: 设置文字外层的盒子 text-align:center /*水平居中*/ height = 100px; /* ...

  5. 水平居中,垂直居中,水平垂直居中(常用方法)

    水平居中 方法一: 也是平常用的最基本,最多的了. text-align: center ; 方法二: 子盒子的样式加:marign: auto : <div class="big-d ...

  6. CSS实现文字和图片的水平垂直居中

    一.文本的水平垂直居中: 1.水平居中: 是不是很开心?超级简单的问题,一个text-align:center 就搞定了.过过过- ---------------------------------- ...

  7. css中文字段落对齐,CSS段落对齐方式

    CSS段落对齐有两种方式:水平对齐和垂直对齐. 1.水平对齐: (1).text-align:left;         //左对齐 (2).text-align:right;      //右对齐 ...

  8. css实现文字纵向排版并且水平垂直居中

    第一种方法:CSS属性write-mode实现文字竖排 .wordWrapClass{word-wrap: break-word;/*英文的时候需要加上这句,自动换行*/ /*自测了这句话没啥用*/w ...

  9. CSS——文字对齐方式

    横向对齐 方法1:单行块级元素水平居中只用添加text-align即可,如P标签,垂直居中vertical-align只适用于行内元素与单元格,所以设置行高与块高度相同即可 text-align: c ...

最新文章

  1. table control中用帮助(F4)实现自动填充另一字段
  2. 怎么改善现有网站为xhtml+CSS
  3. SAP业务测评之库存预留
  4. matlab私有函数,MATLAB 嵌套函数,子函数,私有函数,重载函数
  5. python中常用模块_工作中用过的Python常用模块:(基于3.x)
  6. ef1a启动子_常见的真核和原核表达系统的启动子(promoters)
  7. 【猪哥】Python爬虫入门系列
  8. CSS的px、em、rem、%、vw、vh、vm 单位区别
  9. 传递参数命令——xargs
  10. 【大总结1】数据结构与传统算法总结
  11. EasyUI——Dialog自定义Toolbar和buttons
  12. Pandas中Series和DataFrame的索引
  13. 博弈论与最优化的关系
  14. 用java将excel文档格式的标日初单词转成适合有道单词本的xml格式
  15. 软件测试流程五个阶段
  16. 眼镜店计算机信息管理情况介绍,眼镜店家,你了解消费者吗?——M市眼镜市场调查报告...
  17. Word批量打印证书(证书套打)
  18. python区间中的数字统计
  19. deepin20如何换源_Deepin 20 安装教程和基本配置
  20. 2011年国外最受欢迎的15个汽车网站

热门文章

  1. 微信公众号中关闭页面
  2. Java Swing学习:关于JButton,JLabel,JTabel的学习
  3. windows上进行IOS 应用开发+上架全流程的解决方案(uniapp)
  4. docker安装手册
  5. Python中print练习
  6. ajax和form表单的提交跳转问题
  7. Python基础-09 高阶函数
  8. 【解决】浏览器网页无法使用滚轮上下滚动页面怎么办?
  9. 移动开发之设计模式-工厂模式(IOSAndroid)
  10. 2020.03.11模拟赛15(第一题)