css关于position属性的用法详解(绝对定位和相对定位的混淆)

CSS关于position属性的用法详解(绝对定位和相对定位的混淆)

position属性的概述

position属性定义了元素的定位方式,其可选值有四种:static,relative,absolutefixed

  • static表示元素的默认定位方式,即元素在文档流中按照其自身的顺序排列
  • relative表示按照元素自身的偏移量来确定元素在文档流中的位置,其不会影响其它元素的布局
  • absolute表示将元素完全从文档流中移除,并按照最近的非静态定位祖先元素进行定位
  • fixed表示将元素固定在页面视口中的指定位置上,其不会随页面的滚动而移动

绝对定位和相对定位的混淆

经常会出现混淆的情况是当绝对定位元素的祖先元素具有相对定位时,子元素的定位位置是相对于祖先元素而不是相对于文档流。

例如:

<div style="position:relative">
  <div style="position:absolute;top:10px;left:10px;">我是绝对定位元素</div>
</div>

以上代码中,子元素<div style="position:absolute;top:10px;left:10px;">是一个绝对定位元素,而祖先元素<div style="position:relative">是一个相对定位元素。在此情况下,子元素的位置是相对于祖先元素而不是文档流。

如何正确使用绝对定位和相对定位

使用绝对定位布局通常会造成网页布局的不稳定,因此应该尽量避免使用绝对定位元素。

相对定位布局则更加灵活,可通过对同级元素和该元素的父元素进行定位来达到最优的布局效果,从而尽可能避免使用绝对定位的情况。例如:

<div style="position:relative">
  <div style="position:relative;left:20px;">我是相对定位元素</div>
</div>

以上代码中,子元素<div style="position:relative;left:20px;">是一个相对定位元素,使用了left属性来实现横向偏移。父元素<div style="position:relative">也是一个相对定位元素,从而使子元素位置相对于该元素进行定位。

示例一:使用相对定位布局实现文字垂直居中

<style>
  .content {
    width: 300px;
    height: 300px;
    background-color: #ccc;
  }

  .text {
    position: relative;
    top: 50%;
    transform: translateY(-50%);
  }
</style>

<div class="content">
  <div class="text">我要垂直居中</div>
</div>

以上代码中,通过对文本元素的相对定位和使用toptransform属性实现了文本的垂直居中。

示例二:使用相对定位和绝对定位布局实现图片覆盖效果

<style>
  .wrapper {
    position: relative;
    width: 300px;
  }

  .wrapper img {
    max-width: 100%;
  }

  .overlay {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    opacity: 0.5;
    background-color: #000;
  }

  .text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: #fff;
  }
</style>

<div class="wrapper">
  <img src="example.jpg" alt="example image" />
  <div class="overlay"></div>
  <div class="text">我是文字覆盖层</div>
</div>

以上代码中,通过对包含图片的父元素进行相对定位,实现了对绝对定位元素的定位。通过对覆盖层和文字的绝对定位,实现了层叠效果和图片上增加文字的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:css关于position属性的用法详解(绝对定位和相对定位的混淆) - Python技术站

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

相关文章

  • 兼容各个浏览器的技巧

    下面是一份详细的“兼容各个浏览器的技巧”的攻略: 兼容各个浏览器的技巧 1. 重置样式 不同的浏览器有不同的默认样式,为了保证网页在各个浏览器中呈现的一致性,需要使用重置样式重置所有元素的默认样式。推荐使用normalize.css,它是一个广泛使用的重置样式库,提供了全面、标准的浏览器兼容性支持。 <link rel="stylesheet…

    css 2023年6月10日
    00
  • css3实现文字扫光渐变动画效果的示例

    这里是“css3实现文字扫光渐变动画效果”的完整攻略: 概述 使用CSS3可以实现各种炫酷的动画效果,其中之一就是文字扫光渐变动画效果,可以让你的网页内容更加生动。本篇攻略将详细介绍如何使用CSS3实现这种动画效果。 实现步骤 1. 创建HTML结构 首先,我们需要在HTML中创建一个结构,用于显示要进行动画的文字内容。例如: <div class=&…

    css 2023年6月9日
    00
  • DW网页元素怎么制作渐隐渐现效果?

    当我们需要让网页元素渐隐渐现的效果时,可以使用CSS3中的transition属性来实现。下面是具体的步骤: 步骤一:定义元素基本样式 首先,需要定义元素的基本样式,包括宽高、背景颜色、位置等信息。例如,我们定义了一个div元素,样式如下: div { width: 200px; height: 200px; background-color: red; p…

    css 2023年6月10日
    00
  • jQuery实现立体式数字滚动条增加效果

    以下是“jQuery实现立体式数字滚动条增加效果”的完整攻略: 简介 立体式数字滚动条是一种常见的网页UI交互效果,通过数字的增加或减少来呈现出数字的变化过程,可以使用户在网页中获得更直观、生动的感受。本文将介绍如何使用jQuery来实现简单的立体式数字滚动条,包括HTML结构、CSS样式和JavaScript代码的实现。 HTML结构 首先,我们需要构建数…

    css 2023年6月10日
    00
  • css设置多列等高布局的方法示例

    下面是CSS设置多列等高布局的攻略: 1. 使用flexbox布局 flexbox是一种强大的CSS布局模式,可以帮助实现多列等高布局。 首先需要在容器上设置display: flex;属性,然后对子元素设置flex-grow: 1;属性,这样就可以让所有子元素高度相等。如果需要控制子元素高度不会无限增长,可以设置flex-basis属性来限制子元素的基础尺…

    css 2023年6月9日
    00
  • 完美解决手机网页中输入框被输入法遮挡的问题

    当我们在手机上打开一个网页并在输入框中输入时,常常会遇到输入法遮挡输入框的情况,导致我们无法看清输入的内容。这个问题可以通过以下几个步骤来解决: 第一步:设置输入框的 position 属性 我们可以通过将输入框的 position 属性设置为 fixed 或 absolute,将其定位到浏览器窗口的底部或上方,这样即使输入法弹出也不会遮挡输入框。 例如,下…

    css 2023年6月10日
    00
  • 前端必会的Webpack优化技巧

    前端工程化是现代 web 开发不可或缺的一部分。而其中用来打包资源的Webpack更是一个必会的技能。然而在使用Webpack的过程中,为了达到最佳性能,我们还需要通过一些优化技巧来优化Webpack的打包过程。本文将介绍前端必会的Webpack优化技巧全攻略。 一、基础优化 1.1 设置webpack.config.js webpack.config.js…

    css 2023年6月10日
    00
  • CSS控制网页背景颜色的代码

    CSS控制网页背景颜色的代码 在CSS中,可以通过设置background-color属性来控制网页的背景颜色。本攻略将详细讲解CSS控制网页背景颜色的代码,包括基本语法、常用属性和示例说明。 1. 基本语法 设置网页背景颜色的基本语法如下: body { background-color: #f8f9fa; } 上述代码中,设置了body元素的背景颜色为#…

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