这篇文章主要为大家详细介绍了css让容器水平垂直居中的7种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这种css布局平时用的比较多,也是面试题常出的一个题,网上一搜一大丢,不过还是想自己总结一下。

这种方法比较多,本文只总结其中的几种,以便加深印象。

效果图都为这个:

方法一:position加margin

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/**css**/

.wrap { width: 200px; height: 200px; background: yellow; position: relative;}
.wrap .center { width: 100px; height: 100px; background: green; margin: auto; position: absolute; left: 0; rightright: 0; top: 0; bottombottom: 0;}

兼容性:主流浏览器均支持,IE6不支持

方法二:diaplay:table-cell

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/*css*/

.wrap{ width: 200px; height: 200px; background: yellow; display: table-cell; vertical-align: middle; text-align: center;}
.center{ display: inline-block; vertical-align: middle; width: 100px; height: 100px; background: green;}

兼容性:由于display:table-cell的原因,IE67不兼容

方法三:position加 transform

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/* css */

.wrap { position: relative; background: yellow; width: 200px; height: 200px;}
.center { position: absolute; background: green; top:50%; left:50%; -webkit-transform:translate(-50%,-50%); transform:translate(-50%,-50%); width: 100px; height: 100px;}

兼容性:ie9以下不支持 transform,手机端表现的比较好。

方法四:flex;align-items: center;justify-content: center

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/* css */

.wrap { background: yellow; width: 200px; height: 200px; display: flex; align-items: center; justify-content: center;}
.center { background: green; width: 100px; height: 100px;}

移动端首选

方法五:display:flex;margin:auto

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/* css */

.wrap { background: yellow; width: 200px; height: 200px; display: flex;}
.center { background: green; width: 100px; height: 100px; margin: auto;}

移动端首选

方法六:纯position

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/* css */

.wrap { background: yellow; width: 200px; height: 200px; position: relative;}
/**方法一**/
.center { background: green; position: absolute; width: 100px; height: 100px; left: 50px; top: 50px;}
/**方法二**/
.center { background: green; position: absolute; width: 100px; height: 100px; left: 50%; top: 50%; margin-left:-50px; margin-top:-50px;}

兼容性:适用于所有浏览器

方法六中的方法一计算公式如下:

子元素(conter)的left值计算公式:left=(父元素的宽 - 子元素的宽 ) / 2=(200-100) / 2=50px;

子元素(conter)的top值计算公式:top=(父元素的高 - 子元素的高 ) / 2=(200-100) / 2=50px;

方法二计算公式:

left值固定为50%;

子元素的margin-left= -(子元素的宽/2)=-100/2= -50px;

top值也一样,固定为50%

子元素的margin-top= -(子元素的高/2)=-100/2= -50px;

方法七:兼容低版本浏览器,不固定宽高

XML/HTML Code复制内容到剪贴板

不固定宽高,自适应

CSS Code复制内容到剪贴板/*css*/

.table { height: 200px;/*高度值不能少*/ width: 200px;/*宽度值不能少*/ display: table; position: relative; float:left; background: yellow;} .tableCell { display: table-cell; vertical-align: middle; text-align: center; position: absolute; padding: 10px; top: 50%; left: 50%;} .content { position:relative; top: -50%; left: -50%; background: green;}

暂时总结上面的七种,这种方法太多,其实只要习惯了其中的一两种也就够用了。

总结

如果是移动端,那么用方法四和方法五是比较方便的。而且支持不固定宽高的情况,快、准、狠

也就是用 flex; align-items: center; justify-content: center;

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/* css */

.wrap { background: yellow; width: 200px; height: 200px; display: flex; align-items: center; justify-content: center;}
.center { background: green; width: 100px; height: 100px;}

或者display:flex;margin:auto;

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/* css */

.wrap { background: yellow; width: 200px; height: 200px; display: flex;}
.center { background: green; width: 100px; height: 100px; margin: auto;}

如果是PC端,要考虑兼容性的话。方法六是不错滴,也就是纯position。

XML/HTML Code复制内容到剪贴板, CSS Code复制内容到剪贴板/* css */

.wrap { background: yellow; width: 200px; height: 200px; position: relative;}
/**方法一**/
.center { background: green; position: absolute; width: 100px; height: 100px; left: 50px; top: 50px;}
/**方法二**/
.center { background: green; position: absolute; width: 100px; height: 100px; left: 50%; top: 50%; margin-left:-50px; margin-top:-50px;}

如果PC端的中间的元素高度不固定,那么就用方法七即可,代码就不复制了。

这种css元素垂直的如果真的要总结起来,应该有十几二十几种。不过也没必要全部掌握吧,只要大概了解一些,用起来没有副作用就行。

html让容器居中,css让容器水平垂直居中的7种方式的更多相关文章

  1. CSS实现水平垂直居中的1010种方式

    转载自:CSS实现水平垂直居中的1010种方式 划重点,这是一道面试必考题,很多面试官都喜欢问这个问题,我就被问过好几次了 要实现上图的效果看似很简单,实则暗藏玄机,本文总结了一下CSS实现水平垂直居 ...

  2. 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝

    第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...

  3. css实现水平垂直居中的几种方式

    梳理下平时常用css水平垂直居中方式- 使用flex布局 HTML <div class="box"> <div class="child"& ...

  4. 【最全】CSS盒子(div)水平垂直居中居然还有这种方式

    最全的CSS盒子(div)水平垂直居中布局,对CSS 布局掌握程度决定你在 Web 开发中的开发页面速度. 相对于屏幕 方法一:利用定位 <div class="box"&g ...

  5. Flexbox制作CSS布局实现水平垂直居中

    Flexbox实现一个div元素在body页面中水平垂直居中: <!DOCTYPE html><html lang="en"><head>  & ...

  6. 05. flex元素水平垂直居中(三种position水平垂直居中和两种新老版本水平垂直居中)

    flex元素水平垂直居中(三种position水平垂直居中和两种新老版本水平垂直居中) (1).position : <!DOCTYPE html> <html lang=" ...

  7. CSS实现元素水平垂直居中—喜欢对称美,这病没得治

    [TOC] 在CSS中对元素进行水平居中是非常简单的:如果它是一个行内元素,就对它的父元素应用text-align:center;如果它是一个块级元素,就对它自身应用margin:auto.然而要对一 ...

  8. CSS水平垂直居中的几种方法2

    直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; b ...

  9. CSS水平垂直居中的几种方法

    直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: div{ width: 400px; height: 400px; position: relative; b ...

  10. CSS制作图片水平垂直居中

    所谓的图片水平垂直居中就是把图片放在一个容器元素中(容器大于图片尺寸或是指定了大小的容器),并且图片位居此容器正中间(中间是指元素容器的正中间),而图片不是以背景图片(background-image ...

随机推荐

  1. jquery 中根据日期计算天数,以及去掉字符串中的空格

    //方法 增添dayNumber天 ,dates:日期 年月日 function SubDay(dayNumber, dates) { var date= new Date(dates ); date ...

  2. git 修改commit 备注

    1.没有push 1.修改最后一次的提交备注 git commit --amend 输入 i 进行编辑模式,修改好以后 esc 退出编辑模式 :wq 保存并退出. 2.修改之前的备注 git reba ...

  3. T137226 彩虹海

    设目标体系$(n,a)$和答案体系$(m,b)$分别为集合$A$和集合$B$,那么我们可以猜想$B\subseteq A$. 我们可以先通过反证法验证下面两个结论: 若$x\in A$可以被其他$A$ ...

  4. 流程图draw.io自选中文字体

    draw.io免费好用,完全可以取代Visio. 唯独缺省选择都是英文字体.但要选择中文字体也可以自行添加,步骤: 确保系统里已经安装了相应中文字体.ubuntu下Google思源字体在/usr/sh ...

  5. Bert使用

    首先打开网址:https://huggingface.co/models 下载想用的模型

  6. 使用docker 创建6节点redis 集群 RedisCluster redis集群

    1.RedisCluster 特点(3主节点redis 集群  及6节点集群) 1.无中心节点,客户端与redis 节点直连,不需要中间代理,(有选举机制 master个数需要奇数个) 2.数据可以被 ...

  7. Netty实战学习笔记

    第一部分 Netty的概念及体系结构 1.Netty异步和事件驱动 2.你的第一款Netty应用程序 3.Netty的组件和设计 4.传输 5.ByteBuf 6.ChannelHandler和Cha ...

  8. AcWing 841. 字符串哈希 2022/5/25

    include include using namespace std; typedef unsigned long long ULL; char str[N]; //存放字符串 int h[N], ...

  9. LocalDateTime与LocalDate

    时间新特性 新生事物出现,必定是对旧事物的完善或者是缺陷的弥补. 本文章介绍LocalDate.LocalDateTime.在多线程的情况,相比较于Date.Calendar.SimpleDateFo ...

  10. pj_time_swap

    #!/usr/bin/python# -*- coding: UTF-8 -*- import timeimport refrom datetime import datetime, timezone ...