使用绝对定位+负外边距让DIV层水平垂直居中页面

当我们需要把一个div层水平垂直居中在页面中时,我们可以使用绝对定位和负外边距来实现。下面是完整的攻略:

使用绝对定位+负外边距让DIV层水平垂直居中页面

  1. 为需要居中的div层设置绝对定位,这个定位的父级元素也需要设置相对定位。
.container {
    position: relative;
}

.box {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

解释:

  • .container是包裹.box的父级元素,需要设置相对定位,这样.box被绝对定位时,就以.container为相对定位的基准。
  • .box使用绝对定位,并设置top和left为50%。
  • 使用transform属性,通过translate(-50%, -50%)使.box在距离自身左侧和上方分别为内容宽高的一半的位置,达到了水平垂直居中的效果。

  • 接下来为了将.box居中,在上述代码的基础上添加负外边距即可。

.box {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    margin: -100px 0 0 -100px;
}

解释:

  • margin: -100px 0 0 -100px; 表示上外边距和左外边距均为负值。-100px是因为.box的宽高为200px。

这样,我们就实现了在页面中水平垂直居中的效果。

示例

示例1:居中一个模态框

<div class="modal-container">
    <div class="modal-box">
        <h2>这是一个模态框</h2>
        <p>这是一个模态框的内容</p>
        <button>关闭</button>
    </div>
</div>
.modal-container {
    position: relative;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}

.modal-box {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    margin: -150px 0 0 -150px; /*宽高为300px,外边距应减半*/
    padding: 20px;
    background-color: #fff;
    border: 1px solid #ccc;
}

解释:

  • .modal-container用于居中模态框,为了能够实现垂直居中,则指定高度为100vh,并使用flex布局进行水平居中和垂直居中。
  • .modal-box使用绝对定位,设置top和left为50%进行水平和垂直居中,通过transform实现细节调整,再通过负外边距进行居中。

示例2:居中一个loading动画

<div class="loading-container">
    <div class="loading-box"></div>
</div>
.loading-container {
    position: relative;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}

.loading-box {
    position: relative;
    margin: auto; /*水平居中*/
    width: 200px;
    height: 200px;
    border-radius: 50%;
    border: 5px solid #ccc;
    border-top: 5px solid #3498db;
    animation: 2s spin linear infinite;
}

@keyframes spin {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

解释:

  • .loading-container与前例类似,通过flex布局进行居中。
  • .loading-box的margin: auto;实现了水平居中,再通过border-radius: 50%;设置为圆形,再加上边框和旋转动画即可实现一个简单的loading动画。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用绝对定位+负外边距让DIV层水平垂直居中页面 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • vue.js项目使用原生js实现移动端的轮播图

    下面是实现“vue.js项目使用原生js实现移动端的轮播图”的完整攻略: 准备工作 安装vue-cli 首先需要安装vue-cli,它是一款官方提供的vue.js脚手架工具。可以通过以下命令安装: npm install -g vue-cli 创建vue.js项目 创建vue.js项目的命令为: vue init webpack my-project 其中“…

    css 2023年6月10日
    00
  • 智能化CSS检测法,好优化拒绝冗杂代码

    为了达到好的网页优化效果,我们需要保证 CSS 代码的高效性和可维护性。然而,在编写CSS的过程中,很可能会出现冗余或无效的代码,这些代码会占用网站的加载时间,并且使得代码可维护性变得更差。为了解决这些问题,我们可以采用智能化 CSS 检测法来进行网站的优化。 智能化 CSS 检测法指的是使用专业的 CSS 检测工具来扫描CSS代码,找出冗杂的或无效的代码,…

    css 2023年6月10日
    00
  • Dreamweaver注释怎么设置快捷键?

    设置Dreamweaver注释的快捷键可以提高工作效率,以下是详细攻略: 打开Dreamweaver软件并打开一个HTML文件。 在菜单栏中选择“编辑”>“键盘快捷键”。 在“命令”下拉菜单中选择“插入注释”。 在“设置快捷方式”框中按下你想要设置的快捷键组合,例如“Ctrl+Shift+/”。 单击“应用”和“确定”按钮。 现在,你就可以使用设置好的…

    css 2023年6月9日
    00
  • AJAX实现瀑布流布局

    下面我将提供关于“AJAX实现瀑布流布局”的完整攻略,包含以下几个步骤: 步骤1:了解瀑布流布局 瀑布流布局是一种流式布局方式,在页面中按照列来展示数据。该布局的特点是: 每一列宽度相同,高度不同; 每一列数据按照从上到下,从左到右的顺序依次排列; 数据加载时通过 AJAX 异步请求,实现数据的无限滚动加载。 步骤2:布局HTML和CSS 在HTML中,我们…

    css 2023年6月11日
    00
  • 网页制作中注意应用HTML标签的问题

    当你在进行网页制作时,HTML标签的使用是非常重要的。以下是一些注意事项,以及应用HTML标签的方法和示例。 一、HTML标签使用注意事项 标签必须小写,不允许大写; 标签必须有开始标签和结束标签,除特殊情况外不得单标签闭合; 标签必须合法嵌套,即嵌套关系必须正确,不能互相穿插; 标签必须包容性好,即可以嵌套HTML标准规定的所有标签,除特定情况外不能出现标…

    css 2023年6月10日
    00
  • CSS3过渡transition效果实例介绍

    下面是关于“CSS3过渡transition效果实例介绍”的完整攻略。 基本介绍 CSS3过渡(transition)在前端页面开发中常用于实现动画效果,通过在某些属性值发生变化时,过渡到新属性值从而呈现出平滑的动画效果。通常情况下,我们会使用transition property指明需要过渡的属性、 transition duration指明过渡的时间长度…

    css 2023年6月10日
    00
  • 浮动后的li元素居中实现方法

    浮动后的li元素居中实现方法可以通过以下步骤实现: 步骤1:设置父元素为相对定位 首先需要将li元素的父元素设置为相对定位,例如下面的代码: <div class="menu"> <ul class="menu-list"> <li>菜单1</li> <li>…

    css 2023年6月10日
    00
  • CSS 选择符的用法和实例

    关于“CSS选择符的用法和实例”的攻略如下: 1. 什么是CSS选择符? CSS选择符是一种CSS规则,用于指定要应用CSS样式的HTML元素。例如,你可以通过ID、类、元素类型等选择符来选取元素,并为其设置样式。 2. CSS选择符的用法 下面是CSS选择符的使用方法: 2.1 元素选择器 元素选择器是一种基本的CSS选择器,用于选取指定类型的HTML元素…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部