使用绝对定位+负外边距让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日

相关文章

  • html页面引入vue组件之http-vue-loader.js解读

    下面我来详细讲解“HTML页面引入Vue组件之http-vue-loader.js解读”的完整攻略。 什么是http-vue-loader.js http-vue-loader.js是一个Vue单文件组件加载器,可以让我们在普通的HTML页面中使用Vue单文件组件。Vue.js是一个类似于AngularJS的轻型JavaScript框架,有着响应式的数据绑定…

    css 2023年6月9日
    00
  • 小程序实现列表倒计时功能

    下面详细讲解“小程序实现列表倒计时功能”的完整攻略: 1. 分析需求 首先,我们需要分析需求。根据题目要求,我们需要为列表中的每个项添加倒计时功能。这个倒计时需要精确计算,每秒钟更新一次,直到倒计时结束。具体实现需要用到计时器,每秒钟减1的逻辑和重新渲染页面等功能。 2. 实现思路 实现思路如下: 获取列表中每个项的到期时间 计算当前时间距离到期时间的时间差…

    css 2023年6月10日
    00
  • table不让td文字溢出操作方法

    在 HTML 中,table 是非常重要的元素,但是当 td 中的文字过长时,通常会导致 td 与其他元素重叠,影响前端的美观和用户体验。为了不让 td 中的文字溢出,有以下两种常见的操作方法: 方法一:使用 CSS 样式实现 td 中文字不溢出 选择需要限制文字溢出的 td 元素,声明样式 overflow 为 hidden。 td { overflow:…

    css 2023年6月9日
    00
  • jquery弹出关闭遮罩层实例

    下面是jquery弹出关闭遮罩层实例的完整攻略。 1. 确定需求 在开始开发之前,我们需要确定这个功能的需求,明确要做什么。 在本次案例中,我们需要实现一个弹出层,当用户点击按钮时,弹出一个层覆盖在页面上,并显示相关内容。同时,我们还需要一个关闭按钮,当用户点击关闭按钮时,弹出层消失。 2. 准备html代码 在确定好需求后,我们需要写出html代码,为弹出…

    css 2023年6月10日
    00
  • HTML5移动端开发遇见的东西

    HTML5移动端开发是一个广泛的领域,包括了网页设计、移动应用开发等多个方面。在这个领域中,我们会遇到很多挑战和问题,需要采取相应的方法和技巧来解决。下面是一个HTML5移动端开发的完整攻略。 准备工作 在开始HTML5移动端开发之前,我们需要完成以下准备工作。 选择开发工具 移动端网页设计需要用到专门的开发工具。推荐一些常用的工具:Sublime Text…

    css 2023年6月10日
    00
  • div+css布局必了解的列表元素ul ol li dl dt dd详解

    标题:Div+CSS布局必了解的列表元素ul ol li dl dt dd详解 正文: 列表元素在网页设计中非常常见,也是制作网页布局时不可或缺的元素。理解列表元素在网页设计中的应用,对于掌握Div+CSS布局设计技巧至关重要。本文将详细介绍列表元素ul、ol、li、dl、dt、dd的应用及使用技巧。 1. 无序列表ul和有序列表ol 无序列表ul和有序列表…

    css 2023年6月10日
    00
  • JS实现仿微博可关闭弹出层效果

    要实现仿微博可关闭弹出层效果,以下是完整攻略: 步骤一:HTML结构 首先,在HTML页面中,需要创建一个弹出层的容器,并在其中添加弹出层的内容。例如: <div class="dialog"> <div class="dialog-content"> <h2>弹出层标题</h…

    css 2023年6月10日
    00
  • vue实现PC端分辨率适配操作

    下面我就为您讲解一下“Vue实现PC端分辨率适配操作”的完整攻略。 一、什么是PC端分辨率适配 在不同的电脑上使用网页时,会因为电脑的屏幕分辨率不同,导致网页的显示效果也会不同。在PC端分辨率适配方面,我们需要考虑不同的屏幕分辨率对网页的影响,以确保在任何分辨率下都可以获得最佳的用户体验。 二、如何实现PC端分辨率适配 Vue中实现PC端分辨率适配,可以通过…

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