博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于垂直居中
阅读量:4958 次
发布时间:2019-06-12

本文共 2417 字,大约阅读时间需要 8 分钟。

    做项目每次垂直居中的时候都折腾半天,在这边稍微整理一下垂直居中我所理解的一点知识吧。

     1,行内元素

           行内元素,比如,img,span等直接用vertical-align:middle,就可以搞定了。

      2,块元素

           垂直居中,最简单的方式是height:20px;line-height:20px;让他们相等,块元素就可以达到居中效果并且不破坏周围的布局。

          还可以用绝对定位来布局,height:100px;position:absolute;top:50%;margin-top:-50px;也可以达到居中效果,但是必须是高度确定的情形下才可以用。

        同理,也可以用同样的办法实现水平居中。

       优点:适用于所有浏览器,不需要嵌套标签

        缺点

               没有足够空间时,content 会消失(类似div 在 body 内,当用户缩小浏览器窗口,滚动条不出现的情况)

  3,一个<div>里包了一个img,一个span的话怎么居中

    今天看博客偶然看到的法子,较深的讲解了vertica-align 属性

  http://www.html-js.com/article/Some-understanding-of-the-CSS-study-on-the-vertical-alignment-for-verticalalign

  所有的行内元素都是基线对齐的么,照道理来说不管是普通的行内元素还是替换元素都是对齐父元素的基线baseline,但是他们自身的行高和高都影响他们的布局。对于格式化的内联元素使用了 display:inline-bolck 使得一个内联元素表现得像一个块级元素的属性且又有行内元素的属性(不换行,标签末尾不带br强行换行符),因此行内块级元素的的文字依然是跟我们常见的div标签的文字都是从左上角往右下角依次书写,对于其增加的高度也是从上往下顶:

   所以假如给一个元素增加高度是其实单从我们所直观看见的是内容区的外边界开始往下递增。所以也不会奇怪,当在一个元素内插入一张图像,改变行内元素变成行内块级元素,并赋予它与父框等同高度时,它会变得不对齐。其实他们是正确的显示效果,并不是因为display而改变垂直对齐基线。而我们可以通过利用 vertical-algin 改变他们两个相对父框垂直位置。

  

.content span{ display:inline-block; height:80px;line-height:80px;vertical-align:top; background:#78c0fa; color:#fff;} 通过在span 设置成diplay:inline-block;设置line-height:80px;会在他的baseline显示的位置以80px;高度往下显示撑起整个div。 通过设置vertical:align就达到垂直居中的效果啦~~~ 4.这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性。
 
Content goes here
 
#wrapper {display:table;}#cell {display:table-cell; vertical-align:middle;}
 

            优点:

             content 可以动态改变高度(不需在 CSS 中定义)。当 wrapper 里没有足够空间时, content 不会被截断

            缺点

             Internet Explorer(甚至 IE8 beta)中无效,许多嵌套标签(其实没那么糟糕,另一个专题)

5, 这种方法,在 content 元素外插入一个 div。设置此 div height:50%; margin-bottom:-contentheight;。

content 清除浮动,并显示在中间。

Content here
#floater	{float:left; height:50%; margin-bottom:-120px;}#content	{clear:both; height:240px; position:relative;}

              优点:

            适用于所有浏览器
            没有足够空间时(例如:窗口缩小) content 不会被截断,滚动条出现

             缺点

              唯一我能想到的就是需要额外的空元素了(也没那么糟,又是另外一个话题)

       6.这个方法使用了一个 position:absolute,有固定宽度和高度的 div。这个 div 被设置为 top:0; bottom:0;。但是因为它有固定高度,其实并不能和上下都间距为 0,因此 margin:auto; 会使它居中。使用 margin:auto;使块级元素垂直居中是很简单的。

Content here
#content {	position:absolute;	top:0;	bottom:0;	left:0;	right:0;	margin:auto;	height:240px;	width:70%;}

           优点:简单

           缺点:IE(IE8 beta)中无效,无足够空间时,content 被截断,但是不会有滚动条出现

   引自:http://www.qianduan.net/css-to-achieve-the-vertical-center-of-the-five-kinds-of-methods.html

转载于:https://www.cnblogs.com/echo-yaonie/p/3991653.html

你可能感兴趣的文章
Codeforces Round #367 (Div. 2) Vasiliy's Multiset 异或字典树带删除模板
查看>>
牛客(59)按之字形顺序打印二叉树
查看>>
JavaScript 图表库 xCharts
查看>>
Android项目的目录结构
查看>>
C++中“引用”的底层实现
查看>>
jquery datatable 参数
查看>>
vuex中的dispatch和commit
查看>>
mybatis实战教程二:多对一关联查询(一对多)
查看>>
NodeMCU文档中文翻译 3 构建固件
查看>>
前端学习☞jquery
查看>>
10分钟搞懂树状数组
查看>>
Spring Cloud与微服务构建:微服务简介
查看>>
HTTP缓存和CDN缓存
查看>>
HDU-1171 Big Event in HDU(生成函数/背包dp)
查看>>
Babel 是干什么的
查看>>
cocos2dx-3.0(8)------Label、LabelTTF、LabelAtlas、LabelBMFont使用之法
查看>>
Mysql数据库乱码总结
查看>>
BZOJ.3160.万径人踪灭(FFT Manacher)
查看>>
CODE[VS] 1842 递归第一次
查看>>
20180418小测
查看>>