CSS 3.0粘性定位的妙用

2020-11-26 11:17:06 浏览数 (2)

position:sticky是 CSS 3.0新增的定位属性,可以说是相对定位relative和固定定位fixed的结合,它主要用在对scroll事件的监听上,简单来说,在滚动过程中,元素距离其父元素的距离达到sticky粘性定位的要求时,效果会变成fixed定位,固定到适当位置,下面给大家看一个效果。

这个属性用的概率比较小,不过在特定的场合,它真是个好东西,不用写那么复杂的JS,以下是代码实现。

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS 3.0粘性定位的妙用</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            font-family: '微软雅黑', sans-serif;
            box-sizing: border-box;
        }

        .banner {
            position: relative;
            width: 100vw;
            height: 100vh;
        }

        .banner img {
            width: 100%;
            height: 100%;
        }

        section:nth-child(2n 1) {
            position: relative;
            height: auto;
            background: #fafafa;
            display: flex;
            flex-direction: row-reverse;
        }

        section:nth-child(2n 2) {
            position: relative;
            height: auto;
            background: #fafafa;
            display: flex;
        }

        section .img-box {
            /* 关键属性 */
            position: sticky;
            top: 0;
            min-width: 50%;
            height: 100vh;
        }

        section .img-box img {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            max-width: 600px;
        }

        section:nth-child(2n 1) .content {
            padding: 100px 0 100px 100px;
            text-align: right;
        }

        section:nth-child(2n 2) .content {
            padding: 100px 100px 100px 0;
            text-align: left;
        }

        section .content h2 {
            margin: 0 0 20px;
            font-size: 60px;
        }

        section .content p {
            color: #777;
            font-size: 20px;
            margin-bottom: 20px;
        }
    </style>
</head>

<body>
    <div class="banner">
        <img src="banner.png">
    </div>
    <div id="box">
        <section>
            <div class="img-box">
                <img src="img.png">
            </div>
            <div class="content">
                <h2>Apple Watch</h2>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
                <p>
                    Apple Watch是苹果公司于2014年9月公布出来的智能手表,分为运动款、普通款和定制款三种,采用蓝宝石屏幕,有银色,金色,红色,绿色和白色等多种颜色可以选择
                </p>
            </div>
        </section>
    </div>
    <script>
        // 加点内容
        let box = document.getElementById('box');
        for(let i=0;i<2;i  ){
            box.innerHTML  =box.innerHTML;
        };
    </script>
</body>

</html>

以下是上面代码中用到的图片。

img.png

banner.png

0 人点赞