• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 谈谈CSS实现水平垂直居中布局的方法

谈谈CSS实现水平垂直居中布局的方法

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了CSS,水平垂直,居中布局等相关知识,希望对您有所帮助

谈谈CSS实现水平垂直居中布局的方法


最近面试的时候,面试官问到了CSS水平垂直居中布局的方式,对于刚入前端没多久的我,无疑是一脸懵逼,闲了赶紧查阅资料分析一波,给各位分享一下,避免落坑。

首先先说明一下html和一些基础css样式,下面就不再赘述!

html

<body>    <div class="div1">        <div class="box  size">垂直水平居中</div>    </div></body>

公共css代码如下

<style type="text/css">/* 公共样式 */.div1{    width: 300px;    height: 300px;    border:1px solid aqua;}.box{    background: #00FFFF;}.box.size{    width:100px;    height:100px;}</style>

这些css样式在后续介绍中默认带上,不再赘述!

一、 absolute 和 margin auto(常用)

同样居中元素的宽高必须固定,并且需要得知子元素的宽高
这种方式通过设置各个方向的距离都是0,此时再将margin设为auto,就可以在各个方向上居中了

.div1{    position: relative;}.box{    position: absolute;    top:0;    left: 0;    right: 0;    bottom: 0;    margin: auto;}

     

二、absolute 和margin(负值)

简单说一下原理,利用了绝对定位,绝对定位的百分比是相对于父元素的宽高,所以我们可以根据这个原理将元素居中显示。但是要注意:绝对定位是基于子元素的左上角来说的,但是要想让子元素居中显示,就要解决这个问题。
此时可以利用margin的负值来实现效果,当外边距为负值时,元素向相反方向定位,这样我们将子元素的外边距设置为子元素的宽高的一半就可以实现了。(PS:缺点就是必须得到子元素的宽高)

.div1{    position: relative;}.box{    top: 50%;    left: 50%;    position: absolute;    margin-top: -50px;    margin-left: -50px;}

三、absolute 和 calc

同样需要子元素的宽高固定,并知道宽高,css3具有计算属性。

top的百分比是基于元素左上角减去宽度的一半即可(PS:依赖calc的兼容性)

.div1{    position: relative;}.box{    position: absolute;    top: calc(50% - 50px );     /* 减号前后没有空格,该样式不生效*/    left: calc(50% - 50px );}

    

当我在写这段代码的时候,发现一个有趣的事情,calc(50%-50px)如果减号前后没有空格的话,样式就不会生效,写上空格的话,就会正常生效了,具体原因我也不太清楚emmmmm

下面的方法将不需要知晓子元素的宽高即可设置

html修改为:

<body>    <div class="div1">        <div class="box">水平垂直居中,不需要子元素固定宽高</div>    </div></body>

公共css如下

.div1{    width: 300px;    height: 300px;    border: 1px solid red;}.box{    background: #00FFFF;}

四、flex(常用)

flex是现代的布局方案仅仅需要几行代码即可实现居中效果

.div1{    display: flex;    justify-content: center;    align-items: center;}

五、line-height

利用行内元素居中属性也可以做到水平垂直居中。把box设置为行内元素,通过text-align就可以实现水平居中vertical-align 也可以在垂直方向做到居中(PS:这种方法需要在子元素中将文字显示重置为想要的效果)

.div1{    line-height: 300px;    text-align: center;    font-size: 0px;}.box{    font-size: 10px;    display: inline-block;    vertical-align: middle;    line-height:initial;    /* 修正文字 */    text-align: left;}

六、absolute 和 transform

不需要子元素宽高固定,但是依赖于translate2d的兼容性

.div1{    position: relative;}.box{    position: absolute;    top: 50%;    left: 50%;    transform: translate(-50%,-50%);}

七、css-table

css新增的table属性,可以把普通元素改变为table元素的显示效果,也可以实现水平居中

.div1{    display:table-cell;    text-align: center;    vertical-align: middle;}.box{    display:inline-block;}

以上就是我总结的一些居中布局的方法了,还有什么其他的欢迎补充!

个人感觉: 我比较喜欢 absolute +margin auto 、flex、absolute 和 transform,移动端最好用flex吧,pc端我喜欢 absolute +margin auto





分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

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

  • CSS3如何实现图片木桶布局?(附代码)
  • 手把手教你CSS如何实现毛玻璃效果
  • 利用CSS如何实现全兼容的毛玻璃效果?
  • CSS如何实现元素不随滚动条滚动
  • CSS如何实现渐变提示框(tooltips)
  • 浅析CSS中怎么实现线性渐变(linear-gradient)
  • 实例详解之怎样使用css实现3D穿梭效果
  • 10个值得收藏的CSS实用小技巧
  • 纯CSS使图片有放大效果代码
  • css如何实现适配iphone全面屏

相关文章

  • 关于ThinkPHP的join关联查询不使用默认的表前缀
  • 介绍PHP + MySQL 实现数据分页显示
  • Photoshop使用素材制作唯美的花体字
  • CDR简单制作光晕效果
  • Vue模仿ElementUI的form表单实例代码
  • 教你使用PHP数据库迁移工具“Phinx”
  • 详解通过WordPress内置函数批量添加文章的方法
  • 如何解决strict standards php报错问题
  • 怎么修改和重置WAMP的phpMyAdmin密码
  • DEDECMS注册成功页面加入马上激活链接转向注册邮

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 怎么通过CakePHP内置模块发送邮件(Gmail)
    • Thinkphp5.1趣味实现学生扫码选座功能
    • html5新增的表单控件和表单属性有哪些
    • Bootstrap中switch的用法是什么
    • PHP之array_unique实现二维数组去重
    • Photoshop通过图层样式制作各式各样的按钮
    • html5的drag和drop的用法示例
    • 浅谈css grid比Bootstrap更适合创建布局的原因
    • Photoshop设计绚丽效果的星光视频教程
    • 怎么通过宝塔面板实现MySQL性能简单调优

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

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