各种情况的水平垂直居中

1.单行文本的水平垂直

  用height = line-height + text-align:center

2.内外宽高都知道的盒子可以用padding让上下相同,左右相同。css3中有calc()函数来算。

3.用margin来实现。水平方向上的可以直接margin-left:auto;margin-right:auto;来实现居中。垂直方向的用margin来实现有时候会出现margin重叠的情况。(在外层的元素上加一个overflow:hidden 这样就形成了一个新的bfc,这样的话两个元素就不处于同一个bfc中,所以不回发生margin重叠。)

4.外层relative 内层absolute ,top,left各50%,然后用margin负值来居中。(这个地方没有发生margin重叠是因为绝对定位元素已经脱离了正常的文档流。与外层元素不在一个流中。所以不相邻,所以不会产生margin折叠。浮动元素也是如此。而inline-block元素不会和其他元素发生边距重叠是因为margin重叠只发生在块级元素上面。然后这三个都会形成一个新的bfc,所以和其子元素也不会发生边距重叠。)

5.上面那种方法如果不知道宽高则可以用transform:translate(-50%,-50%);

6.relative偏移的百分比是通过父元素来定的。所以可以增加一个包裹的标签。

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<style>
		.container {
			width: 100%;
			height: 200px;
			background-color: pink;
			position: relative;
		}
		.inner {
			width: 150px;
			height: 100px;
			background-color: transparent;
			position: absolute;
			left: 50%;
			top: 50%;
		}
		.in {
			position: relative;
			width: 100%;
			height: 100%;
			left: -50%;
			top: -50%;
			background-color: red;
		}
	</style>
</head>
<body>
<div class="container">
	<div class="inner">
		<div class="in">这个我是不知道宽高的</div>
	</div>
</div>
</body>
</html>

  7.inline-block元素也是可以用text-align:center来居中。

  8.一个绝对定位元素设置上下左右都为0.然后margin:auto 。auto。

w3c.org有说absolute性质的盒子,它的包含块的宽度等于它的盒模型的宽度 + left + right值,包含块的高度同理,盒模型包括margin-box、border-box、padding-box、content-box,而在这个居中方法中,.ele的left + right值是0,width是定值,width所在盒子包括了除了margin-box外的那三个box,margin都是auto值,按照上面那个公式,margin-left + margin-right的值应该等于包含块的宽度 - left的值 - right的值 - width的值,也就是说margin-left + margin-right的值等于除了width所占宽度外的剩下宽度,拥有剩下宽度后,就是平分其宽度,以让左右两边相等,达到居中。不过这样必须width left right都不为auto。然后mariginleftright为auto。

9. flex justify-content:center;align-items:center;

时间: 2024-10-07 01:40:27

各种情况的水平垂直居中的相关文章

绝对定位情况下水平垂直居中小技巧

非绝对定位情况下,一般使用margin:0 auto的方法来进行居中,但在绝对定位情况下,margin:0 auto会失效. 这时,进行水平垂直居中可以如下: position:absolute;left:50%; //left设置为50%,这时是以元素的左侧进行的水平居中,所以需要设置margin-left为元素宽度的一半.top:50%;//垂直居中原理同水平居中margin-top:-100px;margin-left:-100px;width:200px;height:200px;z-i

css实现水平 垂直居中

css实现水平居中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>水平居中</title> <style> .box1{ border: 1px solid #000; text-align: center; } .box2{ display: inline-block; backgroun

《转》CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳)

转自大地Dudy的CSS元素水平垂直居中方法总结(主要对大漠以及张鑫旭博客所述方法进行了归纳) 本文主要是对主流居中方法进行了归纳,有些地方甚至就是把别人的代码直接复制过来的,没有什么自己的东西,除了大漠以及张鑫旭的方法外,还有来自司徒正美.怿飞博客的几个方法 以下方法,由于测试环境的原因,IE系列只测试了IE9和IE6,以下所说的IE的支持性只是相对于IE9和IE6来说的: 一.元素的水平垂直居中: 第一种方法: <!doctype html> <html lang="en&

css 实现元素水平垂直居中总结5中方法

个人总结,如有错误请指出,有好的建议请留言.o(^▽^)o 一.margin:0 auto:text-align:center:line-height方法 1 <div id="divAuto">margin,text-align;水平居中</div> 1 /* 2 margin:0 auto; 设置块元素(或与之类似的元素)的水平居中 3 text-align:center;设置文本或img标签等一些内联对象(或与之类似的元素)的水平居中 4 line-hei

常见的几种 CSS 水平垂直居中解决办法

用CSS实现元素的水平居中,比较简单,可以设置text-align center,或者设置 margin-left:auto; margin-right:auto 之类的即可. 主要麻烦的地方还是在垂直居中的处理上,所以接下来主要考虑垂直方向上的居中实现. 水平垂直居中主要包括三类:基本文本类,图像类,其他元素类 但,也是由一些方法可以实现的,下面就来谈谈了解到的10中方法. 方法一.使用 line-height 这种方式更多地用在 单行文字的情况,其中使用overflow:hidden的设置是

【居中系列】大小不固定的图片在固定容器中的水平垂直居中

一般在做产品页面的时候,如果产品图片宽高定死的话,有的图片就会变形,如果把宽给个最大宽,高自适应的话有的图又会由于是个长方形高超出了容器,这样就不得不截掉一部分图.于是就想着,首先不管图片是个什么比例,不管它是宽远大于高或者高远大于宽,统一设置最大的宽高值,不让它超出容器,并且这样处理图片不会变形.接下来想怎么处理图片大小不定,在固定容器中水平垂直居中的问题. 参考链接: 张鑫旭:大小不固定的图片和多行文字的垂直水平居中 w3cplus大漠:css制作图片水平垂直居中 对比了一下他们的方法,发现

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

直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; border: 1px solid #465468; } img{ position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } HTML代码: <div> <img src="mm.jpg&quo

调整窗口大小也能够实现div水平垂直居中代码实例

调整窗口大小也能够实现div水平垂直居中代码实例:将一个div在窗口内实现居中效果,基本上没有什么难度,具体可以参阅CSS实现div屏幕居中效果代码一章节. 但是有时候我们可能会有这样的需求,就是在调整窗口大小的情况下也能够实现div垂直水平居中效果,下面通过代码实例做一下简单介绍,代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="

未知宽高的图片水平垂直居中的几种方法

最近在项目中遇到不固定宽高的图片要水平垂直居中的情况,发现垂直居中存在兼容性问题,下面收集了一些方法,可根据需要权衡使用. 1. 背景法(兼容性好,简单,但不利于动态导入的图片) html: <div class="wrap"></div> css: .wrap{ width:300px; height:200px; background: url(../img/test.jpg) center center no-repeat; } 2. 图片外面用个p标签,