• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >CSS > css水平垂直居中

css水平垂直居中

作者:shjxa的博客 字体:[增加 减小] 来源:互联网 时间:2017-08-19

本文主要包含css实现垂直水平居中,css文字水平垂直居中,css div水平垂直居中,css图片水平垂直居中,css字体水平垂直居中等相关知识,shjxa的博客希望在学习及工作中可以帮助到您

在css中,进行水平居中非常简单:

  • 若是行内元素,就对其父元素设置text-align: center;
  • 若是块级元素,自身设置margin:auto;即可。

垂直居中比较复杂。

下面详细叙述几种常见的比较好的用法,对于过去的比较老的用法不再总结。

绝对定位的方法

其基本原理是把元素的正中心放到视口的正中心。
看下面的例子:

main {
   position: absolute;
   top: 50%;
   left: 50%;
   margin-top: -3em;
   margin-left: -9em;
   width: 18em;
   height: 6em;
}

这个例子主要是先通过绝对定位将元素左上角移动到视口的正中心位置,然后再通过负边距将其向上向左移动,使中心位置与视口对齐。

该方法还有一种方式,使代码形式更简单:

main {
   position: absolute;
   top: calc(50% - 3em);
   left: calc(50% - 9em);
   width: 18em;
   height: 6em;
}

通过calc函数直接计算出需要移动的值。明白了上一个的方式,这个应该很容易理解了。

这种方法很简单,但是有个很大的缺点,即我们必须知道该元素的宽高。若是元素宽高不确定的话没办法使用。

下面看一下可以弥补其不足的方法:

main {
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
}

关键在最后一句,其原理与上面叙述的相同。使用css3的变形属性,将元素左上角移动到视口中心后,再移动元素自身的一半即可。注意:这里的50%指的是元素自身宽高的50%;而上面定位的50%指的是视口宽高的一半。并且写的时候要注意transform的兼容性。

使用绝对定位的三种方法已经叙述完了。方法一个比一个灵活。但是仍然有缺点。

  • 绝对定位对布局的影响很大,有时候我们并不能使用绝对定位布局
  • 若需要居中的元素高度超过视口的高度,顶部会被裁减掉,若要解决,该问题会变得复杂。。。

基于视口单位

该方法实现的原理与绝对定位的原理相同。即将元素的中心位置与容器中心对齐。主要有两步:其一,将元素左上角移动到元素正中心;其二,移动自身宽高的一半,达到最终效果。第二步上面已经有解决方案,通过translate解决。

这里重点说第一步。
先说一个我原来一直理解有误的知识点(但很重要!!!)。

main{
   width: 18em;
   padding: 1em 1.5em;
   margin: 50% auto 0;
   transform: translateY(-50%);
}

看这个例子,margin左右值auto,水平方向肯定是居中了。但垂直方向通过margin 50%并没有垂直居中。这是因为margin虽然是相对于父元素计算的百分比,但是它的值是以父元素的宽度为基准计算的。这也是为什么利用auto只能水平居中不能垂直居中的原因。但是这种情况是在writing-mode: horizontal-tb; 和 direction: ltr; 的情况下。当书写模式变成纵向的时候,其参照将会变成包含块的高度。更详细的可看这篇文章:margin系列之百分比

想要元素相对于视口居中,可以使用视口单位。关于视口单位的详细描述可以参考这篇文章:视区相关单位vw, vh..简介以及可实际应用场景

在这里我们只需要知道1vw表示视口宽度的1%,1vh表示视口高度的1%。

由此我们可以这样写:

main{
   width: 18em;
   padding: 1em 1.5em;
   margin: 50vh auto 0;
   transform: translateY(-50%);
}

如此就可以实现水平垂直居中。但是它只适用于在视口居中的场景。

Flex布局

flex布局进行垂直居中非常简单。

body{
   display: flex;
   min-height: 100vh;
   margin: 0;
}

main{
   margin: auto
}

若子元素是文本元素,也可以实现居中。示例如下:

main{
   display: flex;
   align-items: center;
   justify-content: center;
   width: 18em;
   height: 10em;
}

该布局的缺点是兼容性不是很好,但以后相信可以越来越好。

您可能想查找下面的文章:

  • CSS水平垂直居中的几种方法总结
  • css水平垂直居中

相关文章

  • 2017-08-06CSS Normalize文件配置示例
  • 2017-08-06div vertical-align不起作用解决办法
  • 2017-08-06Hack 只针对IE的写法
  • 2017-08-06css样式冲突问题练习示例
  • 2017-08-06CSS3图片旋转特效(360/60/-360度)
  • 2017-08-06CSS border-color 属性使用方法
  • 2017-08-06用CSS3绘制三角形的简单方法
  • 2017-08-06css行内元素padding,margin,width,height没有变化
  • 2017-08-06css 浮动(float)页面布局(下)
  • 2017-08-06让CSS代码更具有易维护性

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 很漂亮很有个性的CSS水平下拉菜单
    • CSS3实现多背景模拟动态边框的效果
    • css空白边叠加的几种情况介绍
    • 简述Eclipse中的CSS编辑器使用
    • IE10 CSS Hack介绍及IE11的CSS Hack提前了解
    • Web移动端Fixed布局的解决方案
    • 总结CSS中字符编码声明使用中的一些注意点
    • 纯HTML+CSS3制作导航菜单(附源码)
    • CSS实现鼠标悬浮出现遮罩层示例源码
    • IE 元素默认高度研究

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有