居中的css:完全指南(翻译)
这里主要参考的是CHRIS COYIER写的一篇的文章(点击查看),主要讲了关于css水平、垂直居中的一些方法,每个方法后面都有一个demo,可以在线查看效果。
1 水平
水平居中有行内元素和块元素,行内元素有文字、图片、链接等;块元素主要是div、p等block元素。
1.1 行内元素
对于行内元素可以使用如下实现水平居中(在线查看demo):
.blocklist1_1 {
text-align: center;
}
这种方法对于inline,inline-block,inline-table等都有效。
1.2 块元素
对于一个块元素,可以设置其margin-left和margin-right自动,就像这样(在线查看demo):
.blocklist1_2 .div1 {
margin: 0px auto;
}
无论块元素的宽度是否已知,都可以实现水平居中。
1.3 多个块元素
如果有多个块元素需要水平居中时,有两种办法可以实现。一种是借助inline-block,另一种是借助flex。对于第一种方法可以使用如下方式(在线查看demo),设置块元素display:inline-block,其父元素水平居中:
..blocklist1_3 .div1 {
text-align: center;
}
.blocklist1_3 .div1 div {
display: inline-block;
}
用flex的话需要给块的父元素添加如下样式(在线查看demo):
.blocklist1_3 .div2 {
display: flex;
justify-content: center;
}
2 垂直
垂直居中也分有行内元素和块元素,不过相比水平居中,垂直居中这里需要讨论的情况有点多,下面我们一一分析。
2.1 行内元素
2.1.1 单行
对于单行的行内元素,我们只需要设置其padding-top和padding-bottom值相等即可(在线查看demo):
.blocklist2_1_1 .div1 {
padding-top: 20px;
padding-bottom: 20px;
}
如果我们不能设置padding的话,而行内元素的高度(height=50px)已知时,可以设置line-height=height,实现元素的垂直居中(在线查看demo):
.blocklist2_1_1 .div2 {
line-height: 50px;
height: 50px;
}
2.1.2 多行
对于多行元素我们有四种方式可以实现垂直居中:
a.可以像上面那样通过设置padding-top和padding-bottom的值相等来实现垂直居中(demo-1):
.blocklist2_1_2 .div1 {
padding: 20px 0px;
}
b.可以借助vertical-align属性来实现垂直居中(demo-2):
.blocklist2_1_2 .div2 {
display: table;
}
.blocklist2_1_2 .div2>div {
display: table-cell;
vertical-align: middle;
}
c.可以借助flex技术来实现垂直居中,只需添加如下样式(demo-3):
.blocklist2_1_2 .div3 {
display: flex;
justify-content: center;
flex-direction: column;
height: 400px;
}
d.将一个全高度的伪元素放置在容器内,然后设置文本垂直对齐(demo-4):
.blocklist2_1_2 .div4 {
position:relative;
}
.blocklist2_1_2 .div4::before {
content: ' ';
display: inline-block;
height: 100%;
width: 1%;
vertical-align: middle;
}
.blocklist2_1_2 .div4>div {
display: inline-block;
vertical-align: middle;
}
2.2 块元素
2.2.1 块元素高度已知
在网页布局中有的时候我们知道元素的高度,有的时候我们不知道。对于已知高度的块元素可以这样设置来实现垂直居中(demo):
.blocklist2_2_1 .div {
position: relative;
}
.blocklist2_2_1 .div div {
position: absoulte;
top: 50%;
height: 100px;
margin-top: -70px; //这里70px是height*1/2 + padding
padding: 20px;
}
2.2.2 块元素高度未知
有时候我们是不知道块元素的高度的,这时候可以使用transform来实现(demo):
.blocklist2_2_2 .div {
position: relative;
}
.blocklist2_2_2 .div div {
transform: translateY(-50%);
top: 50%;
position: absoulte;
}
2.2.3 利用flex实现
除了以上两种办法,还可以使用flex实现(demo):
.blocklist2_2_3 .div {
display: flex;
flex-direction: column;
justify-content: center;
}
3 水平垂直
有的时候我们不仅希望水平居中还希望垂直居中,可以结合以上提到的例子进行组合实现,主要分为以下三个方面:
3.1 元素高度、宽度已知
当元素高度和宽度已知时,可以将元素绝对定位,偏移中心50%,然后使用负的margin值实现,如下(demo):
.blocklist3_1 .div {
position: relative;
}
.blocklist3_1 .div div {
position: absoulte;
top: 50%;
left: 50%;
margin: -120px 0px 0px -220px; //height一半,width一半,另外加上padding值
height: 200px;
width: 400px;
padding: 20px;
}
3.2 元素高度、宽度未知
如果元素的高度和宽度未知呢,我们可以使用变换属性,在两个方向赋予50%的负值,如下(demo):
.blocklist3_2 .div {
position: relative;
}
.blocklist3_2 .div div {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
3.3 利用flexbox实现
用flex实现时需要使用两个中心属性(demo):
.blocklist3_3 .div {
display: flex;
justify-content: center;
align-items: center;
} 居中的css:完全指南(翻译)的更多相关文章
- #Google HTML&CSS规范指南
Google HTML&CSS规范指南 翻译自原文 目录 Google HTML&CSS规范指南 1. 背景 2. 通用 2.1 通用样式规则 2.1.1 协议 2.2 通用格式规则 ...
- 《CSS权威指南》基础复习+查漏补缺
前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...
- 《CSS 设计指南》学习笔记 一
本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...
- css权威指南读书笔记
今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...
- CSS入门指南-4:页面布局
这是<CSS设计指南>的读书笔记,用于加深学习效果. display 属性 display是 CSS 中最重要的用于控制布局的属性.每个元素都有一个默认的 display 值.对于大多数元 ...
- CSS垂直居中指南
大概整理下css中的垂直居中问题 主要分两大类 1 知道块元素尺寸,一般就是指知道元素高度. 方法一:最简单的,类比水平居中. 思路:子元素设置为absolute; top bottom都设置为0 ...
- CSS权威指南 - 层叠
CSS权威指南 第三章结构与层叠 - 层叠 按权重及来源排序 1. Reader important declarations 2. Author important declarations 3. ...
- scons用户指南翻译(附gcc/g++参数详解)
scons用户指南 翻译 http://blog.csdn.net/andyelvis/article/category/948141 官网文档 http://www.scons.org/docume ...
- CSS权威指南学习笔记系列(1)CSS和文档
题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...
随机推荐
- PyTorch深度学习实践——反向传播
反向传播 课程来源:PyTorch深度学习实践--河北工业大学 <PyTorch深度学习实践>完结合集_哔哩哔哩_bilibili 目录 反向传播 笔记 作业 笔记 在之前课程中介绍的线性 ...
- package.xml使用说明
1. package.xml使用说明 a. pacakge.xml 包含了package的名称. 版本号. 内容描述. 维护人员. 软件许可. 编译构建工具. 编译依赖. 运行依赖等信息. 2. pa ...
- C语言刷二叉树(一)基础部分
二叉树基础部分 144. 二叉树的前序遍历 方法一:递归 /** * Definition for a binary tree node. * struct TreeNode { * int val; ...
- qyqt5(一)
一.PyQt窗口处理 1. 第一个PyQt窗口 from PyQt5.QtWidgets import QApplication,QWidget import sys # 1.创建应用程序 app = ...
- JAVA——运算符
目录 运算符 1.算术运算符 练习题: 2.关系运算符(比较运算符) 3.逻辑运算符 3.1&& 和 & 使用区别 3.2|| 和 | 使用区别 3.3 取反 基本规则 3.4 ...
- 【FAQ】接入HMS Core推送服务过程中一些常见问题总结
HMS Core 推送服务(Push Kit)是华为提供的消息推送平台,建立了从云端到终端的消息推送通道.开发者通过集成推送服务,可以向客户端应用实时推送消息,构筑良好的用户关系,提升用户的感知度和活 ...
- 微信小程序码生成及canvas绘制
吐槽:某厂的开发文档写的跟屎一样 1.后台返回accessToken,小程序请求获取小程序码 uni.request({ url: 'https://api.weixin.qq.com/wxa/get ...
- MRS IoTDB时序数据库的总体架构设计与实现
MRS IoTDB时序数据库的总体架构设计与实现 MRS IoTDB是华为FusionInsight MRS大数据套件最新推出的时序数据库产品,其领先的设计理念在时序数据库领域展现出越来越强大的竞争力 ...
- 《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
1.简介 上一篇中介绍了DataProvider如何传递参数,以及和一些其他方法结合传递参数,今天宏哥接着把剩下的一些常用的也做一下简单的介绍和分享. 2.项目实战1 @DataProvider + ...
- LGP2233题解
题目大意 求环上走 \(n\) 步从指定点到达另一指定点,到达指定点后 不得继续移动. 大家都做过P1057传球游戏吧?还记得这道题的思路吗? 设 \(dp[i][j]\) 表示传 \(i\) 次求传 ...