web前端 --- CSS(03) -- 元素定位

元素定位:标签在页面中的位置问题

(1)分类

  • 绝对定位:将需要的元素直接定位固定的位置

PS:绝对定位,必须指定一个相对点(一般是父标签)。相对的标签必须是相对定位或者绝对定位【重点】

  • 相对定位:某个标签做了相对定位,则某个标签的绝对定位会相对于它做定位

PS:若父标签没有做相对定位,则会向上查找;如果最后都没有,则会相对于body做绝对定位。

父相子绝

  • 浮动定位:相对于浏览器的定位,滚动条滚动,浮动定位不会发生变化

(2)示例

例1:定位问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/01.css">
    <title>定位问题</title>
</head>
<body>
    <div class="content">
        <div class="box"></div>
        <p>这是一个段落</p>
    </div>

</body>
</html>
*{
    margin:0;
    padding:0;
}
.content{
    width: 1200px;
    height: 3000px;
    border: 1px solid rebeccapurple;
    margin: auto;
    position: relative;/* 做个相对点 */
}
.box{
    width: 150px;
    height: 300px;
    border: 1px solid rgb(197, 211, 37);
    position: absolute;/* 针对相对点做绝对定位 */
    /* 绝对定位,若输入内容则不会到标签下方,而是飘在标签上方 */
    left: 100px;
    top: 100px;
    /* 若此时未在相对标签做相对点,则并非相对标签的绝对定位,而是相对左上角的绝对定位 */
}

例2:图片的透明提示栏

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/02.css">
    <title>图片的透明提示栏</title>
</head>
<body>
    <div class="box">
        <div class="box-img">
            <img src="img/456.jpg" alt="">
            <div class="box-img-nav">
                2325
            </div>
        </div>
        <p>
            <a href="#">天阶夜色凉如水,坐看牵牛织女星</a>
        </p>
    </div>
</body>
</html>
/* 最后一步将边线都去掉 */
*{
    padding: 0;
    margin: 0;
}
.box, .box-img, .box-img-nav{
    width: 150px;
    height: 200px;
    /* border: 1px solid red; */
}
.box-img{
    height: 150px;
    /* border: 1px solid greenyellow; */
    position: relative;/* 做相对点 */
}
.box-img > img{
    width: 100%;
    height: 100%;
    /* 使得图片铺满标签 */
}
.box-img-nav{
    height: 30px;
    background-color: rgba(0, 0, 0, 0.2);
    position: absolute;/* 绝对定位 */
    left: 0;
    bottom: 0;
    color: white;
    line-height: 30px;
    font-size: 14px;
}
.box a{
    color: #222;
    font-size: 14px;
    text-decoration: none;/* 下划线设为none */
    margin-left: 2px;
}

例3:点击浮动标签回到顶部

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/03.css">
    <title>浮动定位,回到顶部</title>
</head>
<body>
    <div id="box"></div>
    <div class="content">

    </div>
    <div class="go-top">
        <a href="#box">GO-TOP</a>
    </div>

</body>
</html>
html{
    scroll-behavior: smooth;
    /* 增加滚动效果 */
}
*{
    margin: 0;
    padding: 0;
}
#box{
    width: 100%;
}
.go-top{
    width: 100px;
    height: 100px;
    border-radius: 10px;
    background-color: #eee;
    box-shadow: 3px 3px 10px #999;
    cursor: pointer;/* 鼠标放置,点击回到顶部 */
    font-size: 25px;
    line-height: 100px;
    position: fixed;/* 浮动定位 */
    right: 50px;
    bottom: 100px;
}
.content{
    width: 1200px;
    height: 3000px;
    border: 1px solid rebeccapurple;
    margin: auto;
}

(3)浮动(float)及相关问题

本质作用:用来实现文字环绕图片,现常被用作让块元素横向排列。

例:浮动及商品列表页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/04.css">
    <title>浮动及商品列表页面</title>
</head>
<body>
    <div class="content">
        <div class="goods">
            <img src="img/123.jpg_.webp" alt="">
            <p class="price">
                <span>$499.00</span>
                <span>20000+人付款</span>
            </p>
            <p>
                <a href="#">xxxxx美女成群</a>
            </p>
        </div>

        <div class="goods">
            <img src="img/123.jpg_.webp" alt="">
            <p class="price">
                <span>$499.00</span>
                <span>20000+人付款</span>
            </p>
            <p>
                <a href="#">xxxxx美女成群</a>
            </p>
        </div>

        <div class="goods">
            <img src="img/123.jpg_.webp" alt="">
            <p class="price">
                <span>$499.00</span>
                <span>20000+人付款</span>
            </p>
            <p>
                <a href="#">xxxxx美女成群</a>
            </p>
        </div>

        <div class="goods">
            <img src="img/123.jpg_.webp" alt="">
            <p class="price">
                <span>$499.00</span>
                <span>20000+人付款</span>
            </p>
            <p>
                <a href="#">xxxxx美女成群</a>
            </p>
        </div>

        <div class="goods">
            <img src="img/123.jpg_.webp" alt="">
            <p class="price">
                <span>$499.00</span>
                <span>20000+人付款</span>
            </p>
            <p>
                <a href="#">xxxxx美女成群</a>
            </p>
        </div>

        <div class="goods">
            <img src="img/123.jpg_.webp" alt="">
            <p class="price">
                <span>$499.00</span>
                <span>20000+人付款</span>
            </p>
            <p>
                <a href="#">xxxxx美女成群</a>
            </p>
        </div>

    </div>
    <p>
        用户的密码加密后放在每一行的第二个字段里,这个 /etc/passwd文件在一般情况下是所有用户可读,只有root用户可写的,这样不良用户就可能读取加密后的密码字串来取得密码。
    </p>
</body>
</html>
*{
    margin: 0;
    padding: 0;
}
.content{
    width: 1200px;
    height: 2000px;
    margin: auto;
    border: 1px solid royalblue;
}
.goods{
    width: 250px;
    height: 395px;
    border: 1px solid rebeccapurple;
    float: left;
    margin: 23px ;
}
.goods > img{
    width: 250px;
}
p.price{
    line-height: 30px;
    height: 30px;
}

p.price > span:nth-child(1){
    font-size: 18px;
    color: orange;
    font-weight: bold;
}
p.price > span:nth-child(1)::after{
    height: 25px;
    content: "包邮";
    color: white;
    font-size: 10px;
    text-align: center;/* 字体居中 */
    background-color: orange;
}

p.price > span:nth-child(2){
    margin-right: 10px;
    float: right;
    font-size: 13px;
    color: #999;
}
p > a{
    text-decoration: none;
    color: black;
}

  • 浮动问题:盒子在浮动过程中,会影响后面的元素,浮动会导致后面产生空隙,而这些空隙会被后面的元素去填充

PS:如果浮动影响了后面元素的排列,建议清除浮动

<div style="clear: both;">
    <p>
    用户的密码加密后放在每一行的第二个字段里,这个 /etc/passwd文件在一般情况下是所有用户可读,只有root用户可写的,这样不良用户就可能读取加密后的密码字串来取得密码。
    </p>
</div>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨天_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值