css中元素的垂直水平居中是比较常见及较常使用的,在这里向大家介绍一下几种方式。

1.水平居中

margin: 0 auto;

效果图:

而文字的垂直水平居中也比较简单,加上line-height: 200px;与text-align: center;即可。

#test{
width: 200px;
height: 200px;
line-height: 200px;
background: red;
margin: 0 auto;
text-align: center;
}

效果图:

2.元素的垂直水平居中

相对于文字来讲,元素的垂直水平居中就没这么简单,因为line-height: 200px;与text-align: center;都是针对文本的属性,对于元素我们需要使用定位。

a.已知元素高宽的垂直水平居中

#wrap{
position: relative;
width: 400px;
height: 600px;
background: red;
margin: 0 auto;
} #inner{
position: absolute;
left: 50%;
top: 50%;
margin-left: -50px;
margin-top: -50px;
width: 100px;
height: 100px;
background: pink;
}
<div id="wrap">

  <div id="inner">
    test
  </div>

</div>

效果图:

在这里需要注意margin-left与margin-top需要给定-50px即当前元素的一半而非-50%,因为%是相对于父元素的大小,所以这种需要已知元素的高宽。

而除了给margin负值外,还有一种方式:

#wrap{
position: relative;
width: 400px;
height: 600px;
background: red;
margin: 0 auto;
} #inner{
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
width: 100px;
height: 100px;
background: pink;
}

效果图:

这里需要注意的是元素的高宽也需要定义,如果没有定义高宽元素会填充整个父元素。

而此种方式就要说到绝对定位盒子的特性:

1.高宽有内容撑开

2.水平方向上: left + right + width + padding + margin = 包含块padding区域的尺寸

3.垂直方向上: top + bottom + height + padding + margin = 包含块padding区域的尺寸

我们可以尝试代入参数:

水平:0 + 0 + 100 + 0 + auto = 400

margin:auto根据公式可得300px及左右各分得150px,

垂直:0 + 0 + 100 + 0 + auto = 600

margin:auto根据公式可得500px及左右各分得250px,

而前面提到的如果没有定义高宽则高宽默认值为auto,

水平:0 + 0 + auto + 0 + auto = 400

垂直:0 + 0 + auto + 0 + auto = 600

元素会填充整个父元素即包含块尺寸均分配给高宽,由此可知高宽优先级高于margin。

而如果不定义margin: auto;

水平:0 + 0 + 100 + 0 + 0 = 400

垂直:0 + 0 + 100 + 0 + 0 = 600

数据均定死则不会分配margin

b.未知元素高宽的垂直水平居中

#wrap{
position: relative;
width: 400px;
height: 600px;
background: red;
margin: 0 auto;
} #inner{
position: absolute;
left: 50%;
top: 50%;
transform: translate3d(-50%,-50%,0);
background: pink;
}

效果图:

对于translate3d(-50%,-50%,0)中的三个参数分别为x轴偏移自身一半、y轴偏移自身一半、z轴不动,但是在can i use中我们可以看到transform的兼容性并不是太好。

到此,css的垂直水平居中就介绍完了,当然,可能存在些许错误望大家海涵并在评论区多多指正交流,谢谢大家花费时间阅览!

关于css垂直水平居中的几种方式的更多相关文章

  1. 纯CSS完美实现垂直水平居中的6种方式

    前言 由于HTML语言的定位问题,在网页中实现居中也不是如word中那么简单,尤其在内容样式多变,内容宽高不定的情况下,要实现合理的居中也是颇考验工程师经验的.网上讲居中的文章很多,但是都不太完整,所 ...

  2. css实现垂直水平居中的5种方法

    css实现垂直水平居中的5种方法 给父元素设置table-cell,text-align,vertical-align #big{ width: 200px; height: 200px; borde ...

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

    在布局的时候经常能用到居中,在此总结一下 html结构: <div class="wrap"> <div class="content"> ...

  4. CSS控制样式的三种方式优先级对比验证

    入职已经一个月了,自此后,就好久没有写过博客了,在此先跟关注我的博友们说声抱歉.今天,在公司的一个培训作业的驱动以及伟哥那句“再不写博客就开除你”的监督下,我终于重拾旧爱,再次登录博客园,继续与大家分 ...

  5. 实现CSS等分布局的4种方式

    × 目录 [1]float [2]inline-block [3]table[4]flex 前面的话 等分布局是指子元素平均分配父元素宽度的布局方式,本文将介绍实现等分布局的4种方式 思路一: flo ...

  6. CSS实现水平居中的4种思路

    × 目录 [1]text-align [2]margin [3]absolute [4]flex 前面的话 水平居中是经常遇到的问题.看似方法较多,条条大路通罗马.但系统梳理下,其实都围绕着几个思路展 ...

  7. css清除浮动的两种方式(clearfix和clear)

    最近总是在用浮动,这两种方式总是浮现在眼前,或者说去掉父级和同级浮动样式总在思考中.两种方式怎么写都在base.css中. 在做瑞祥之旅的过程中,还是吃了一个大亏,就是清除浮动,不管是同级还是父级,都 ...

  8. 实现CSS等分布局的5种方式

    前面的话 等分布局是指子元素平均分配父元素宽度的布局方式,本文将介绍实现等分布局的5种方式 float [思路一]float 缺点:结构和样式存在耦合性,IE7-浏览器下对宽度百分比取值存在四舍五入的 ...

  9. CSS实现水平居中的5种思路

    前面的话 水平居中是经常遇到的问题.看似方法较多,条条大路通罗马.但系统梳理下,其实都围绕着几个思路展开.本文将介绍关于水平居中的5种思路 text-align [思路一]:在父元素中设置text-a ...

随机推荐

  1. transformers---FloatProgress not found. Please update jupyter and ipywidgets.

    问题 运行 huggingface transformers 的 demo,报错FloatProgress not found.具体如下: import torch from transformers ...

  2. 计算机网络 part2

    一.UDP协议 1.概述 UDP提供不可靠的服务,无连接(不存在建立连接的时延),首部开销相对TCP小,没有拥塞控制,提供最大努力交付,面向报文(无论多长的报文UDP也只加一个头部就往下发:TCP面向 ...

  3. SVG path d Attribute

    Scalable Vector Graphics (SVG) 1.1 (Second Edition) W3C Recommendation 16 August 2011 http://www.w3. ...

  4. html fragment & html template & virtual DOM & web components

    html fragment & html template & virtual DOM https://developer.mozilla.org/en-US/docs/Web/API ...

  5. c++ 使用PID获取顶级窗口句柄和标题

    #include <iostream> #include <Windows.h> using namespace std; BOOL CALLBACK EnumWindowsP ...

  6. NGK公链存储技术,如何开创应用落地新格局?

    尽管无人预测未来,但是资本的眼光总是那么灵敏,最近几年,国际资本市场纷纷将目光投到了公链市场上.从TPS高点备受抢占,再到DApp生态的不断涌现,再到目前Staking和Defi的新概念生态的不断发力 ...

  7. Java Reference核心原理分析

    本文转载自Java Reference核心原理分析 导语 带着问题,看源码针对性会更强一点.印象会更深刻.并且效果也会更好.所以我先卖个关子,提两个问题(没准下次跳槽时就被问到). 我们可以用Byte ...

  8. 基于tcp的应用层消息边界如何定义

    聊聊基于tcp的应用层消息边界如何定义 背景 2018年笔者有幸接触一个项目要用到长连接实现云端到设备端消息推送,所以借机了解过相关的内容,最终是通过rabbitmq+mqtt实现了相关功能,同时在心 ...

  9. 安装并运行Nacos

    方式一:源码或者安装包 一.下载源码或者安装包 git clone https://github.com/alibaba/nacos.git 二.安装 cd nacos/ mvn -Prelease- ...

  10. SpringBoot整合开发

    1.SpringBoot分模块 分模块就是将一个项目分成多个模块,即maven项目. 1)首先创建一个springboot的项目: 第一步:选择springboot的项目 第二步:填写项目的相关信息, ...