美文网首页
CSS - 定位

CSS - 定位

作者: Hyso | 来源:发表于2019-04-04 23:09 被阅读0次

CSS 中的层级概念

  • CSS中分为3层

最上层:定位元素层(position:relative、position:absolute、position:fixed)
中间层:浮动元素层(float:left、float:right)
最下层:普通元素层(未定位且未浮动)

  • CSS中同一层元素的分层

同一层元素根据文档从上至下,后面的元素在前面元素的上面

1)定位元素层

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        * {
            margin:0;
            padding: 0;
        }

        .box1 {
            width: 150px;
            height: 150px;
            position: absolute;
            top: 0;
            left: 0;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            position: absolute;
            top: 0;
            left: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

1)浮动元素层

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        * {
            margin:0;
            padding: 0;
        }

        .box1 {
            width: 150px;
            height: 150px;
            float: left;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            float: left;
            margin-left: -100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

3)普通元素层

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        * {
            margin:0;
            padding: 0;
        }

        .box1 {
            width: 150px;
            height: 150px;
            display: inline-block;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            margin-left: -100px;
            display: inline-block;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
</body>
</html>

定位元素

  • 源代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        * {
            margin:0;
            padding: 0;
        }

        .box1 {
            width: 150px;
            height: 150px;
            float: left;
            margin-left: 100px;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            float: left;
            margin-left: -50px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="box1">1</div>
    <div class="box2">2</div>
</body>
</html>
  • 实验1

在源代码基础上为 .box1 元素添加如下样式:

position: relative;

由上图可见, .box2 元素位置未改变,而原来在 .box2 下面的元素 .box1,现在在 .box2 元素上面了。但是其距离左边的距离还是没改变,仍是 100px(margin-left:100px ),因此 position: relative 提高了 .box1 元素层级的同时,保留了 .box1 元素原有位置,相当于 .box2 元素左侧仍有一个元素,这个元素占着 .box1 元素原来的位置。

再为 .box1 元素添加如下样式:

left: 150px;

由上图可见,.box2 元素位置未改变,而原来在 .box2 左侧的元素 .box1,现在偏移到 .box2 元素右侧了。其距离左边的距离变成了 250px(margin-left:100px + left:100px)。

  • 实验2

在源代码基础上为 .box1 元素添加如下样式:

position: absolute;
left: 0;
top: 0;

由上图可见,原来在 .box2 下面的元素 .box1,现在在 .box2 元素上面了。而原来在 .box1 右侧的 .box2 元素,现在偏移到 .box1 元素左侧了,且其一部分被隐藏了。这是由于 position: absolute 提高了 .box1 元素层级的同时,不再保留 .box1 元素原有位置,此时 .box2 元素左侧没有了任何元素,再加上 .box2 元素的 margin-left: -50px; 属性,造成了 .box2 元素一部分没办法显示出来了。

元素是根据谁来定位的

元素的定位是根据该元素已定位的上级元素来定位的,若该元素的上级元素没有定位,则根据其已定位的上上级元素来定位,以此类推。若元素的所有上级元素都没有定位,则元素将根据浏览器窗口来定位。

  • 案例
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        * {
            margin:0;
            padding: 0;
        }

        .box1 {
            width: 200px;
            height: 200px;
            float: left;
            background-color: red;
        }

        .box2 {
            width: 150px;
            height: 150px;
            float: left;
            background-color: yellow;
        }

        .box3 {
            width: 50px;
            height: 50px;
            float: left;
            background-color: black;
        }
    </style>
</head>
<body>
    <div class="box1">
        <div class="box2">
            <div class="box3"></div>
        </div>
    </div>
</body>
</html>

首先,为 .box3 元素添加如下样式:

position: absolute;
right: 0;
bottom: 0;

此时由于 .box3 的上级元素都没定位,因此 .box3 偏移到了浏览器窗口右下角,由此可见,.box3 元素根据浏览器窗口来定位。

现在,为 .box2 元素和 .box1 元素都添加如下样式:

position: relative;

由上图可见,.box3 元素偏移到了 .box2 元素右下角,所以此时的 .box3 元素是根据 .box2 元素定位的。

接着,删除 .box2 元素的如下样式:

position: relative;

由上图可见,.box3 元素偏移到了 .box1 元素右下角,所以此时的 .box3 元素是根据 .box1 元素定位的。

相关文章

  • css定位

    CSS 定位 (Positioning) 属性允许你对元素进行定位。 CSS 定位和浮动 CSS 为定位和浮动提供...

  • CSS 定位

    CSS 定位 (Positioning) 属性允许你对元素进行定位。 CSS 定位和浮动 CSS 为定位和浮动提供...

  • CSS 定位 (Positioning)

    CSS 定位 (Positioning) 属性允许你对元素进行定位。 CSS 定位和浮动 CSS 为定位和浮动提供...

  • css 定位 浮动

    定位 1 . css 定位:改变元素在页面上的位置2 . css 定位机制:普通流浮动绝对布局3 . css 定位...

  • CSS定位

    CSS定位(Positioning)允许你对元素进行定位。 CSS 定位和浮动 CSS 为定位和浮动提供了一些属性...

  • CSS中的几种定位

    CSS中常用的定位有 普通定位,相对定位 绝对定位、fixed定位 浮动 1、普通定位和相对定位 css中的元素有...

  • CSS 定位

    CSS定位 CSS 定位机制 CSS中一共有三种基本定位机制:普通流、浮动、绝对定位。如果不进行专门指定,所有的标...

  • 图片精灵

    div css sprites精灵-CSS图像拼合 CSS贴图定位网页背景素材图片拼合定位布局技术教程篇与css ...

  • 元素定位

    八大定位 Xpath定位 css定位

  • CSS定位与浮动2016/6/12

    CSS 定位 (Positioning) CSS 有三种基本的定位机制:普通流、浮动和绝对定位。 position...

网友评论

      本文标题:CSS - 定位

      本文链接:https://www.haomeiwen.com/subject/ujlciqtx.html