CSS学习笔记之position属性

简介: CSS学习笔记之position属性 一、前言   1.HTML中的三种布局方式: 标准流:网页中默认的布局方式,即顺序布局 浮动:float 定位:position   2.position属性的作用方式: 给position属性设置相应的值,可使元素脱离正常的标准流,并且可以使用top、.

CSS学习笔记之position属性

一、前言

  1.HTML中的三种布局方式:

  • 标准流:网页中默认的布局方式,即顺序布局
  • 浮动:float
  • 定位:position

  2.position属性的作用方式:

  • 给position属性设置相应的值,可使元素脱离正常的标准流,并且可以使用top、right、left、bottom属性对元素进行定位,还可以使用z-index属性对元素的层叠顺序进行更改
  • position的五个属性值:static、relative、absolute、fixed、inherit

为方便,top、right、left、bottom属性简写为TRLB

 

二、介绍position的五个属性值

  1.static:默认值,无定位

  • 元素显示在正常的标准流中,并且忽略TRLB以及z-index属性的设置
  • 相当于没有设置position属性

  2.absolute:生成绝对定位元素

  • 可以使用TRLB对元素进行定位,也可使用z-index更改元素的层叠顺序
  • 相对于 static 定位以外的第一个父元素进行定位,脱离了正常的标准流,并且不占用标准流空间

举个栗子:

  将div标签的position设置为absolute

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>absolute</title>
    <style type="text/css">
        *{
            margin: 0px;
            padding: 0px;
        }
        .absolute{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            position: absolute;
            top: 0px;
            left: 0px;
        }
    </style>
</head>
<body>
    <p>你好</p>    
    <div class="absolute"></div>
</body>
</html>
复制代码

    浏览器显示:

 

  通过页面显示我们发现,设置为absolute的绝对定位元素div,不顾处于标准流中的p标签的存在,仍然显示在了top:0px; left:0px;位置,

  从中我们也可以看出绝对定位元素脱离了正常的标准流

  3.relative:生成相对定位元素

  • 可以使用TRLB对元素进行定位,也可使用z-index更改元素的层叠顺序
  • 相对定位元素仍然处于正常的标准流中,占用了标准流的空间
  • 使用TRLB对元素进行定位时,不能破坏也无法破坏正常的标准流

 举个栗子:

  将div标签的position设置为relative

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>relative</title>
    <style type="text/css">
        *{
            margin: 0px;
            padding: 0px;
        }
        .relative{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            position: relative;
            top: 0px;
            left: 0px;
        }
    </style>
</head>
<body>
    <p>你好</p>    
    <div class="relative"></div>
</body>
</html>
复制代码

   浏览器显示:

  我们发现,设置为relative的相对定位元素div,受标准流中的p标签的约束,显示在了p标签的下方,因为它是相对于在标准流中原来的位置进行定位的.

  因此可以认为相对定位元素仍处于正常的标准流当中,不能破坏标准流布局的规则

   4.fixed:也是生成绝对定位元素

  • 可以使用TRLB对元素进行定位,也可使用z-index更改元素的层叠顺序
  • 相对于浏览器窗口进行定位,脱离了正常的标准流,并且不占用标准流空间

举个栗子:

  给position设置为relative的div标签,加一个position设置为relative的父标签,观察fixed是否受具有position的父标签影响,作为对比我们再加上一个属性值为absolute的div标签

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>fixed</title>
    <style type="text/css">
        *{
            margin: 0px;
            padding: 0px;
        }
        .fixed{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            position: fixed;
            top: 0px;
            left: 0px;
        }
        .absolute{
            width: 100px;
            height: 100px;
            border: 1px solid blue;
            position: absolute;
            top: 0px;
            left: 0px;            
        }
        .pre{
            width: 200px;
            height: 200px;
            border: 1px solid black;
            position: relative;
            top: 100px;
            left: 100px;            
        }
    </style>
</head>
<body>
    <div class="pre">
        <div class="fixed"></div>
        <div class="absolute"></div>        
    </div>
</body>
</html>
复制代码

 

  网页显示:

 

   我们发现,属性值为fixed的子标签并不受具有position属性的父标签影响,脱离了来父标签的约束,仍然显示在top:0px; left:0px;位置.

  而属性值为absolute的子标签却受着具有position属性的父标签约束,显示在父标签的区域内,这也是fixed与absolute的一个重要区别

  但我们还是可以认为,属性值为absolute的子标签也显示在了top:0px; left:0px;位置.只不过它是相对于父标签进行定位的

   5.inherit:继承

  • 从父标签继承position属性值

 举个栗子:

  对于父div标签我们设置position:fixed,对于子div标签我们设置position:inherit,观察子标签是否会继承父标签的position属性值

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>inherit</title>
    <style type="text/css">
        *{
            margin: 0px;
            padding: 0px;
        }
        .pre{
            width: 200px;
            height: 200px;
            border: 1px solid black;
            position: fixed;
            top: 100px;
            left: 100px;            
        }
        .inherit{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            position: inherit;
            top: 0px;
            left: 0px;            
        }
    </style>
</head>
<body>
    <div class="pre">
        <div class="inherit"></div>        
    </div>
</body>
</html>
复制代码

   浏览器显示:

 

  我们发现,子标签具有和父标签同样的position属性值---fixed,子标签的fixed使它显示在了相对于浏览器窗口进行定位的top:0px; left:0px;位置

 

 三、总结与补充

  1.关于relative的补充

  • 通过上面介绍发现relative并未使元素脱离正常的标准流,因此元素仍受标准流的约束(包括其它元素以及自身的外边距和内边距)
  • 而脱离了标准流(具有absolute,fixed属性值)的元素,则不受标准流的约束,不受其它元素内外边距的约束,但自身的内外边距会对自身产生约束

 举个栗子

  给body标签设置内边距和外边距,观察相对定位元素和绝对定位元素的显示情况

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>inherit</title>
    <style type="text/css">
        body{
            margin: 10px;
            padding: 10px;
        }
        .relative{
            width: 100px;
            height: 100px;
            border: 1px solid red;
            position: relative;
            top: 0px;
            left: 0px;            
        }
        .absolute{
            width: 100px;
            height: 100px;
            border: 1px solid black;
            position: absolute;
            top: 0px;
            left: 0px;            
        }
    </style>
</head>
<body>
    <div class="relative"></div>
    <div class="absolute"></div>
</body>
</html>
复制代码

 

  网页显示:

  我们发现元素:<div class="relative"></div>受body标签内外边距的影响,显示在了元素:<div class="absolute"></div>的右下方

  2.top,right,left,bottom属性

  • top属性值是指,将元素定位到距离相对位置顶端的距离
  • right属性值是指,定位到距离相对位置右端的距离
  • left属性值是指,定位到距离相对位置左端的距离
  • bottom属性值是指,定位到距离相对位置底端的距离
  • 属性值都可为负数,表示朝反方向定位

  3.z-index属性

因为先写的定位元素会被后写的定位元素覆盖,因此我们需要设置定位元素的堆叠顺序,是其按照我们想要的覆盖方式进行显示

  • z-index属性用来设置元素的堆叠顺序,拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。
  • z-index属性仅能在具有定位属性的元素上奏效
  • 当z-index为负值时该元素会被标准流中的元素覆盖

举个大栗子:

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>z-index</title>
    <style type="text/css">
        *{
            margin: 0px;
            padding: 0px;
        }
        .red{
            width: 100px;
            height: 100px;
            background-color: red;
            position: absolute;
            top: 0px;
            left: 0px;
            z-index: 5;            
        }
        .black{
            width: 100px;
            height: 100px;
            background-color: black;
            position: absolute;
            top: 0px;
            left: 0px;
            z-index: 3;            
        }
        .blue{
            width: 100px;
            height: 100px;
            background-color: blue;
            position: absolute;
            top: 0px;
            right: 0px;        
            z-index: -1;
        }
        .no-position-yellow{
            width: 1500px;
            height: 1000px;
            background-color: yellow;            
        }
    </style>
</head>
<body>
    <div class="no-position-yellow"></div>
    <div class="red"></div>
    <div class="black"></div>
    <div class="blue"></div>
</body>
</html>
复制代码

   网页显示:

  我们可以看到只有背景为红色和黄色的元素显示了,并且红色元素堆叠在黄色元素上方,因为黑色元素的z-index小于红色元素的z-index,而它们位置相同,因此红色元素将黑色元素完全覆盖了.

  对于蓝色元素,因为他的z-index为负数,所以它直接被标准流中的黄色元素覆盖.

原文地址https://www.cnblogs.com/huwt/p/10436468.html

相关文章
|
4月前
|
前端开发
CSS属性:盒子模型
CSS属性:盒子模型
46 0
|
4月前
|
前端开发
CSS属性
CSS属性
47 0
|
2月前
|
前端开发
CSS 浮动属性讲解和使用
本文介绍了CSS中的浮动(float)属性,包括其基本功能、属性选项及其在网页布局中的应用。浮动使元素脱离文档流,向左或右排列,周围元素随之调整。文章还详细讲解了清除浮动的方法,如使用clear属性、设置父元素高度、利用overflow属性、伪元素等,以解决因浮动导致的布局问题。最后,强调了浮动在创建复杂布局时的作用,并预告后续内容。
58 2
|
2月前
|
前端开发
CSS transition过渡属性详解
本文介绍了CSS中`transition`属性的作用、用法及实例。`transition`用于在元素属性变化时添加平滑过渡动画,通过设置`transition-property`、`transition-duration`、`transition-timing-function`和`transition-delay`等属性值,可以精细控制过渡效果。文末提供了HTML示例代码,展示了如何使用`transition`实现鼠标悬停时背景颜色的平滑变化。
88 1
|
2月前
|
Web App开发 前端开发 iOS开发
css所有缩写属性,CSS属性简写整理
css所有缩写属性,CSS属性简写整理
57 1
|
3月前
|
前端开发
CSS 中哪些属性可以继承
在 CSS 中,属性分为可继承与不可继承。可继承属性会在子元素中沿用父元素的样式设定。常见可继承属性包括:文本属性(如 `font-family`, `color`),列表属性(如 `list-style`),表格布局属性(如 `border-collapse`),以及其他如 `visibility` 和 `direction` 等属性。正确理解这些属性有助于更高效地进行样式设计。
|
2月前
|
前端开发
css简写属性
css简写属性
42 0
|
3月前
|
前端开发 JavaScript
如何在CSS中添加自定义属性
如何在CSS中添加自定义属性
35 0
|
3月前
|
前端开发
运用CSS伪类与属性,巧妙实现背景图片旋转效果
运用CSS伪类与属性,巧妙实现背景图片旋转效果
66 0
|
3月前
|
前端开发
哪些 CSS 属性可以继承?
哪些 CSS 属性可以继承?
79 0