关于水平居中和垂直居中的阅读记录

首先要有一个概念,凡是table布局可以实现的,CSS一定可以实现。


水平居中

水平居中有两种方法,1 text-algin:center; 2. margin-left:auto;margin-right:auto; 

一般使用 2 方法,虽然简写成 margin:0 auto; 也可以实现,但是这种简写法,如果后面调整了margin-top/margin-bottom 值,就会失去水平居中效果。

另外,如果你的div没有指定宽度,那么这种css居中也起不到效果,解决办法是指定宽度或者 width:auto;

同时,页面必须设置document type为xhtml。(松散还是严格无要求)

如果在ie和firefox中效果不一样,最好 方法1 和 方法2 结合使用。

2016/03/14 09:22

这种居中方式对div有效。

教程中说对img和其他盒装标签有效,然而对img采用margin方式,实验无效,采用父元素设置text-align:center方式,有效;其他盒状标签都指什么,未知。

sum:大多数的居中都可以通过text-align:center , margin-left/right : auto + 定宽,来解决。


单行垂直居中

方法: 单行内容的居中,无论是否给容器固定高度,只要给容器设置line-height 和 height ,并且设置两个高度相等。

 

 优势:同时支持块级和内联元素,支持所有浏览器

缺点:只能显示一行,ie中不支持img等的居中。

注意点:使用相对高度定义你的height和line-height;不想毁了你的布局的话,overflow:hidden一定要。

  个人chrome验证: 

    sum结论:要设置 height:xem; line-heght:xem; overflow:hidden; 如是内外嵌套,那么内部元素设置 margin-top:0px;margin-bottom:0px;

1. 对h2、p等块级元素、span等内联元素有效,textarea有不严格居中效果(本次实验,接近中上部);对内部的div采用该方式无效。

2. chrome下验证,对img未能实现居中,可考虑使用其他方法。

3. overflow:hidden不设置的话,当任意改变字体大小时,对布局有很大影响。如下图所示:

4. 当设置固定高度、行高为30px,字体50px时,效果如下:

对应的,设置固定高度、行高为2em,字体50px时,效果如下(行高的体现值为100px,即字体大小的2倍。):

5. 保险来讲,需要设置元素的margin-top/bottom为 0 ,否则有些规则下,会导致h2等元素有一定的上下外边距,导致未能严格居中;并且对整体布局也有一些影响。


容器高度可变情况下多行居中

 

方法:为容器设置一致的padding-bottom和padding-top就行。

优点:同时支持块级和内联元素;支持非文本内容;支持所有浏览器。

缺点:容器不能固定高度。(网络归纳文章中给出)

个人验证

1. 该方法的核心思路是,在容器默认紧紧包围内容的前提下,为容器设置上下一致的内边距,会让内容在效果上距离上下边距等距,从而效果居中。

2. 容器不能固定高度的原因是,如果容器有高度,那么内容很可能不紧贴内边距的边线,造成视觉效果不一定居中。

3. 不能固定高度的说法并不完全准确,如果能确定容器高度和内容高度,只需要设置内边距底或顶 的值为 容器高-内容高 / 2  即可。

4. 该方法对图片有效。

2016/03/14 15:53

问题: 

使用该方法 对 div>img 设置垂直居中,正常情况下没问题。然而如果对div多设置了font-size:50px,会导致图片下方有一小条空白,造成的原理未知;再遇到类似问题,可清理其css样式,去掉无关属性。


把容器当做表格单元

方法:为div设置display : table-cell,然后再设置vertical-align:middle;

优缺点:在chrome、firefox及IE8 以上的浏览器下可以设置块级元素的 display:table-cell,vertical-align:middle; 但是要注意IE6/7并不支持这个样式。

阅读

http://www.cnblogs.com/dojo-lzz/p/4419596.html

该文章针对IE8+

# 方法1 使用绝对定位垂直居中。(核心原理是过度受限)

优点是支持响应式,只有这种方法在resize后仍然垂直居中。

需要注意使用过度受限的方式,上下左右的值都要为0,然后marign:auto,这样水平、垂直都居中。(不能省略距离左右为0)

# 方法2 负margin top方式

先用top来设置内部区域距离顶端为50%,然后上边距负数内部区域的高度值一半,从而视觉居中。

优点是代码量少,浏览器兼容性高,支持ie6/7

缺点是不支持响应式(不能使用百分比,min/max-width)

# 方法3 借助额外的元素

用一个空的div来撑起内部区域和顶端的距离。该距离通过合理的计算得到。

支持IE5/6.

# 方法4 table-cell

为容器设置display:table-cell,vertical-align: middle; 该方法对最新版本的浏览器几乎都适用,支持任意内容的可变高度,支持响应式。 然而不支持IE5/6版本。

# 方法5 inline-block

该方式明确需要包含框(用于生成after,一般来讲,应该设置高度参数),其原理是 为同一行的inline-block元素设置vertical-align:middle,该行内的元素会按照元素的垂直中心线对齐 (注意这两个参数是对实际要居中的内容设置的,而非外围容器。有别于其他诸如table-cell的方法) 。

版本兼容,不支持IE5/6.

# 方法6 inline-height

设置包围框的height和lineheight属性同一个值。原理是如果Line-height高度大于font-size,那么生成的高度会被浏览器平均分配到上下两端。

优缺点,适用于单行文本;简单明了。

综合来看

A 如果外层容器没有display的限制,可以优选table-cell的解决方案,代码量小,支持响应式,但是不能做到兼容IE5/6/7;

B 如需要内层内容高度自适应(无法最初就固定),那么可以选择方案1,比如设计div弹窗(宽度固定,高度根据内容自填充)的时候;优点是支持响应式,在resize后仍然垂直居中。

C 方法2/3适用于IE5/6/7的居中,如果考虑全兼容性,可能需要使用方法2/3才行;如果可以忽略IE的旧版本,可以优选方法4/5.

而方法2/3的原理都是固定高度前提下,通过边距或者填充区域,来造成视觉效果居中。适用于一些特殊情况。

时间: 2024-11-07 14:09:46

关于水平居中和垂直居中的阅读记录的相关文章

CSS3 FLEXBOX轻松实现元素的水平居中和垂直居中

1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title></title> 7 </head> 8 9 <body> 10 <!--1.清除输入框内的空格--> 11 <!--<input type="text" onBlur="replaceSpace

x264阅读记录-3

14. x264_macroblock_encode函数-1 这个函数主要根据已经选定的模式来对宏块残差进行编码. (1)如果是P_SKIP模式,那么调用x264_macroblock_encode_pskip函数 在x264_macroblock_encode_pskip中先对亮度和色度进行运动补偿,调用的函数函数h->mc.mc_luma和 h->mc.mc_chroma.这两个是函数指针,根据需要对其进行初始化.一般常用的是函数mc_luma, 在mc.c文件中.在mc_luma中如果存

简单易实现的水平居中、垂直居中方法

在页面布局中,经常会面临垂直水平居中问题.网络上有很多方法,但是大多数情况下,我们找到合适的解决方法后,复制粘贴了事,并没有对各种方法的原理.利弊进行研究.本着"双鸟在林,不如一鸟在手"的宗旨,从各种方法中找出一种简单易懂的方法,让大家一目了然,以后再遇到也能立即想出来.1.水平居中:使div02在div01中水平居中.```<div id="div01"> <div id="div02"></div><

html中的水平居中和垂直居中的问题。(固定高度与高度不定)

在布局的过程中,我们要对某些元素进行居中定位,相信,大家对水平居中都没有问题,就是利用 margin:0 auto:以及文本居中 text-align:center. 下面我想给大家说的是关于整体居中(水平居中和垂直居中), 在这里,我首先告诉大家我利用了绝对定位的办法, 我现在先给大家制作一个框来直接的观察,如下 其中外框与内框分别是边长为300px和100px的正方形. 我们要把内框居中.(此时,内框高度是固定的) 1 当高度固定时. 一般我们会直接这样进行代码操作, position:ab

div水平居中和垂直居中

水平居中和垂直居中 水平居中包含两种情况:        块级元素的水平居中:margin:0px auto;        文字内容的水平居中:text-align: center;        垂直居中:        常见的单行文字的垂直居中可设置文字所在行的height与        行高样式属性一致,比如:        div{            width: 400px;            height: 400px;            line-height: 4

Android源码AOSP之设置Settings阅读记录

Android 4.4 系统的设置源码阅读记录 ----------2014-7-3------------------ AndroidManifest.xml launch的activity是 Settings,另外有40多个activity继承于它,比如设置的一级菜单: wifi,蓝牙,声音,显示,安全,应用程序,语言和时间,关于设备等等.实际上都是这一个acitivy. 这里从安全设置看起,SecuritySettings.java 以资源文件R.xml.security_settings

linux0.11 源代码阅读记录

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;}

NRE代码阅读记录

本来是为了论证自己的观点,把安全标签打在RunningConfig里,就写了个代码分析,结果写着写着发现的确不应该是在RunningVM里.意外的发现看代码的时候这么写写还是挺不错的,也避免了看了后面的忘记前面的.这种底层的代码实在是很难理解,对我来说就像是小学生去算高数一样,也只能硬着头皮去看了. vmmng.cc对应的就是如下界面(回头放图上来,ubuntu下没有什么截图工具,总不能把整个屏幕放上来)然后"3"键可以新建tiny-core虚拟机,对应到代码里,也就是input_th

css图片居中(水平居中和垂直居中)

http://www.51xuediannao.com/html+css/htmlcssjq/css_img_center.html css图片居中分css图片水平居中和垂直居中两种情况,有时候还需要图片同时水平垂直居中,下面分几种居中情况分别介绍 css图片居中分css图片水平居中和垂直居中两种情况,有时候还需要图片同时水平垂直居中,下面分几种居中情况分别介绍. css图片水平居中 利用margin: 0 auto实现图片水平居中 利用margin: 0 auto实现图片居中就是在图片上加上c