CSS实现水平垂直居中的方式有哪些?
CSS实现水平垂直居中的方式有哪些?
基本结构样式:
.box {
width: 400px;
height: 400px;
background-color: red;
}
.inner {
width: 100px;
height: 100px;
background-color: blue;
}
<div class="box">
<div class="inner"></div>
</div>
1.利用flex布局
将父元素启动flex布局,并设置
justify-content: center; align-items: center;。
添加样式:
.box {
display: flex;
justify-content: center;
align-items: center;
}
2.利用flex+margin
父元素设置
display: flex;,子元素设置margin: auto;。
添加样式:
.box { display: flex; }
.inner { margin: auto; }
3.利用定位,子绝父相
3.1.利用margin: auto(偏移量都为0)
将子元素的top、left、right、bottom都设置为0,再设置其margin为auto即可。
添加样式:
.box { position: relative; }
.inner {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
3.2.利用平移translate
先设置子元素的top和left都为50%,即父元素宽高的一半,再使用translate往回走自己宽高的一半。
添加样式:
.box { position: relative; }
.inner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
4.知道具体宽高,通过计算
4.1.子绝父相,直接计算或者使用calc()
添加样式:
.box { position: relative; }
.inner {
position: absolute;
/* 直接计算 */
/* top: 150px;
left: 150px; */
top: calc(50% - 50px);/* 使用calc() */
left: calc(50% - 50px);
}
4.2.利用margin
子元素设置
margin-top;但是存在父子共用外边距问题,父元素需要设置overflow: hidden;。
添加样式:
.box { overflow: hidden; }
.inner {
margin: 0 auto;
margin-top: 150px;
}
4.3.利用padding
父元素设置padding,防止父盒子被撑大,需加上
box-sizing: border-box;。
添加样式:
.box {
box-sizing: border-box;
padding: 150px;
}
5.利用display的table-cell属性值
5.1.利用display+vertical-align
父元素设置
display: table-cell;和vertical-align: middle;,子元素设置margin: 0 auto;。
添加样式:
.box {
display: table-cell;
vertical-align: middle;
}
.inner { margin: 0 auto; }
5.2.利用display+vertical-align+text-align
父元素设置
display: table-cell以及内容的水平和垂直居中,注意子元素要设置为行内块。
添加样式:
.box {
display: table-cell; /* 此元素会作为一个表格单元格显示 */
vertical-align: middle; /* 把此元素放置在父元素的中部 */
text-align: center;
}
.inner { display: inline-block; }
6.以上方法最终运行结果

CSS实现水平垂直居中的方式有哪些?的更多相关文章
- CSS实现水平垂直居中的1010种方式
转载自:CSS实现水平垂直居中的1010种方式 划重点,这是一道面试必考题,很多面试官都喜欢问这个问题,我就被问过好几次了 要实现上图的效果看似很简单,实则暗藏玄机,本文总结了一下CSS实现水平垂直居 ...
- 你知道CSS实现水平垂直居中的第10种方式吗?
你知道CSS实现水平垂直居中的第10种方式吗? 仅居中元素定宽高适用: absolute + 负 margin absolute + margin auto absolute + calc 居中元素不 ...
- CSS实现水平垂直居中方式
1.定位 核心代码实现请看示例代码中的注释: <!DOCTYPE html> <html lang="zh"> <head> <meta ...
- CSS制作水平垂直居中对齐 多种方式各有千秋
作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼.这段时间,我收 集了几种不同的方式制作垂直居中方法,但每种方法各有千秋 ...
- CSS制作水平垂直居中对齐
作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼.这段时间,我收集了几种不同的方式制作垂直居中方法,但每种方法各有千秋呀 ...
- css实现水平 垂直居中
css实现水平居中 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- CSS实现水平垂直居中的数种方法整合
CSS实现水平垂直居中可以说是前端老生常谈的问题了,一般面试官问的时候面试者都会回答出来,但是继续追问还有没有其他方法的时候有可能就说不出来了. 本着学习知识的目的,特在此纪录CSS实现水平垂直居中的 ...
- CSS实现水平|垂直居中漫谈
利用CSS进行元素的水平居中,比较简单,手到擒来:行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins为auto即可.而撸起垂直居中, ...
- 纯CSS制作水平垂直居中“十字架”
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- jmeter+ant输出测试报告
jmeter自己本身可以输出html测试报告的,不过这种自带的测试报告特别简陋,如下图所示,一般我们是不看这种的. 我们可以使用ant来输出更高效.更直观的测试报告. 首先下载安装ant, 我用的是a ...
- nuxt使用图片懒加载vue-lazyload
对于nuxt使用第三方插件的方式大体都是都是一致的,就是在plugins文件夹中新增插件对应的js文件进行配置与操作,然后在nuxt.config.js文件的plugins配置项中引入新建的js文件就 ...
- acupuncture
acute+puncture. [woninstitute.edu稻糠亩] To understand the basics of acupuncture, it is best to familia ...
- day9 文件处理
day09 文件处理 一.注册与登录功能 username = input('请输入您的密码:').strip() password = input('请输入您的密码:').strip() f = o ...
- 【leetcode】565. Array Nesting
You are given an integer array nums of length n where nums is a permutation of the numbers in the ra ...
- spring boot druid数据源
pom.xml配置 <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <art ...
- jQuery - 按回车键触发跳转
键盘事件有三种: keyup:按键按下去,抬上来后,事件才生效 (推荐) keydown:按键按下去就生效 keypress:与 keydown 事件类似,当按钮被按下时,会发生该事件,与 keydo ...
- Pagination.js + Sqlite web系统分页
前端使用 jquery pagination.js 插件. 环境准备:jquery.js.pagination.js.pagination.css 附件下载:https://files.cnblogs ...
- testng 执行多个suite
我们知道testng的配置文件,一个.xml里面只能有一个suite,那么如果想要设置多个suite怎么弄呢?这个时候我们需要用到testng的标签<suite-files>. 下面说一下 ...
- java多线程3:synchronized
线程安全 多个线程共同访问一个对象的实例变量,那么就可能出现线程不安全的问题. 先看一段代码示例,定义一个对象 MyDomain1 public class MyDomain1 { private i ...