HTML中实现子容器垂直居中的几种方式

年前前端圈蛮热闹的,大家撕的挺欢的,阿当想说的并不是固步自封,抵制学习新东西,而是想说要夯实基础,然后对框架有甄别能力的基础上再去有选择的学习。归根结底还是要掌握好根本,也就是道,其余的工具都不过是术,得道了,术这些东西自然手到擒来。好了,胡扯打住。阿当说区别真前端和伪前端其中一点就是能说出几种HTML元素的垂直居中方式。

那我在这里总结一下我get的几种方式。

代码结构如下,父容器,子容器宽高不确定

<div class="parent">
    <div class="child"></div>
</div>

一、实现子容器水平居中的几种方式:

1. 子容器.child设置display: inline-block; 父容器设置text-align: center。这种方法兼容性好,可以做一下hack处理来实现对IE6,7的兼容,子容器 _display: inline; _zoom: 1;

2. 利用table元素特性。子容器.child{display: table; margin: 0 auto;}。

3. 利用定位,即.parent{position: relative}; .child{position: absolute; left: 50%; transform: translateX(-50%)}。

这种方法兼容性较差,IE9以上支持, IE9需加私有前缀-ms- ( http://caniuse.com/#search=transform )

4. 利用弹性盒子布局。父容器display: flex; justify-content: center。兼容性比较差,IE10,IE11对弹性布局都是部分支持,IE10需加私有前缀。

二、实现子容器的垂直居中的几种方式:

1. 父容器display: table-cell; vertical-align: middle。

2. 父容器position: relative; 子容器position: absolute; top: 50%; transform: translateY(-50%);

3. 父容器,display: flex; align-items: center。

综上,实现子容器水平、垂直居中对齐的方式有(父容器,子容器宽高不确定。):

1. 父容器.parent{text-align: center; display: table-cell; vertiacal-align: middle;}。 子容器.child{display: inline-block;}

2. 利用定位。父容器.parent{position: relative;} 子容器.child{position: absolute; top: 50%, left: 50%; transform: translate(-50%, -50%); }

3. 利用弹性布局。父容器display: flex; justify-content: center; align-items: center;

时间: 2024-11-01 14:31:48

HTML中实现子容器垂直居中的几种方式的相关文章

[CSS] 子元素垂直居中的两种方式

1. 多个子元素水平并排,IE10以下失效 1 display: flex; 2 align-items: center; 3 justify-content: center; 2.多个子元素竖直排列,这种方式会导致margin失效,IE8以下失效 1 display: table-cell; 2 vertical-align: middle;

Struts2中获取HttpServletRequest,HttpSession等的几种方式

转自:http://www.kaifajie.cn/struts/8944.html package com.log; import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import o

WPF中使用文件浏览对话框的几种方式

原文:WPF中使用文件浏览对话框的几种方式 WPF本身并没有为我们提供文件浏览的控件, 也不能直接使用Forms中的控件,而文件浏览对话框又是我们最常用的控件之一. 下面是我实现的方式 方式1: 使用win32控件OpenFileDialog ? 1 2 3 4 5 6 7 Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog(); ofd.DefaultExt = ".xml"; ofd.Fil

Velocity中加载vm文件的三种方式

Velocity中加载vm文件的三种方式: a.  加载classpath目录下的vm文件 Properties p = new Properties(); // 加载classpath目录下的vm文件 // 这里是加载模板VM文件,比如:/META-INF/template/Web_B2CPayment.vm(请参考mas_spring_integration.xml) p.setProperty("file.resource.loader.class", "org.apa

转 Velocity中加载vm文件的三种方式

Velocity中加载vm文件的三种方式 velocitypropertiespath Velocity中加载vm文件的三种方式:   方式一:加载classpath目录下的vm文件 Properties p = new Properties(); p.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); Ve

C语言中存储多个字符串的两种方式

C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[4][10] = { "Justinian", "Momo", "Becky", "Bush" }; 在内存中的存储: J u s t i n i a n \0 M o m o \0 \0 \0 \0 \0 \0 B e c k y \0 \0 \0 \0 \0 B u s h \0 \0 \0 \0 \0 \0 这种方式会造成内存空间

C#中关于增强类功能的几种方式

C#中关于增强类功能的几种方式 本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能. 拓展方法 扩展方法被定义为静态方法,通过实例方法语法进行调用.方法的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀.仅当使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才可使用. namespace Extensions { public static class StringExtension { public stati

聊聊业务系统中投递消息到mq的几种方式

背景 电商中有这样的一个场景: 下单成功之后送积分的操作,我们使用mq来实现 下单成功之后,投递一条消息到mq,积分系统消费消息,给用户增加积分 我们主要讨论一下,下单及投递消息到mq的操作,如何实现?每种方式优缺点? 方式一 step1:start transaction step2:生成订单 step3:投递消息到mq step4:commit transaction 这种方式是将发送消息放在了事务提交之前,可能存在的问题: step3发生异常 导致step4失败,下单失败,直接影响到下单业

Docker容器进入的4种方式

原文地址:http://www.cnblogs.com/xhyan/p/6593075.html 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进入Docker容器比较常见的几种做法如下: 使用docker attach 使用SSH 使用nsenter 使用exec 一.使用docker attach进入Docker容器 Docker提供了attach命令来进入Docker容器