水平居中

(1)内联元素:

text-align: center;

利用 text-align: center ;可以实现在块级元素内部的内联元素水平居中。

如果一行中有多个块级元素,可以通过设置块级元素的显示类型为inline-block和父容器的text-align属性从而使多块级元素水平居中。

注意:此方法对内联(inline), 内联块(inline-block),内联表(inline-table), 内联块级弹性盒(inline-flex)元素水平居中都有效。

(2)块级元素:

margin: 0 auto;

注意:当块级元素的宽度固定时,可通过margin: 0 auto;使块级元素水平居中。(未定宽度,居中无效)

(3)绝对定位+2D平移:

position: absolute;

left:50%;

transform: translateX(-50%);

注意:当块级元素的宽度不固定时,可通过绝对定位配合2D平移(平移相对于自身宽高的百分比),使块级元素水平居中。

(4)弹性盒子使用justify-content属性:

display: flex;

justify-content: center;

注意:需将父盒子设置为弹性盒子,利用justify-content 属性(用于设置弹性盒子元素在主轴(横轴)方向上的对齐方式)实现水平居中。

垂直居中

(1)内联元素:

vertical-align:middle;

vertical-align是用来指定内联元素或者表格单元格元素的垂直对齐方式。

可被用于:使内联元素盒模型与其内联元素容器垂直对齐。用于垂直对齐一行文本的内的图片,垂直对齐表格单元内容。

注意:使用vertical-align要清楚基线、边界的概念

vertical-align只对内联元素(inline、inline-block、inline-table)、表格单元格元素(table-cell)生效。不能用它垂直对齐块级元素。

(2)行高与高度一致:

line-height: **px;

height: **px;

内联元素的高度(height)和行高(line-height)相等时,元素垂直居中。

(3)块级元素:

position: absolute;

top: 50%;

height: 100px;

margin-top: -50px;

注意:当块级元素的高度固定时,通过绝对定位元素距离顶部50%,并设置margin-top向上偏移元素高度的一半,使块级元素垂直居中。

(4)绝对定位+2D平移:

position: absolute;

top: 50%;

transform: translateY(-50%);

注意:当块级元素的高度不固定时,可通过绝对定位配合2D平移(平移相对于自身宽高的百分比),使块级元素垂直居中。部分浏览器存在兼容性的问题。

(5)弹性盒子使用 align-items属性:

display: flex;

align-items: center;

注意:需将父盒子设置为弹性盒子,利用align-items 属性(用于设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式)实现垂直居中。

(6)利用表布局(table)

display:table;

display:table-cell;

注意:父容器设为display:table让他成为一个块级表格元素,子元素display:table-cell使子元素成为表格单元格,

然后就像在表格里一样,给子元素加个vertical-align: middle就行了,多行文字垂直居中。(常规的登录及注册页面都需要用到)

(7)精灵元素(ghost element)技术

.ghost-center {
position: relative;
}
.ghost-center::before {
content: " ";

display: inline-block; height: 100%; width: 1%; vertical-align: middle;
}
.ghost-center p {
display: inline-block; vertical-align: middle; width: 20rem;
}

在父容器内放一个100%高度的伪元素,让文本和伪元素垂直对齐,从而达到垂直居中的目的。个人认为本质就是第(1)种方法。

水平垂直居中

(1)固定宽高

.parent {
    position: relative;
} .child {
    position: absolute;     top: 50%;     left: 50%;     margin: -50px 0 0 -50px;
    width: 100px;

    height: 100px;
}

(2)不定宽高

.parent {
    position: relative;
} .child {
    position: absolute;

    top: 50%;     left: 50%;     transform: translate(-50%, -50%);
}

(3)利用flex布局

.parent {
display: flex; justify-content: center; align-items: center;
}

(4)利用grid布局(兼容性较差,不推荐)

.parent {
height: 140px;

display: grid;
}
.child {
margin: auto;
}

(5)利用表布局(table)

.outer {
display: table;

position: absolute; height: 100%; width: 100%;
} .middle {
display: table-cell; vertical-align: middle;
} .inner {
margin-left: auto; margin-right: auto; width: 400px;
}

————————————————
资料参考:

CSDN博主「微个日光日」
原文链接:https://blog.csdn.net/xiebaochun/article/details/89838522

简书博主「Iam_Bling
 原文链接:https://www.jianshu.com/p/ce7e4a997a2c

前端小白,有哪些不足的地方,希望大家多多指教

前端基础问题:CSS居中的几种方式的更多相关文章

  1. CSS居中的几种方式总结

    1.水平居中的 margin:0 auto; 这个是用于子元素上的,前提是不受float影响 <style type="text/css"> .box{ width: ...

  2. css居中的几种方式

    居中分水平和垂直两种,使用的频度也算是很高,下面分情况来讨论一下几种常用的实现方式. 欢迎指正文中的错误,同时如果有学习到新的方式也会更新在后面,也方便以后温故知新. 1.margin 这种方式只能实 ...

  3. 前端第二篇---前端基础之CSS

    前端第二篇---前端基础之CSS 目录 一.css介绍 二.css语法 三.css的几种引入方式 四.css选择器 五.css属性相关 六.盒子模型 拓展 一.css介绍 CSS(Cascading  ...

  4. 02 前端基础之CSS

    目录 前端基础之CSS css简介 基本选择器(重要) 组合选择器(重点) 属性选择器 分组与嵌套 伪类选择器 伪元素选择器 选择器的优先级 字体相关 背景属性 边框属性 display属性 盒子模型 ...

  5. 前端基础:CSS样式选择器

    前端基础:CSS样式选择器 CSS概述 CSS是Cascading Style Sheets的简称,中文意思是:层叠样式表,对html标签的渲染和布局.CSS规则由两个主要的部分组成:1.选择器:2. ...

  6. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  7. HTML 引用Css样式的四种方式

    不才,只知道HTML引用CSS样式有四种方式,内部引用和外部引用各两种,因为老是忘记细节,记下了随时翻阅亦可方便如我般的初学者 内部引用方式1: 直接在标签内用 style 引用,如: <div ...

  8. 原生js更改css样式的两种方式

    下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1:css表达式2:css表达式3  &quo ...

  9. python 中增加css样式的三种方式

    增加css样式的三种方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

随机推荐

  1. 苹果M1处理器Mac“翻车”:用户吐槽SSD

    SSD如今被不少PC用户所推崇,其优势在于读写速度快.工作无噪音,不过,缺点是寿命较机械硬盘差点.厂商对SSD通常都会标注一个最大可写入量(TBW),提醒用户关注健康数据,以免掉盘等严重问题. 越来越 ...

  2. MyBatis(三):自定义持久层框架实现

    代码已上传至码云:https://gitee.com/rangers-sun/mybatis 新建Maven工程 架构端MyPersistent.使用端MyPersistentTest,使用端引入架构 ...

  3. Go Module实战:基于私有化仓库的GO模块使用实践

    新年开工近一月,2021 年第一期 Open Talk 定档 3 月 18 日晚 8 点,本期我们邀请到了又拍云资深后端开发工程师刘云鹏和我们一起聊聊 Go 最新特性 Go Module 实战. 刘云 ...

  4. 【odoo14】第八章、服务侧开发-进阶

    本章代码位于作为GITHUB库 https://github.com/PacktPublishing/Odoo-14-Development-Cookbook-Fourth-Edition 在第五章( ...

  5. 「NOIP模拟赛」Round 2

    Tag 递推,状压DP,最短路 A. 篮球比赛1 题面 \(Milky\ Way\)的代码 #include <cstdio> const int N = 2000, xzy = 1e9 ...

  6. Android 之 手动创建活动

    •活动是什么 活动(Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件: 主要用于和用户进行交互: 一个应用程序可以包含零个或多个活动. 接下来,我们来学习一下活动的基本用法. ...

  7. OpenCV 之 平面单应性

    上篇 OpenCV 之 图象几何变换 介绍了等距.相似和仿射变换,本篇侧重投影变换的平面单应性.OpenCV相关函数.应用实例等. 1  投影变换 1.1  平面单应性 投影变换 (Projectiv ...

  8. 亲测有效,解决80端口被svchost.exe进程占用的问题,网上的方法不行,可以试试这个

    先说网上无效的方法(个人尝试无效,不具有代表性): 网上第一个说法:把IIS给关了,Windows10系统本身IIS是处于禁用状态的,并且没有额外安装IIS和启动IIS. 网上第二个说法:和SQL S ...

  9. Elasticsearch 分页查询

    目录 前言 from + size search after scroll api 总结 参考资料 前言 我们在实际工作中,有很多分页的需求,商品分页.订单分页等,在MySQL中我们可以使用limit ...

  10. python 开发环境安装(最全最完整)

    一.下载安装包 Windows64 位电脑安装 Python,浏览器的地址栏访问: https://www.python.org/ftp/python/3.7.9/python-3.7.9-amd64 ...