首页 > 其他分享 >元素水平居中的方法

元素水平居中的方法

时间:2023-11-06 18:45:01浏览次数:39  
标签:居中 margin 元素 height width background 方法

1.背景

在开发中经常遇到的问题,让元素的内容在水平和垂直方向上都居中,内容不仅限于文字,可能是图片或者其他元素。

实现居中的方法有很多,可以分为两大类:

  • 居中元素(子元素)的宽高已知
  • 居中元素的宽高未知

2.实现方法

实现元素水平垂直居中的方式;

  • 定位+margin:auto
  • 定位+margin:负值
  • 定位+transform
  • table布局
  • flex布局
  • grid布局

2.1定位+margin:auto

//父元素
.father{
 width:500px;
 height:300px;
 border:1px solid #0a3b98;
 position: relative;
 }
//子元素
 .son{
 width:100px;
 height:40px;
 background: #f0a238;
 position: absolute;
 top:0;
 left:0;
 right:0;
 bottom:0;
 margin:auto;
 }

父元素设置为相对定位,子元素绝对定位,并且四个定位属性值设置为0,此时如果子元素没有设置宽高,则会被拉开到和腹肌一样的宽高。

这里子元素设置了宽高,所以宽高会按照我们的设置来显示,但是实际上子元素的虚拟占位已经撑满了整个父元素,这是再给它一个margin:auto它就可以上下左右都居中了。

2.2定位+margin:负值

 .father {
 position: relative;
 width: 200px;
 height: 200px;
 background: skyblue;
 }
 .son {
 position: absolute;
 top: 50%;
 left: 50%;
 margin-left:-50px;
 margin-top:-50px;
 width: 100px;
 height: 100px;
 background: red;
 }

这种方案不要求知道父元素的宽高,也就是即使父元素的高度变化了,仍然可以保持在父元素的垂直居中位置,水平方向上市一样的操作

但是该方案需要知道子元素自身的宽高,我们可以通过下面transform属性进行移动

2.3定位+transform

.father {
 position: relative;
 width: 200px;
 height: 200px;
 background: skyblue;
 }
 .son {
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%,-50%);
 width: 100px;
 height: 100px;
 background: red;
 }

transform(-50%,-50%)会将元素位移自己宽高的-50%

这种方法其实和上边的margin负值用法一样,可以说是margin负值的替代方案,并不需要知道自身元素的宽高

2.4.table布局

.father {
 display: table-cell;
 width: 200px;
 height: 200px;
 background: skyblue;
 vertical-align: middle;
 text-align: center;
 }
 .son {
 display: inline-block;
 width: 100px;
 height: 100px;
 background: red;
 }

设置父元素为display:table-cell,子元素设置display:inline-block。利用vertical和text-align可以让所有的行内块级元素水平垂直居中

2.5.flex弹性布局

.father {
 display: flex;
 justify-content: center;
 align-items: center;
 width: 200px;
 height: 200px;
 background: skyblue;
 }
 .son {
 width: 100px;
 height: 100px;
 background: red;
 }

css3中加入了flex布局,可以非常简单实现垂直水平居中

  • display:flex时,表示该容器内部的元素将按照flex进行布局
  • align-item:center表示这些元素相对于本容器水平居中
  • justify-content:center也是同样的道理垂直居中

2.6.grid网格布局

.father {
 display: grid;
 align-items:center;
 justify-content: center;
 width: 200px;
 height: 200px;
 background: skyblue;
 }
 .son {
 width: 10px;
 height: 10px;
 border: 1px solid red
 }

3.总结

上述方法中不知道元素宽高大小仍能实现水平垂直居中的方法有

  • 定位+margin:auto
  • 定位+transform
  • flex布局
  • grid布局

 

标签:居中,margin,元素,height,width,background,方法
From: https://www.cnblogs.com/cjw0217/p/17813419.html

相关文章

  • Oracledb_exporter 获取表大小信息的简单方法
    Oracledb_exporter获取表大小信息的简单方法背景用我儿子的现状作为背景:我爱学习,学习让我妈快乐.下载exporterexporter可以在github上面下载最新版本是0.5.1https://github.com/iamseth/oracledb_exporter可以直接下载release好的二进制,也可以dockerpull......
  • js判断数据类型最准确的方法之一
    functiongetType(data){consttype=Object.prototype.toString.call(data);letres='';switch(type){case'[objectObject]':res='Object';break;case'[objectArray]':res=&......
  • 恒创科技:高效解决香港服务器负载过高的方法
    ​当我们在使用香港服务器时,有时会遇到服务器负载过高的问题。这会导致网站加载速度变慢甚至无法正常使用。为了解决这个问题,我们需要采取一些高效的方法来提升服务器的负载能力。1.考虑对服务器进行升级维护。通过增加硬件资源,如CPU、内存和存储空间等,可以提高服务器的......
  • 将两个列表合并成一个字典 dict(zip())方法
    假设你有如下两个list:keys=['name','age','food']values=['Monty',42,'spam']如何转变成:a_dict={'name':'Monty','age':42,'food':'spam'}解决方法:d......
  • Python分享之特殊方法与多范式
    Python一切皆对象,但同时,Python还是一个多范式语言(multi-paradigm),你不仅可以使用面向对象的方式来编写程序,还可以用面向过程的方式来编写相同功能的程序(还有函数式、声明式等,我们暂不深入)。Python的多范式依赖于Python对象中的特殊方法(specialmethod)。特殊方法名的前后各有......
  • CSS让子元素div的高度填满父容器的剩余空间的方法
    原帖:https://pythonjishu.com/unbayyjtzdjeewe/以下是详细讲解CSS让子元素div的高度填满父容器的剩余空间的方法的完整攻略。方法一:FlexboxFlexbox是一种强大的布局方式,使用起来非常方便。可以通过设置父元素的display属性为flex来开启flexbox布局,然后设置子元素的......
  • 移动端元素定位辅助神器-WEditor
    WEditor可以做什么?编辑器能够提供辅助编写脚本,查看组件信息,调试代码等功能。移动端除了用Appium来做元素定位外,还可以通过WEditor来完成。前置环境依赖按照以win系统示例进行说明windows需要前置安装tidevice(推荐)tidevice工具链接python环境进行安装tidevice......
  • matlab用Logistic逻辑回归建模和马尔可夫链蒙特卡罗MCMC方法分析汽车实验数据
    原文链接:http://tecdat.cn/?p=24103原文出处:拓端数据部落公众号 此示例说明如何使用逻辑回归模型进行贝叶斯推断。统计推断通常基于最大似然估计(MLE)。MLE选择能够使数据似然最大化的参数,是一种较为自然的方法。在MLE中,假定参数是未知但固定的数值,并在一定的置信度下进......
  • vuejs3.0 从入门到精通——组件传值方法——兄弟组件之间的传值
    兄弟组件之间的传值 A组件-->父组件-->B组件一、组件安装npminstallmitt-Smkdir-pvVITE-PROJECT/plugin/Bus.jsecho"importmittfrom'mitt';constemitter=mitt();exportdefaultemitter;">> VITE-PROJECT/plugin/Bus.js一、A组件二、父组件三、B......
  • 虚拟机共享本地硬盘的方法
    首先,在打开的虚拟机的主界面中点选我的电脑上的虚拟机系统,再点击右侧的编辑虚拟机设置。然后,在弹出的虚拟机设置中点击“选项”标签栏目点选在“选项”标签栏目中的“共享文件”。接着,在共享文件的右侧点击“总是启用”。点击“添加(A).....”按钮。将主机中的某个文件夹作......