方法1  使用子绝父相 定位  推荐

说明:

让父元素相对定位,因为要让子元素以父元素为参考对象,如果父元素不设置定位,子元素的参考对象就是整个页面document;

子元素绝对定位,top:50%;left:50%;都是相对父元素的高宽的50%设置的;最后一步分为2中实现代码:已知子元素高宽 和 未知子元素高宽;

已知高宽:matgin-top:- height / 2; margin-left:- width / 2;

未知高宽:transform: translate( - 50% , - 50%);   位移:translate (x , y) ; x, y 是百分比时是自己高宽的百分比;

效果:

实现代码:

<!DOCTYPE html>
<html lang="en">
<head>
<style>
.parent {
position: relative;
width: 500px;
height: 500px;
background-color: pink;
}
.child {
position: absolute;
top: 50%;
left: 50%;
/* 已知子元素的宽高 高度 宽度的一半给上、左边距 注意是负数 */
margin-top: -50px;
margin-left: -50px;
/* 未知子元素宽高 */
/* transform: translate(-50%, -50%); */
width: 100px; //注 :使用位移时宽高可以不设置
height: 100px; //
background-color: skyblue;
}
</style>
</head>
<body>
<!-- 盒子水平垂直居中 -->
<div class="parent">
父元素相对定位
<div class="child">子元素绝对定位</div>
</div>
</body>
</html>

方法二 子绝父相 定位 定位值取 0  margin:auto

说明: 让子元素四个方向的定位 l ,r ,t ,b 都为0,此时小盒子还位于原位,使用margin: auto让他上和下,左和右的外边距保持一致。由于小盒子四个方向的定位值都为0,所以会自动将小盒子拉到正中间。但是子盒子的高宽必须已知 , 如果不给子元素高宽 ,子元素会铺满父元素。

<!DOCTYPE html>
<html lang="en">
<head>
<style>
.parent {
/* 父元素相对定位 */
position: relative;
width: 500px;
height: 500px;
background-color: pink;
}
.child {
/* 子元素绝对定位 */
position: absolute;
margin: auto;
width: 100px;
height: 100px;
/* 四个方位值 为 0 */
left: 0;
top: 0;
right: 0;
bottom: 0;
background-color: skyblue;
}
</style>
</head>
<body>
<!-- 盒子水平垂直居中 -->
<div class="parent">
父元素相对定位
<div class="child">子元素绝对定位</div>
</div>
</body>
</html>

方法三:利用 display : table-cell

知识储备:

关于 text-align:center;    text-align 属性规定元素中的文本的水平对齐方式。该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式。cneter参数让把文本排列到中间。 单纯地看这句话你可以知道该属性可以让文本居中显示,但是除此之外,该属性还可以让父元素为块元素的行内元素或行内块元素居中显示

关于table-cell: 

display:table-cell;会使元素表现的类似一个表格中的单元格td,利用这个特性可以实现文字的垂直居中效果。同时它也会破坏一些CSS属性,使用table-cell时最好不要与float以及position: absolute一起使用,设置了table-cell的元素对高度和宽度高度敏感,对margin值无反应,可以响应padding的设置,表现几乎类似一个td元素。

 <style>
.fa {
display: table-cell;
/* 垂直居中 */
vertical-align: middle;
/* 水平居中 */
text-align: center;
width: 400px;
height: 400px;
background-color: pink;
}
.son {
      /* 行内块显示 */
display: inline-block;
width: 100px;
height: 100px;
background-color: lime;
}
</style>
</head>
<body>
<div class="fa">
<div class="son"></div>
</div>
</body>

方法四:利用 flex 布局 display : flex

flex布局 特点:灵活、快速、简单、但是兼容性差。flex布局是浏览器提倡的布局模型、避免浮动脱标的问题

组成部分:

弹性容器:父元素

弹性盒子:子元素

设置方式:给父元素添加display:flex;,子元素可以自动的挤压或拉伸。有主轴(justify-content:xxx)控制;侧轴(align-items:xxx);

align:排列:校准;使一致; items:项目; justify:使对齐;conten:内容

    <style>
.parent {
/* flex布局 */
display: flex;
/* 水平(主轴)居中 */
justify-content: center;
/* 垂直(侧轴居中) */
align-items: center;
width: 500px;
height: 500px;
background-color: pink;
}
.child {
width: 100px;
height: 100px;
background-color: skyblue;
}
</style>
</head>
<body>
<!-- 盒子水平垂直居中 -->
<div class="parent">
<div class="child"></div>
</div>
</body>

前端 面试 html css 如何让一个盒子水平垂直居中?的更多相关文章

  1. 七种css方式让一个容器水平垂直居中

    阅读目录 方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: cente ...

  2. 2019前端面试系列——CSS面试题

    盒模型 /* 红色区域的大小是多少?200 - 20*2 - 20*2 = 120 */ .box { width: 200px; height: 200px; padding: 20px; marg ...

  3. 前端面试之CSS常用的选择器!

    前端面试之CSS常用的选择器! 标签选择器 <style> /* <!-- 标签选择器 :写上标签名 -->*/ p { color: green; } div { color ...

  4. Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法

    Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法 网上方法很多,个人认为以下两种思想是最为常用的. 一种是让第一个盒子脱离文档流,第二个盒子离左边有一定距离. 第二种方法是使用flex布局,不 ...

  5. 前端面试之CSS权重问题!

    前端面试之CSS权重问题! 下面的权重按照从小到大来排列! 1.通用选择器(*) 2.元素(类型)选择器 权重1 3.类选择器 权重10 4.属性选择器 5.伪类 6.ID 选择器 权重100 7.内 ...

  6. css进阶 04-如何让一个元素水平垂直居中?

    04-如何让一个元素水平垂直居中? #前言 老板的手机收到一个红包,为什么红包没居中? 如何让一个子元素在父容器里水平垂直居中?这个问题必考,在实战开发中,也应用得非常多. 你也许能顺手写出好几种实现 ...

  7. CSS(九):设置盒子水平垂直居中

    通过设置下面的样式可以使盒子水平垂直居中: <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  8. div盒子水平垂直居中方法

    文章转载自:div盒子水平垂直居中的方法 - 雪明瑶 这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不仅能实现绝对居 ...

  9. 用css让一个容器水平垂直居中

    阅读目录 方法一:position加margin 方法二: diaplay:table-cell 方法三:position加 transform 方法四:flex;align-items: cente ...

  10. CSS3/CSS之居中解析(水平+垂直居中、水平居中,垂直居中)

    首先,我们来看下垂直居中: (1).如果是单行文本,则可以设置的line-height的数值,让其等于父级元素的高度! <!DOCTYPE html> <html lang=&quo ...

随机推荐

  1. 神州笔记本(HASEE) win11 操作系统自动进入休眠状态,唤醒后自动关机 —— 神州笔记本总出现这种自动关机的问题怎么破解?

    前几日在某东上购入神州笔记本(HASEE),用着本来还好,但是最近只要用到电源模式的问题,这个笔记本就是会无端进入到自动关机的状态. 前文中也讨论过类似的问题: 神州笔记本 win11 节能模式 供电 ...

  2. vscode中使用ssh进行远程项目开发时无法连接远端服务器——如何解决

    找到vscode中的ssh扩展(Visual Studio Code Remote - SSH),然后卸载,再重新安装,即可解决. PS: 重新安装时需要较长时间的等待. ============== ...

  3. 什么是snapshot isolation

    数据库常见的4种事务隔离级别: (源自:(34条消息) 8. 事务隔离级别: 总结_oyw5201314ck的博客-CSDN博客_ck事务隔离) 大多数的数据库默认的事务隔离级别是Repeatable ...

  4. 8月5日CSP-S模拟赛赛后总结

    8月5日CSP-S模拟赛赛后总结 \[8月5日 \ \ CSP-S模拟赛 \ \ 赛后总结 \\ 2024年8月5日 \\ by \ \ \ uhw177po \] 一.做题情况 第一题比赛 \(10 ...

  5. 通过内存映射的方式向lcd屏幕输出几个圆

    /************************************************* * * file name:color.c * author :momolyl@126.com * ...

  6. RabbitMQ普通集群同一宿主机docker搭建

    1.准备3个节点安装rabbitmq,搭建集群(注意:每个节点启动间隔15~20s,如果启动失败,需删除宿主机文件重新启动) 2.宿主机文件目录手动创建,并设置可操作权限 准备宿主机文件目录 cd / ...

  7. CH05_数组

    CH05_数组 概述 定义:一组相同类型的数据的集合. 描述: 1.数组中的每个元素都是相同的数据类型 2.数组是由连续的内存位置组成的. 3.数组索引是从0开始 一维数组 语法: 1.数据类型 数组 ...

  8. spring手动事务控制

    在项目开发中需要用到手动事务进行控制.现说下遇到的问题以及解决方案: 如果程序需要使用嵌套事务,则需要在配置文件中添加一个配置属性,如下: <bean id="transactionM ...

  9. [原创] 域格CLM920模组使用pppd专网拨号

    域格CLM920模组使用pppd专网拨号 参考资料 参照<9X07 模块LINUX集成用户手册版本_V1.60>的第四章节使用pppd拨号上网 编写chat脚本chat-script 要点 ...

  10. 查看 Homebrew 管理的服务的日志

    TL;DR 首先找到 log 文件的位置: 对于 macOS (arm64),log 文件在 /opt/homebrew/var/log 目录下 对于 macOS (x86_64),log 文件在 / ...