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

yizhihongxing

当我们需要把一个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日

相关文章

  • CSS 实现 10 种现代布局的代码

    CSS 实现现代布局有很多种方式,但是通常我们可以通过浮动、定位、Flexbox 和 CSS Grid 等技术来实现。下面是一份完整的攻略,让你了解如何实现 10 种常见的现代布局,并包含了两个示例说明。 1. 上下左右布局 这种布局方式也被称为定位布局,需要使用到 position 属性来设置元素的位置。通常,我们可以将容器设置为 position: re…

    css 2023年6月10日
    00
  • CSS颜色体系学习小结(推荐)

    下面是“CSS颜色体系学习小结(推荐)”的完整攻略。 1. 了解颜色表示方法 在编写CSS样式时,你可以通过以下方法表示颜色: 十六进制颜色值:#000000(黑色)到#FFFFFF(白色) RGB颜色值:rgb(255, 0, 0)(红色) RGBA颜色值:rgba(255, 0, 0, 0.5)(红色透明度为0.5) HSL颜色值:hsl(0, 100%…

    css 2023年6月9日
    00
  • CSS3使用transition实现的鼠标悬停淡入淡出

    下面我将详细讲解“CSS3使用transition实现的鼠标悬停淡入淡出”的完整攻略,希望能对你有所帮助。 什么是transition? 在介绍“CSS3使用transition实现的鼠标悬停淡入淡出”之前,我们需要先了解一下transition是什么。 transition是CSS3中的一种动画形式,用于实现属性变化时的平滑过渡。通过定义起点、终点和时间的…

    css 2023年6月10日
    00
  • jQuery之浮动窗口实现代码(两种方法)

    下面是对“jQuery之浮动窗口实现代码(两种方法)”这篇文章的详细讲解: jQuery之浮动窗口实现代码(两种方法) 前言 前端开发中,弹出框是一个非常常见的需求,而浮动窗口又是其中的一种。在这篇文章中,我将介绍两种实现浮动窗口的方法,并给出相应的代码示例。 方法一:CSS + jQuery实现 这种方法的思路是先利用CSS定义浮动窗口的样式,然后用jQu…

    css 2023年6月10日
    00
  • 用css完成根据子元素不同书写样式的方法

    实现根据子元素不同书写样式的方法有多种方式,例如使用CSS选择器的 :nth-child 或者 :nth-of-type 伪类,以及使用 JavaScript 等方法。以下是其中两种方法的示例说明: 方法一:使用CSS选择器的 :nth-child 伪类 :nth-child(n) 伪类选择器用于匹配某个元素的父元素下第 n 个子元素,可以用来实现对子元素进…

    css 2023年6月9日
    00
  • 纯CSS+Div 的标签实现代码

    下面是纯CSS+Div 的标签实现代码攻略。 什么是纯CSS+Div 的标签实现代码 纯CSS+Div 的标签实现代码是一种使用CSS和Div元素来实现各种标签效果的方法。通过CSS的样式设置和Div元素的排版组合,可以实现各种复杂的标签样式,而无需使用传统的HTML标记。 如何实现纯CSS+Div 的标签效果 首先,需要使用CSS样式来设置各种标签的样式属…

    css 2023年6月10日
    00
  • CSS 实现角标效果的完整代码

    下面我将详细讲解如何用 CSS 实现角标效果,包括完整的代码和相关的注意事项。 什么是角标效果? 角标(Badge)是指在一个元素的角落或边缘显示一个小标识的效果。通常用于标记新、热、特价、推荐等信息。比如在购物网站上,我们会经常见到类似于 “New”、”Hot”、”Sale” 等标识,这就是角标效果。 实现过程 要实现角标效果,我们可以使用 CSS 中的 …

    css 2023年6月9日
    00
  • html body标签详解与html常用的控制标记

    HTML是网页制作中最基础也是最重要的技能之一,而body标签则是HTML中最重要的标签之一。body标签是放置页面中所有可见内容的主体部分,是所有其他标记的容器,其中包括文本,图像,视频,音频等。 HTML body标签详解 body标签是一个容器元素,用于包含网页的可见内容,如文本、图片、视频、表单等。 下面是一个常见的body标签示例: <!DO…

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