css必学之垂直水平居中

css面试题当中最常见的就要数垂直水平居中了,在日常的工作当中,解决垂直水平居中也是各种方法,大家常用的是flex布局,但是单单回答这个问题,面试官常常不够满意,下面我来给大家总结一下常规的几种方案,以及面试官会问的点。

一:flex布局

  1. 先上代码,新手可以把代码复制到本地运行,方便理解。
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>垂直水平居中</title>
    <style>
        .div1 {
            width: 200px;
            height: 200px;
            background-color: green;
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;
        }
    </style>
</head>
<body>
    <div class="div1">
        <div>
            我要垂直水平居中
        </div>
    </div>
</body>
</html>
  1. 实际效果
  1. 总结:
  • div1这个元素必须要知道宽高才能把它设置成flex布局;
  • 确定好布局之后,要确定里面元素的要按照水平方向摆放还是垂直方向,用到flex-direction: row; 默认是水平方向,因此这个属性可以省略不写,初学者不太理解,可以写上;
  • 确定好方向为从左到右之后,justify-content: center; 是在水平轴的最中间;justify-content就是决定元素在主轴上的排列方式;
  • align-items决定元素在侧轴上的排列方式;

上面那些部分有点绕,简单来说,就是先通过flex-direction 来设置主轴的方向,justify-content 是设置主轴上元素,align-items处理侧轴上的元素,实际场景当中试一下就可以理解了。
面试官会问,怎么确定主轴与侧轴

二:使用transform

  1. 先上代码,新手可以把代码复制到本地运行,方便理解。
xml 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>垂直水平居中</title>
    <style>
        .div1 {
            width: 200px;
            height: 200px;
            background-color: green;
            position: relative;
        }
        .div2 {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            background-color: red;
        }
    </style>
</head>
<body>
    <div class="div1">
        <div class="div2">
            我要垂直水平居中
        </div>
    </div>
</body>
</html>
  1. 实际效果
  1. 总结
  • 首先将div1通过position: relative;设置div1元素为相对定位;

  • div2 通过position: absolute;设置div2为div1的相对定位;

  • left 50%,top 50%,是以div2左上角作为坐标点进行的向左距离50%,向上距离50%;

  • 看一下实际效果

  • 因为要垂直水平居中,明显上面的设置是不够的,距离左边,距离上面都要减去自身的一半宽度和一半高度;

  • 使用transform: translate(-50%, -50%);可以将自身向左偏移一半的自身的宽度和向上偏移一半的自身的高度。

面试官会考察这个top 50% 与translate -50%的区别

基本上掌握上面两种比较全能的方案就可以满足面试官的要求了。

相关推荐
清汤饺子6 小时前
OpenClaw 本地部署教程 - 从 0 到 1 跑通你的第一只龙虾
前端·javascript·vibecoding
爱吃的小肥羊9 小时前
比 Claude Code 便宜一半!Codex 国内部署使用教程,三种方法任选一!
前端
IT_陈寒10 小时前
SpringBoot项目启动慢?5个技巧让你的应用秒级响应!
前端·人工智能·后端
树上有只程序猿10 小时前
2026低代码选型指南,主流低代码开发平台排名出炉
前端·后端
橙某人11 小时前
LogicFlow 小地图性能优化:从「实时克隆」到「占位缩略块」!🚀
前端·javascript·vue.js
高端章鱼哥11 小时前
为什么说用OpenClaw对打工人来说“不划算”
前端·后端
大脸怪11 小时前
告别 F12!前端开发者必备:一键管理 localStorage / Cookie / SessionStorage 神器
前端·后端·浏览器
Mr_Mao11 小时前
我受够了混乱的 API 代码,所以我写了个框架
前端·api
小徐_233311 小时前
向日葵 x AI:把远程控制封装成 MCP,让 AI 替我远程控制设备
前端·人工智能
冴羽11 小时前
来自顶级大佬 TypeScript 之父的 7 个启示
前端·typescript