博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
垂直居中---只需要两个小栗子
阅读量:6698 次
发布时间:2019-06-25

本文共 1951 字,大约阅读时间需要 6 分钟。

之前学习垂直居中的时候在网上找了很多方法,看的我眼花撩乱,一直想着整理一下思路,透过那些纷繁的招式看到本质。

首先明确一下概念:

  • left是指子元素的左margin距离父元素的左padding的距离
  • margin:auto是自适应的意思,由浏览器自动计算
  • translatex:关于x轴的坐标转换,数值为百分数时是相对于本身的宽高。

理解了以上三点,就基本能看懂各种垂直居中方法了

1.top:0;bottom:0;left:0;right:0;margin:auto;

这种方法的意思是先把子元素margin和父元素padding的距离置为0,可以理解为子元素和父元素之间没有空隙,然后把margin置为auto,margin平分子元素和父元素之间的距离,也就是说子元素并不是真正意义的居中,只是子元素中间的内容居中了,子元素和父元素之间的距离是计算机自动计算的(平分);注意这个方法需配合子元素position:absolute使用,因为默认情况下,margin:auto只对上下起作用,对左右不起作用,加上position使元素脱离标准流,margin:auto可识别

.father{  width:400px;  height:400px;  background-color:pink;  position:relative;}.son{  width:100px;  height:100px;  background-color:red;  position:absolute;  top:0;  bottom:0;  left:0;  right:0;  margin:auto;}

2.transform:translate()

这种方法适用于不知道父元素宽高的情况下(面试官可能会这样问呢)。这种方法是通过先把元素定位到父元素的百分之五十的位置top:50%;left:50%;看下图:

图片描述

注意此时子元素的左上角在父元素中间,整个子元素处于父元素右下四分之一的左上角,然后通过transform:translate(-50%,-50%),使子元素相对自身移动百分之五十,这样子元素就居中啦。需要注意的是自元素中要写定位position:relative;这样才能根据父元素识别到定位的基点。

.father{    width:500px;    height:500px;    background-color:pink;    /*position:relative;*/}.son{    width:100px;    height:100px;    background-color: red;    position:relative;    top:50%;    left:50%;    transform:translate(-50%,-50%);}

两个小栗子讲完了,你明白了么?文章末尾,再送两个小栗子(#^.^#)

3.line-height

当一个div里没有内容时高度为0,当有内容比如文字时,div就有了高度,难道是文字把div撑开了?其实不是,这个高度是由元素的line-height决定的。当把line-height设置为该div的高度时,div中的文字就居中显示了。代码很简单

qqqqq
.line{             width:100px;             height:100px;             line-height:100px;             text-align:center;             background:gray; }

4、table

使用table布局也可以实现居中

qqqqq
qqqqq
.father{  width:400px;  height:200px;  display:table-cell;  text-align:center;  vertical-align:middle;    //红色框上下居中  background-color:pink;}.son{  width:100px;  height:100px;  display:inline-block;  background-color:red;  line-height:100px;      //文字在红色框中居中}

转载地址:http://famoo.baihongyu.com/

你可能感兴趣的文章
RxPermissions 源码解析之举一反三
查看>>
Android App 优化之 ANR 详解
查看>>
结合 category 工作原理分析 OC2.0 中的 runtime
查看>>
初识react(二) 实现一个简版的html+redux.js的demo
查看>>
聊聊技术写作的个人体会
查看>>
前端每周清单第 34 期:Vue 现状盘点与 3.0 展望,React 代码迁移与优化,图片优化详论...
查看>>
智能合约语言 Solidity 教程系列5 - 数组介绍
查看>>
JavaScript 专题之函数柯里化
查看>>
Java类集框架 —— LinkedHashMap源码分析
查看>>
Android 路由实践(二)
查看>>
kotlin之plus、copyOf、reverse、forEach、filter、map、reduce、fold等函数解释和使用
查看>>
PAT A1048
查看>>
如何在Kubernetes集群动态使用 NAS 持久卷
查看>>
Base62x比Base64的编码速度更快吗?
查看>>
canvas反向裁剪技巧
查看>>
CentOS 7 防火墙操作
查看>>
用友云开发者中心助你上云系列之在线调试
查看>>
C++ 常用函数总结
查看>>
前嗅ForeSpider教程:数据建表
查看>>
275. H-Index II
查看>>