当前位置: 首页 > news >正文

纯CSS实现垂直居中的几种方法

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

方法1:table-cell

html结构:

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

css:

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

方法2:display:flex

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

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

复制代码
.box3{position:relative;}
.box3 span{ position: absolute; width:100px; height: 50px; top:50%; left:50%; margin-left:-50px; margin-top:-25px; text-align: center; }
复制代码

方法4:绝对定位和0

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

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

方法5:translate

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

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

方法6:display:inline-block

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

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

方法7:display:flex和margin:auto

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

方法8:display:-webkit-box

复制代码
.box9{
    display: -webkit-box;
    -webkit-box-pack:center;
    -webkit-box-align:center;
    -webkit-box-orient: vertical;
    text-align: center }
复制代码

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

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

方法9:display:-webkit-box

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

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

<div class="floater"></div> <div class="content"> Content here </div> 
复制代码
.floater {
    float:left; 
    height:50%; 
    margin-bottom:-120px;
}
.content {
    clear:both; 
    height:240px; 
    position:relative;
}
复制代码

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

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

转载于:https://www.cnblogs.com/gxywb/p/9378012.html

相关文章:

  • webapi跨域使用session
  • Zookeeper-watcher机制源码分析(一)
  • vs2017创建dotnetcore web项目,并部署到centos7上
  • Python爬虫开发【第1篇】【HTTP与HTTPS请求与响应】
  • 敏捷个人课后练习:接纳情绪
  • 大二暑假周进度报告之三
  • 记遇到的一个小问题:Tomcat在服务器上启动,但是远程访问却加载不到页面,Tomcat界面都打不开...
  • json格式的相互转化
  • mybatis 脚本
  • 探究 Redis 4 的 stream 类型
  • Flink的部署
  • 矩阵快速幂模板
  • c# Color 颜色设置
  • bzoj 4521 [Cqoi2016]手机号码——数位dp
  • 性能测试中TPS上不去的几种原因浅析
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Java的Interrupt与线程中断
  • java中的hashCode
  • JS基础之数据类型、对象、原型、原型链、继承
  • mac修复ab及siege安装
  • maven工程打包jar以及java jar命令的classpath使用
  • python3 使用 asyncio 代替线程
  • Python爬虫--- 1.3 BS4库的解析器
  • Python学习之路13-记分
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Boot MyBatis配置多种数据库
  • v-if和v-for连用出现的问题
  • Zsh 开发指南(第十四篇 文件读写)
  • 编写符合Python风格的对象
  • 诡异!React stopPropagation失灵
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • mysql面试题分组并合并列
  • #控制台大学课堂点名问题_课堂随机点名
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (十一)手动添加用户和文件的特殊权限
  • (转)ABI是什么
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)负载均衡,回话保持,cookie
  • 、写入Shellcode到注册表上线
  • .equals()到底是什么意思?
  • .net 获取url的方法
  • .net 微服务 服务保护 自动重试 Polly
  • .Net(C#)自定义WinForm控件之小结篇
  • .sys文件乱码_python vscode输出乱码
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @GlobalLock注解作用与原理解析
  • @SpringBootApplication 包含的三个注解及其含义
  • [ C++ ] STL---string类的模拟实现
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [51nod1610]路径计数