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

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

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了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全面屏

相关文章

  • 2022-04-29Photoshop使用图层样式制作金属立体字
  • 2022-04-29完美实现CSS垂直居中的11种方法
  • 2022-04-29MacOS下PHP7.1升级到PHP7.4.15的方法
  • 2022-04-29Laravel 图片上传失败怎么办
  • 2022-04-29PHP中mysql_connect()函数不支持怎么办
  • 2022-04-29ThinkPHP 6.0 多语言优化扩展包的安装与使用
  • 2022-04-29PHP中连接符大于号、等号大于号的意思
  • 2022-04-29PhotoShop制作漂亮的蓝色发光文字效果教程
  • 2022-04-29最新织梦漏洞,首页head之间被篡改加入异常代码解决办法
  • 2022-04-29关于WordPress局域网内外同时访问

文章分类

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

最近更新的内容

    • Illustrator绘制心形效果的粉色海报
    • Photoshop详细解析斜面浮雕和等高线原理
    • Photoshop改进UI设计的一些心得技巧
    • 浅谈小程序中实现图片下载功能的方法
    • 怎么解决javascript数字计算丢失精度问题?
    • 详解使用php-imap查询操作邮件收件箱
    • 浅谈CSS如何实现九宫格提示超出数量
    • PHP怎么上传图片改文件名
    • Photoshop制作石纹背景效果的立体字
    • WordPress自动设置标签Tag自动内链无插件实现方法

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

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