一、元素定位

  • 定位属性

position

定位方式,取值为static(默认值,标准文档流)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)

偏移属性,与包含块之间的偏移

top、bottom、left、right,取值为正向里移,负值外移

z-index

元素的堆叠属性,值大的覆盖值小的,默认值0


包含块:是指离该元素最近的按relative、absolute、fixed定位的祖先元素(不一定是父元素)的元素框。若没有,默认为body窗口。

  • 四种定位

static

文档流形式,忽略偏移属性

relative

相对于自己定位,相对于原位置偏移。不脱标,原位置仍保留。

absolute

以top,bottom描述参考点,或离自己最近的定位元素框,脱离标准流

fixed

与绝对定位类似,但包含块是浏览器窗口。可以将元素固定在特定位置


  • relative

java selenium 查找父级元素 css查找父元素_定位

  • absolute

java selenium 查找父级元素 css查找父元素_绝对定位_02


absolute中的参考点

  1. 若用top描述,则参考点,是页面的左上角

2.用bottom描述,那么就是浏览器首屏窗口尺寸,对应的页面的左下角:

java selenium 查找父级元素 css查找父元素_css_03

3.以盒子为参考点:

A、找离自己最近的拥有定位属性的元素。

<div>  → 绝对定位
    <p></p>  → 绝对定位,将以div作为参考点。因为父亲定位了。
</div>

不一定是相对定位,任何定位,都可以作为参考点。但是,实际开发中如果子绝、父绝,两个都脱离文档流了,页面就不稳固,没有任何实战用途。实际开发中,“子绝父相”有意义,父亲没有脱标,儿子脱标在父亲的范围里面移动。

<div class=”box1”>  → 绝对定位
    <div class=”box2”>  → 相对定位
        <div class=”box3”>  → 没有定位
            <p></p>  → 绝对定位,以box2为参考定位。
        </div>  /*所有说,要听最近的已经定位的祖先元素的,不一定是父亲,可能是爷爷,爷爷的爷爷,等等*/
    </div>
</div>

B、从父亲内容区开始。个人理解,其实绝对定位的元素,和普通元素初始化时是一样排列的(块级元素独占一行,行级元素并排),只是绝对定位元素有一个特性脱离文档流,可以通过top、right、bottom、left,设置偏移。

java selenium 查找父级元素 css查找父元素_html_04


绝对定位盒子的居中

前面也提到过:left:50%,margin-left:width/2;

fixed
IE6不兼容
- 以浏览器窗口,做参考
- 页面如何滚动,这个盒子显示的位置不变
- 固定定位脱标

z-index

● z-index值表示谁压着谁。数值大的压盖住数值小的。
● 只有定位元素,才有z-index值。
● z-index值没有单位,就是一个正整数。默认的z-index值是0。可以为负数
● 如果大家都没有z-index值,或者z-index值一样,看标签的位置,靠后的压住靠前的。定位的元素,永远能够压住没有定位的元素。
● 从父现象

java selenium 查找父级元素 css查找父元素_css_05

代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>权力的游戏</title>
    <style>
    body {
        padding: 0;
        margin: 0;
    }

    .div1,
    .div2 {
        width: 200px;
        height: 200px;
    }

    .div3,
    .div4 {
        width: 100px;
        height: 100px;
    }

    .div1 {
        position: absolute;
        z-index: 20;
        background-color: red;
    }

    .div2 {
        position: absolute;
        top: 200px;
        z-index: 10;
        background-color: teal;
    }

    .div3 {
        background-color: #c0c0c0;
        position: absolute;
        left: 300px;
        top: 150px;
    }

    .div4 {
        background-color: pink;
        position: absolute;
        left: 300px;
        z-index: 100;
    }
    </style>
</head>

<body>
    <div class="div1">
        <div class="div3"></div>
    </div>
    <div class="div2">
        <div class="div4"></div>
    </div>
</body>

</html>