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

yizhihongxing

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日

相关文章

  • CSS实现单选折叠菜单功能

    想要实现单选折叠菜单功能,需要使用CSS来完成。以下是实现CSS单选折叠菜单的完整攻略: 1. HTML结构设计 首先,需要在HTML文件中添加需要实现折叠的元素,用来实现单选折叠菜单。在下面示例中,我们使用<div>元素,并设置了一个标题<h3>和内容区域<p>。 <div> <h3>标题<…

    css 2023年6月9日
    00
  • 举例详解CSS中的字体尺寸设置

    下面是“举例详解CSS中的字体尺寸设置”的完整攻略。 一、字体大小相关单位 在CSS中,用于设置字体大小的单位有多种,常见的有以下几种: px:像素,是CSS中最基本的单位,1px等于屏幕上的一个物理像素; em:相对于父元素字体大小的倍数,例如一个元素设置了字体大小为2em,它的字体大小就会是父元素字体大小的2倍; rem:相对于根元素字体大小的倍数,例如…

    css 2023年6月9日
    00
  • Vue实现Tab标签路由效果并用Animate.css做转场动画效果的代码第1/3页

    下面是关于“Vue实现Tab标签路由效果并用Animate.css做转场动画效果的代码”攻略的详细讲解: 1. 准备工作 在开始之前,我们需要先准备好一些必要的工作: 确认使用的Vue项目已经基于Vue-cli完成了初始化 安装Vue-router和Animate.css npm install vue-router –save npm install a…

    css 2023年6月10日
    00
  • 解决IE6,IE7不能隐藏(overflow:hidden)绝对定位溢出的内容

    要解决IE6, IE7不能隐藏绝对定位溢出的内容的问题,可以考虑以下几个步骤: 1. 确定出现问题的元素 在解决IE6, IE7的问题之前,首先要确认哪些元素出现了这个问题。通常,绝对定位的元素并且其父元素设置了overflow:hidden属性时,如果绝对定位元素的尺寸超出了其父元素的尺寸,那么在IE6和IE7浏览器中,父元素的overflow:hidde…

    css 2023年6月10日
    00
  • 使用CSS3实现圆角,阴影,透明

    使用CSS3,我们可以轻松实现元素的圆角、阴影和透明效果。下面是实现这些效果的攻略。 实现圆角 CSS3中提供了border-radius属性,它允许我们为元素添加圆角。border-radius属性有四个值,分别对应四个角,也可以只设置其中的几个。例如: div{ border-radius: 5px 10px 5px 10px; } 上面的代码表示左上角…

    css 2023年6月9日
    00
  • css hover对其包含的子元素进行样式设置示例

    当我们在网页设计中使用CSS样式时,使用:hover伪类来为鼠标移动到元素上时设置一些特殊的样式是很有用的。这个功能可以很方便地对网站的交互性和美观性进行调整和完善。接下来,我会详细讲解如何使用CSS设置:hover的样式,以及如何对其包含的子元素进行样式设置。下面是示例: 改变父元素及其子元素样式 首先,我们准备一个HTML文档: <div clas…

    css 2023年6月10日
    00
  • 详解如何使用CSS选择所有子元素

    下面是详解如何使用CSS选择所有子元素的完整攻略: 通过通配符选择所有子元素 我们可以通过使用 CSS 通配符 * 来选择所有子元素,通配符表示选择所有元素,如下所示: 父元素 * { /* CSS 样式 */ } 其中的 * 表示选择父元素下的所有子元素。 示例一:选择文章中的所有段落 <article> <p>这是第一段。<…

    css 2023年6月9日
    00
  • php基于openssl的rsa加密解密示例

    以下是基于OpenSSL的RSA加密解密示例攻略。 简介 RSA是一种非对称加密算法,可以实现数据加密与解密。OpenSSL是一个常用的加密算法库,内置了RSA算法,可以用PHP来调用。 准备工作 首先需要安装OpenSSL扩展,可以在php.ini中开启或者通过命令行启用。可以使用 openssl_get_cipher_methods()函数来检查Open…

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