前言

项目中经常碰到需要实现水平垂直居中的样式。下面就总结几种常用的方法

水平对齐+行高

【思路一】text-align + line-height实现单行文本水平垂直居中

<style>
.f10 .test{
text-align: center;
line-height: 100px;
}
</style>
<div class="case-box f10" data-case="f10">
<div class="test" style="background-color: lightblue;width: 200px;">测试文字</div>
</div>

效果展示:

水平+垂直对齐

【思路二】text-align + vertical-align

【1】在父元素设置text-align和vertical-align,并将父元素设置为table-cell元素,子元素设置为inline-block元素

[注意]若兼容IE7-浏览器,将结构改为<table>结构来实现table-cell的效果;用display:inline;zoom:1;来实现inline-block的效果

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

效果展示:

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

<style>
.f12 .parent{
line-height: 200px;
text-align: center;
font-size:0;
}
.f12 .child{
vertical-align: middle;
}
</style>
<div class="case-box f12" data-case="f12">
<div class="parent" style="background-color: gray; width:200px;">
<img class="child" src="../../img/head.jpg" style="width:50px;" alt="test">
</div>
</div>

效果展示:

相关资料

margin + vertical-align

要想在父元素中设置vertical-align,须设置为table-cell元素;要想让margin:0 auto实现水平居中的块元素内容撑开宽度,须设置为table元素。而table元素是可以嵌套在tabel-cell元素里面的,就像一个单元格里可以嵌套一个表格

[注意]若兼容IE7-浏览器,需将结构改为<table>结构

<style>
.f13 .parent{
display:table-cell;
vertical-align: middle;
}
.f13 .child{
display: table;
margin: 0 auto;
}
</style>
<div class="case-box f13" data-case="f13">
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
<div class="child" style="background-color: lightblue;">测试文字</div>
</div>
</div>

效果展示:

绝对定位

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

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

效果展示:

【2】利用绝对定位元素的偏移属性和translate()函数的自身偏移达到水平垂直居中的效果

[注意]IE9-浏览器不支持

<style>
.f15 .parent{
position: relative;
}
.f15 .child{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
</style>
<div class="case-box f15" data-case="f15">
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
<div class="child" style="background-color: lightblue;">测试文字</div>
</div>
</div>

效果展示:

flex

[注意]IE9-浏览器不支持

【1】在伸缩项目上使用margin:auto

<style>
.f16 .parent{
display: flex;
}
.f16 .child{
margin: auto;
}
</style>
<div class="case-box f16" data-case="f16">
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
<div class="child" style="background-color: lightblue;">测试文字</div>
</div>
</div>

效果展示:

【2】在伸缩容器上使用主轴对齐justify-content和侧轴对齐align-items

<style>
.f17 .parent{
display: flex;
justify-content: center;
align-items: center;
}
</style>
<div class="case-box f17" data-case="f17">
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
<div class="child" style="background-color: lightblue;">测试文字</div>
</div>
</div>

效果展示:

grid

[注意]IE10-浏览器不支持

【1】在网格项目中设置justify-self、align-self或者margin: auto

<style>
.f18 .parent{
display: grid;
}
.f18 .child{
align-self: center;
justify-self: center;
}
</style>
<div class="case-box f18" data-case="f18">
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
<div class="child" style="background-color: lightblue;">测试文字</div>
</div>
</div>

效果展示:

【2】在网格容器上设置justify-items、align-items或justify-content、align-content

<style>
.f19 .parent{
display: grid;
/*align-items: center;*/
/*justify-items: center;*/
align-content: center;
justify-content: center;
}
</style>
<div class="case-box f19" data-case="f19">
<div class="parent" style="background-color: lightgray; width:200px; height:100px; ">
<div class="child" style="background-color: lightblue;">测试文字</div>
</div>
</div>

效果展示:

CSS 水平垂直居中的几种实现方法的更多相关文章

  1. CSS水平垂直居中的几种方法2

    直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; b ...

  2. CSS水平垂直居中的几种方法

    直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; b ...

  3. CSS实现水平垂直居中的1010种方式

    转载自:CSS实现水平垂直居中的1010种方式 划重点,这是一道面试必考题,很多面试官都喜欢问这个问题,我就被问过好几次了 要实现上图的效果看似很简单,实则暗藏玄机,本文总结了一下CSS实现水平垂直居 ...

  4. CSS实现垂直居中的5种方法

    利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站. 使用 CSS 实现垂直居中并不容易.有些方法在一些浏览器 ...

  5. CSS 垂直居中的5种实现方法

    利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法.我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站.         使用 CSS 实现垂直居中并不容易.有些 ...

  6. 顽石系列:CSS实现垂直居中的五种方法

    顽石系列:CSS实现垂直居中的五种方法 在开发过程中,我们可能沿用或者试探性地去使用某种方法实现元素居中,但是对各种居中方法的以及使用场景很不清晰.参考的内容链接大概如下: 行内元素:https:// ...

  7. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  8. css实现水平垂直居中的几种方式

    梳理下平时常用css水平垂直居中方式- 使用flex布局 HTML <div class="box"> <div class="child"& ...

  9. 05. flex元素水平垂直居中(三种position水平垂直居中和两种新老版本水平垂直居中)

    flex元素水平垂直居中(三种position水平垂直居中和两种新老版本水平垂直居中) (1).position : <!DOCTYPE html> <html lang=" ...

随机推荐

  1. java源码equals和hashCode

    equals public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject ...

  2. 被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾

    前天, 2018年11月10日, 广州图书馆\微软云开发者社区\广东职业教育信息化研究会\珠三角技术沙龙在广州图书馆负一层1号报告厅搞了一场”微软最有价值专家(MVP)广州分享会 - MonkeyFe ...

  3. sbt安裝與配置

    官方下載地址:https://www.scala-sbt.org/download.html?spm=a2c4e.11153940.blogcont238365.9.42d147e0iF8dhv 解压 ...

  4. Nodejs OracleDB详细解读

    //导入oracledb模块 //基于版本@3.0.1 安装指令npm install oracledb //node访问oracleDB需要搭建访问环境,否则无法正常访问 //创建Oracle对象 ...

  5. React-关于react的思考

    声明式开发 减少dom操作,减少代码量 可以与其他框架并存 组件化开发 单向数据流 视图层框架 大型项目需要与其他数据层框架一起使用 函数式编程 方便自动化测试

  6. odoo后台实现微信公众号验证

    在微信公众号开发的其中一个步骤是微信服务器调用我们自己的网站验证身份,这一步微信服务器会传递过来4个参数,可是按照官方的写法,却无法验证通过,下面是官方的验证方法: import hashlib im ...

  7. xgboost 参数调优指南

    一.XGBoost的优势 XGBoost算法可以给预测模型带来能力的提升.当我对它的表现有更多了解的时候,当我对它的高准确率背后的原理有更多了解的时候,我发现它具有很多优势: 1 正则化 标准GBDT ...

  8. 07-JavaScript之常用内置对象

    JavaScript之常用内置对象 1.数组Array 1.1数组的创建方式 // 直接创建数组 var colors = ['red', 'blue', 'green']; console.log( ...

  9. PS调出清新风格社区街拍照片

    原图: 首先呢,我们还是先看一下在直方图,但是呢,你会发现,这张照片的直方图毫无特色. 简直是标准得不能再标准的直方图了.所以各位那我们就跳过这步吧.你要真跳过这步你就完了.直方图还有三个儿子啊,通道 ...

  10. Nginx部署静态页

    简答说一下如何用Nginx部署静态网页,并绑定域名访问 1.通过FTP上传静态页到服务器指定目录 2.编写nginx的.conf文件 3.重启nginx 如图,这是centos上传文件路径 nginx ...