竖直居中方式总结

已知有

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

#child {
  width: 200px;
  height: 200px;
  background: black;
}
<div id="child"></div>

将元素 #child 竖直居中于窗口中部

绝对定位法 1

对未知高度的元素适用。jsfiddle

#child {
  position: absolute; /* fixed */
  top: 50%;
  transform: translateY(-50%);
}

注意此法中的 top: 50% 不能以 margin-top: 50% 代替。因为给 margin-top 设置百分比值时使用的是父元素的宽度而非高度。

绝对定位法 2

只适用于固定高度的内部元素。jsfiddle

#child {
  position: absolute; /* fixed */
  top: 0;
  bottom: 0;
  margin: auto 0;
}

表格布局法

vertical-align 作用于表格元素时,会对表格中的元素起作用。
对未知高度的元素适用。jsfiddle

html {
  display: table;
}

body {
  display: table-cell;
  vertical-align: middle;
}

行排布法

vertical-align 作用于非表格内联(块)元素时,是控制元素本身在当前行的竖直位置。记得把父元素的字号设置为 0
对未知高度的子元素适用,但是要已知父元素高度。jsfiddle

body {
  font-size: 0;
  line-height: 100vh;
}

#child {
  display: inline-block;
  vertical-align: middle;
}

伸缩盒法 1

简单粗暴的方法,不需要管子元素按行还是按列排列。
对未知高度的元素适用。jsfiddle

body {
  display: flex;
}

#child {
  margin: auto 0;
}

伸缩盒法 2

注意对于不同的排列方式 flex-direction 选择不同的 CSS 属性 align-items: centerjustify-content: center。好处是 autoprefix 后兼容旧版 flexbox 语法。
对未知高度的元素适用。jsfiddle

body {
  display: flex;
  align-items: center;
}

竖直书写模式法 1

如果将书写模式改为竖直,text-align 就变为竖直居中。
对未知高度的元素适用。jsfiddle

body {
  writing-mode: vertical-lr;
  text-align: center;
}

#child {
  display: inline-block;
}

竖直书写模式法 2

类似的,将书写模式改为竖直,块元素就变为独占一列,margin: auto 0 就会生效。
需要固定内部元素高度。jsfiddle

body {
  writing-mode: vertical-lr;
}

#child {
  margin: auto 0;
}

如有遗漏欢迎补充 ;)

原文地址:https://www.cnblogs.com/jlfw/p/12213012.html

时间: 2024-10-14 06:34:29

竖直居中方式总结的相关文章

Flex实现水平竖直居中布局

传统的布局使用的是“盒模型”加上display.position和float属性,但是对于一些特殊的布局实现例如居中却是比较麻烦,所以,为了解决一些复杂的布局问题,一种更为灵活的布局方式出现了,那就是Flex布局. Flex 即为Flexible Box,指的是“弹性布局”,它可以为盒模型提供更加灵活的布局方式,例如,用flex可以优雅地实现水平竖直居中的布局. 例如下面这个例子,我们想做的是让child元素在parent里面水平竖直居中: <!DOCTYPE html> <html l

常用布局,div竖直居中

常用两列布局,多列布局和div竖直居中 body { margin: 0; padding: 0; } .w200 { width: 200px; } .mar-left200 { margin-left: 200px; } .red { background-color: red; } .middle { vertical-align: middle; } .block { width: 80%; height: 300px; border: 1px solid #eee; margin: 0

css水平居中,竖直居中技巧(二)

css水平居中,竖直居中技巧(二)===### 1.效果 ### 2.代码#### 2.1.index.html <!DOCTYPE html> <html lang="zh-cn"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-C

css-元素水平、竖直居中

一.水平居中 1.文本图片水平居中 给父级元素设置text-align:center; 2.确定宽度的块级元素居中 设置自身margin-left:auto;margin-right:auto;别忘了设置自身宽度: 3.不确定宽度的块级元素的居中 (1)用table帮助实现不确定宽度块级元素居中 <table><tr><td>块级元素</td></tr></table> 设置table元素margin-left:auto;margin

html 水平竖直居中

line-height:容器高度 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } /* white-space: 换行方式 normal 正常换行 nowrap 不换行 */ /* text-

CSS 行高与文字竖直居中

1.

UITextField竖直居中对齐

http://blog.sina.com.cn/s/blog_87533a0801012nv0.html 用xib生成的UITextField文字默认是水平左对齐,垂直居中对齐的,但是用代码生成的UITextField确是默认是水平左对齐,垂直顶对齐.到UITextField的头文件看了一下,发现只有设置水平对齐的属性,却没有垂直对齐属性.因为xib里都可以设垂直对齐属性,所以应有的,于是再到其父类中找,终于在UIControl.h中找到了,下面两个属性就是分别控制水平与垂直方向对齐的. @pr

HTML 内容居中方式总结

在HTML网页排版经常会用到关于对其方式的情况,水平居中和垂直居中.特别是水平居中,并不是一个简单的text-align就可以解决所有的情况. 开始之前普及一点HTML知识,目标很明显,不同的页面结构情况下,要达到居中的效果方式不同. 常用的块状元素有: <div>.<p>.<h1>...<h6>.<ol>.<ul>.<dl>.<table>.<address>.<blockquote>

竖直方向的ViewPager的实现方式

现在的ViewPager主要是横向的滑动实现,现在公司的业务需要实现竖直方向ViewPager,通过大量的寻找资料终于实现了 废话不说 直接上代码: 一:自定义viewPager package com.example.test; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import android