垂直居中

首先将<html><body>的高度设置为100%(为演示父元素不定宽高的效果),并清除<body>的默认样式。

    html,body{margin: 0;height: 100%;}

垂直居中大致分为两类,父元素定宽高与父元素不定宽高,将两类样式以及子容器设定好。

    .set-parent,.dy-parent{width: 300px;height: 200px;background: #eee;margin: 10px 0;}.child{width: 20px;height: 10px;background: #fff;}.dy-parent{ width: 30%;height: 20%;}

父元素定宽高 position+margin

使用margin: auto使水平居中,将子容器设定为relative以在不脱离文档流的情况下偏移50%,由于本身子容器占用一定宽高,会将其撑下,使用margin使其向上偏移。
若是子容器使用absolute定位,则父容器应设置为relative,否则会其相对于static定位以外的第一个父元素进行定位,在本示例中会以浏览器为基准定位,此外absolute无法使用margin: auto水平居中。

    <!-- 父元素定宽高 position+margin --><div class="set-parent" ><div class="child" style="position: relative;top: 50%;margin: auto;margin-top: -5px;"></div></div>

父元素定宽高 position+transform

原理与position+margin相同,CSS3的transform使得div向上平移自身高度的50%

<!-- 父元素定宽高 position+transform --><div class="set-parent" ><div class="child" style="position: relative;top: 50%;margin: auto;transform: translateY(-50%);"></div></div>

父元素定宽高 position+calc

css3提供calc函数,能够进行动态计算。

    <div class="set-parent" ><div class="child" style="position: relative;top: calc(50% - 5px);left: calc(50% - 10px);"></div></div>

父元素不定宽高 flex

flex布局可以说是布局神器,极其强大,绝大部分现代浏览器都兼容性flex布局。

    <div class="dy-parent" style="display: flex;justify-content: center;align-items: center;"><div class="child" ></div></div>

父元素不定宽高 grid

grid布局将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,grid布局与flex布局有一定的相似性,都可以指定容器内部多个项目的位置。但是,它们也存在重大区别,flex布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局,grid布局则是将容器划分成"行"和"列",产生单元格,然后指定"项目"所在的单元格,可以看作是二维布局,可以认为grid布局比flex布局强大。

    <div class="dy-parent" style="display: grid;justify-content: center;align-content: center;"><div class="child" ></div></div>

父元素不定宽高 table

table中有vertical-align属性设置垂直对齐方式。

    <div class="dy-parent" style="display: table;"><div style="display: table-cell;vertical-align: middle;"><div class="child" style="margin: auto;" ></div></div></div>

示例

<!DOCTYPE html>
<html>
<head><title>垂直居中</title><meta charset="utf-8">
</head>
<body><!-- 父元素定宽高 position+margin --><div class="set-parent" ><div class="child" style="position: relative;top: 50%;margin: auto;margin-top: -5px;"></div></div><!-- 父元素定宽高 position+transform --><div class="set-parent" ><div class="child" style="position: relative;top: 50%;margin: auto;transform: translateY(-50%);"></div></div><!-- 父元素定宽高 position+calc --><div class="set-parent" ><div class="child" style="position: relative;top: calc(50% - 5px);left: calc(50% - 10px);"></div></div><!-- 父元素不定宽高 flex --><div class="dy-parent" style="display: flex;justify-content: center;align-items: center;"><div class="child" ></div></div><!-- 父元素不定宽高 grid --><div class="dy-parent" style="display: grid;justify-content: center;align-content: center;"><div class="child" ></div></div><!-- 父元素不定宽高 table --><div class="dy-parent" style="display: table;"><div style="display: table-cell;vertical-align: middle;"><div class="child" style="margin: auto;" ></div></div></div></body>
<style type="text/css">html,body{margin: 0;height: 100%;}.set-parent,.dy-parent{width: 300px;height: 200px;background: #eee;margin: 10px 0;}.child{width: 20px;height: 10px;background: #fff;}.dy-parent{width: 30%;height: 20%;}
</style>
</html>

每日一题

https://github.com/WindrunnerMax/EveryDay

CSS实现垂直居中布局相关推荐

  1. CSS水平垂直居中布局方案概述

    在前端开发中,通过CSS实现布局容器的居中,也有诸多方法方式,当然也是CSS面试题中的经典面试题,在本文章中会系统的分析综述 通过 Flexbox 布局模块 与 CSS Grid布局模 实现容器的居中 ...

  2. CSS里总算是有了一种简单的垂直居中布局的方法了

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head><me ...

  3. bootstrap 垂直居中 布局_给你一份详细的CSS布局指南,请查收

    作者:catboy 文章来源:http://t.cn/A6wtKzip 在我们前端开发过程中,写css(包括sass, less, stylus这样的预处理器)进行设计稿的样式还原是一项重要的工作,而 ...

  4. 八十七、CSS水平垂直居中的布局方式

    @Author:Runsen 2020/11/30. 周一.今天又是奋斗的一天. 文章目录 水平居中 inline-block+ text-algin 属性配合使用 子元素block和margin属性 ...

  5. html让布局垂直居中,css垂直居中布局总结

    简介 总结记录一下经常需要用到垂直居中布局,欢迎补充(空手套...O(∩_∩)O) 以下栗子如果未特别标注同一使用这样的html结构 垂直居中布局 利用绝对定位和负margin 绝对定位可以很容易做到 ...

  6. 翻译 | CSS网格(CSS Grid)布局入门

    原文地址:Getting to know CSS Grid Layout 原文作者:Chris Wright 译者:华翔 校对者:珂珂.干干 翻译 | CSS网格(CSS Grid)布局入门 bann ...

  7. CSS实现垂直居中的常用方法

    CSS实现垂直居中的常用方法 在前端开发过程中,盒子居中是常常用到的.其中 ,居中又可以分为水平居中和垂直居中.水平居中是比较容易的,直接设置元素的margin: 0 auto就可以实现.但是垂直居中 ...

  8. CSS实现垂直居中的方法

    CSS实现垂直居中的方法 1.relative absolute定位: (1)css html代码 1 <!doctype html> 2 <html lang="en&q ...

  9. CSS 水平垂直居中

    方法一: 容器确定宽高:知识点:transform只能设置在display为block的元素上. <head> <meta charset="UTF-8"> ...

最新文章

  1. 杭州线下|2019产品经理年终轰趴
  2. 小米云能导入到华为云吗_小米11值得买吗?小米11和华为Mate40、iPhone 12相比,哪款性价比最高?...
  3. Golang range解析
  4. 黑苹果hp有声音hdmi无声音_黑科技!不戴耳机也能独享声音!以色列公司推出无耳机传输音乐...
  5. 新增10亿元作支持 重庆将多举措提升科技创新能力
  6. 处理Cookie ( from http://edu.chinaz.com )
  7. 怎么写化学反应方程式?
  8. 灌篮高手湘北高中原型
  9. Pandas缺失值inf与nan处理实践
  10. html怎么做出相框的效果,使用CSS3制作PS级的图片边框效果
  11. 剑指offer刷题总记——Java
  12. 计算机怎么没有word文档,word没了怎么回事 为什么电脑没有了word
  13. 超级跑车法拉利的历史
  14. 全球与中国汽车真皮内饰市场发展模式及前景趋势预测报告2022-2028年版
  15. 【笔试题】求最小公倍数 C++(两种方法)
  16. 黑魂向project制作学习三:摄像头碰撞(Camera Collisions)
  17. 7-113 用switch语句编程百分制成绩转换为五分制成绩
  18. INPUT输入框带默认值
  19. Quick 书签菜单插件使用方法
  20. 【人工智能】推荐系统

热门文章

  1. mybatis入门基础(三)----SqlMapConfig.xml全局配置文件解析
  2. SpringSecurity + JWT实现单点登录
  3. 说下List接口下的那些类
  4. java解决限制访问指定url
  5. 依赖注入[2]: 基于IoC的设计模式
  6. kafka(一)—基本概念
  7. Delphi XE的RTTI增强,动态Hook某些内部事件
  8. Unity3d 新建xml 读取xml
  9. 《HTML5和CSS3快速参考》——1.3HTML5的品牌化
  10. Exchaneg 2013 集成OWAS