转载自大佬的文章:纯css实现垂直居中的几种方法(https://www.cnblogs.com/hutuzhu/p/4450850.html)

总结得很棒,有好几种方法自己没用过的,拷贝过来给自己看看

垂直居中是布局中十分常见的效果之一,为实现良好的兼容性,PC端实现垂直居中的方法一般是通过绝对定位,table-cell,负边距等方法。有了css3,针对移动端的垂直居中就更加多样化。

方法1:table-cell

html结构:

  1. <div class="box box1">
  2. <span>垂直居中</span>
  3. </div>

css:

  1. .box1 {
  2. display: table-cell;
  3.   vertical-align: middle;
  4.   text-align: center;
  5. }

方法2:display:flex

  1. .box2{
  2. display: flex;
  3. justify-content:center;
  4. align-items:Center;
  5. }

方法3:绝对定位和负边距

  1. .box3{position:relative;}
  2. .box3 span{
  3. position: absolute;
  4. width:100px;
  5. height: 50px;
  6. top:50%;
  7. left:50%;
  8. margin-left:-50px;
  9. margin-top:-25px;
  10. text-align: center;
  11. }

方法4:绝对定位和0

  1. .box4 span{
  2. width: 50%;
  3. height: 50%;
  4. background: #000;
  5. overflow: auto;
  6. margin: auto;
  7. position: absolute;
  8. top: 0; left: 0; bottom: 0; right: 0;
  9. }

这种方法跟上面的有些类似,但是这里是通过margin:auto和top,left,right,bottom都设置为0实现居中,很神奇吧。不过这里得确定内部元素的高度,可以用百分比,比较适合移动端。

方法5:translate

  1. .box6 span{
  2. position: absolute;
  3. left: 50%;
  4. top: 50%;
  5. transform: translate(-50%, 50%);
  6. text-align: center;
  7. }

这实际上是方法3的变形,移位是通过translate来实现的。

方法6:display:inline-block

  1. .box7{
  2. text-align:center;
  3. font-size:0;
  4. }
  5. .box7 span{
  6. vertical-align:middle;
  7. display:inline-block;
  8. font-size:16px;
  9. }
  10. .box7:after{
  11. content:'';
  12. width:0;
  13. height:100%;
  14. display:inline-block;
  15. vertical-align:middle;
  16. }

这种方法确实巧妙...通过:after来占位。

方法7:display:flex和margin:auto

  1. .box8{
  2. display: flex;
  3. text-align: center;
  4. }
  5. .box8 span{margin: auto;}

方法8:display:-webkit-box

  1. .box9{
  2. display: -webkit-box;
  3. -webkit-box-pack:center;
  4. -webkit-box-align:center;
  5. -webkit-box-orient: vertical;
  6. text-align: center
  7. }

css3博大精深,可以实现很多创造性的效果,需要好好研究下。

今天又发现一种方法,现在补上:

方法9:display:-webkit-box

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

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

  1. <div class="floater"></div>
  2. <div class="content"> Content here </div>
  1. .floater {
  2. float:left;
  3. height:50%;
  4. margin-bottom:-120px;
  5. }
  6. .content {
  7. clear:both;
  8. height:240px;
  9. position:relative;
  10. }

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

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

css垂直居中设置的更多相关文章

  1. CSS垂直居中和水平居中

    前言 CSS居中一直是一个比较敏感的话题,为了以后开发的方便,楼主觉得确实需要总结一下了,总的来说,居中问题分为垂直居中和水平居中,实际上水平居中是很简单的,但垂直居中的方式和方法就千奇百怪了. 内联 ...

  2. CSS垂直居中指南

    大概整理下css中的垂直居中问题 主要分两大类 1 知道块元素尺寸,一般就是指知道元素高度. 方法一:最简单的,类比水平居中. 思路:子元素设置为absolute;  top bottom都设置为0 ...

  3. 最常用的css垂直居中方法

    css垂直居中一直以来都是一个被大家说烂了的话题,翻来覆去的炒.不过说实话,正是因为css没有提供标准的垂直居中方法(不过在css3中已经有了相关规范),所以大家才会对它进行专门的研究.这研究来研究去 ...

  4. 前端学习笔记之CSS属性设置

    CSS属性设置   阅读目录 一 字体属性 二 文本属性 三 背景属性 四 盒子模型 五 盒子模型各部分详解 一 字体属性 1.font-weight:文字粗细 取值 描述 normal 默认值,标准 ...

  5. CSS样式设置小技巧

    1.水平居中设置 行内元素居中设置:如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的.代码示例如下: HTML代码 <body&g ...

  6. 完美实现CSS垂直居中的11种方法

    在做前端项目时CSS的水平居中我们经常使用,但有时还会用到CSS垂直居中,对于小白来说这个就有些难度了,下面看一下我是如何实现的 本人前端小白,正在做一个小程序开发的项目,css样式调整搞的头都大了. ...

  7. [CSS属性设置,盒子模型,网页布局]

    [CSS属性设置,盒子模型,网页布局] CSS属性设置 1. 宽和高 width:属性可以为元素设置宽度. height:属性可以为元素设置高度. 块级标签的宽度不修改的情况下默认占浏览器的一整行,块 ...

  8. css 垂直居中技巧

    CSS垂直居中技巧,我只会23个,你会几个?自古以来(是有多?~),网页CSS的垂直居中需求始终没有停过,而其困难度也始终没有让人轻松过,经过了每位开发先烈的研究后,据说CSS的垂直居中技巧已达到近十 ...

  9. css margin-top设置html元素之间的距离

    css margin-top属性设置的是一个元素的顶端与另一个元素之间的距离.这个距离称为上外边距,本文章向大家介绍css margin-top属性的用法和实例,需要的朋友可以参考一下. css ma ...

随机推荐

  1. Lucence使用入门

    参考: https://blog.csdn.net/u014209975/article/details/50525624 https://www.cnblogs.com/hanyinglong/p/ ...

  2. su 和 su - 命令有何不同

    su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell:而后者连用户和Shell环境一起切换成root身份了.只有切换了Shell环境才不会出 ...

  3. ASP.NET MVC SignalR 简单聊天推送笔记

    介绍:(抄袭于网络) ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接 ...

  4. vue中key的作用

    1.v-if中用key管理可复用的元素  Vue 会尽可能高效地渲染元素,通常会复用已有元素而不是从头开始渲染.这么做,除了使 Vue 变得非常快之外,还有一些有用的好处.例如,如果你允许用户在不同的 ...

  5. codeforces 1A

    题目大意: 就是在一块长方形地面上铺瓷砖,然后一共要用多少块瓷砖,一块瓷砖被割开后只能用一次,输入长,宽,以及瓷砖边长,求一共需要多少块瓷砖: 基本思路: 这里有个技巧:就长来说,需要(n+k-1)/ ...

  6. Python的历史及介绍

    Python的诞生 Python的创始人吉多·范罗苏姆(Guido van Rossum),在1989年12月的圣诞节期间,为了打发时间,决定开发一种新的脚本解释程序,作为ABC语言的继承. 现在,p ...

  7. js获取地址栏的参数

    //获取url参数 window.getParam = function(url, id) { url = url+ ""; var regstr = "/(\\?|\\ ...

  8. 首次公开!单日600PB的计算力--阿里巴巴EB级大数据平台的进击

    MaxCompute作为阿里巴巴的主力计算平台,在2018年的双11中,再次不负众望,经受住了双11期间海量数据和高并发量的考验.为集团的各条业务线提供了强劲的计算力,不愧是为阿里巴巴历年双11输送超 ...

  9. PHP FILTER_SANITIZE_ENCODED 过滤器

    定义和用法 FILTER_SANITIZE_ENCODED 过滤器去除或 URL 编码不需要的字符. 该过滤器与 urlencode() 函数很类似. Name: "encoded" ...

  10. java_monitor

    转载自http://blog.sina.com.cn/s/blog_9385f6d90101dbqy.html java会为每个object对象分配一个monitor,当某个对象的同步方法(synch ...