块、行内块水平垂直居中

1.定位实现水平垂直居中

复制代码
<div class="outer">
        <div class="test inner1">定位实现水平垂直居中</div>
    </div>

<style>
 .outer {
            width: 300px;
            height: 300px;
            border: 1px solid gray;
            margin: 100px auto 0;
            position: relative;
       }
       .test {
            width: 100px;
            height: 100px;
            background-color: orange;
           
       }
       .inner1 {
             /* 方法一 定位*/
             position: absolute;
            /* 相对于包含块,最近的定位的祖先或父元素 */
            top: 50%; 
            left: 50%;
            margin-left: -50px;
            margin-top: -50px;
       }
</style>

2.定位+位移

复制代码
<div class="outer">
        <div class="test inner2">定位+位移</div>
    </div>
<style>
.outer {
            width: 300px;
            height: 300px;
            border: 1px solid gray;
            margin: 100px auto 0;
            position: relative;
       }
       .test {
            width: 100px;
            height: 100px;
            background-color: orange;
           
       }
       .inner2 {
            position: absolute;
            top: 50%;
            left: 50%;
            /*方法二  translate中的百分比是相对自身,50% 相当于100*50% = 50*/
            transform: translate(-50%, -50%);
       }
</style>

3.相对于整个视口水平垂直居中

复制代码
 <div class="view">相对于整个视口水平垂直居中</div>
    <style>
       
       body {
            position: relative;
        }
        /* 方法三 */
       .view {
            width: 100px;
            height: 100px;
            background-image: linear-gradient(red, yellow, green);
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
       }
    </style>

4.flex+margin

复制代码
<head>
    <style>
        .outer {
            width: 400px;
            height: 400px;
            background-color: gray;
            display: flex;
        }
        .inner {
            width: 100px;
            height: 100px;
            margin: auto;
            background-image: linear-gradient(green, yellow);
        }
    </style>
</head>
<body>
    <div class="outer">
        <div class="inner"></div>
    </div>
</body>
  1. flex 水平垂直居中

6.遮挡层

复制代码
<div class="item"></div>

/* 遮挡层 */
       .item {
             background-image: repeating-linear-gradient(red 200px, yellow 500px, green 700px);
            opacity: 0.5;
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0; 
       }
相关推荐
钛态7 小时前
Vite 中的 CSS 工程化:从 CSS Modules 到 UnoCSS 的渐进式迁移
前端·vue·react·web
Csvn8 小时前
原型链、this 与闭包内存:三座深水区一次打通(含内存泄漏排查实战)
前端·javascript
葡萄城技术团队9 小时前
如何通过 JSON 数据源 / Web API 快速构建轻量级报表(Report)?
前端·json·原型模式
万维易源9 小时前
趣味项目素材|免费脑筋急转弯查询接口实战接入教程
javascript·免费api·脑筋急转弯查询·脑筋急转弯接口
浪兎兎9 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet
Patrick_Wilson10 小时前
iOS Safari Clipboard API 权限弹窗问题
前端·ios·safari
OpenTiny社区10 小时前
Naive UI × GenUI SDK:自定义物料库搭建实战
前端·ai编程
kyriewen11 小时前
我拿 4 个真实前端任务试了 GLM-5.3 Flash:代码一遍跑通,账单 4 分钱
前端·程序员·ai编程
IT_陈寒11 小时前
Vue的响应式更新有时候真的不听话
前端·人工智能·后端