纯css 实现跑马灯效果

重点:使用 inline-block 获取实际文本的宽度

由于 <p> 标签的宽度为父元素的 100%,如果是这样,我们很难进行下面的操作。我们首先需要拿到实际文本的宽度,这里可以借助 inline-block 的特性,做到这一点.

<style>
        .wrap {
            position: relative;
            width: 200px;
            height: 100vh;
            background: #ddd;
            overflow: hidden;
        }

        span {
            display: inline-block;
            white-space: nowrap;
            padding: 5px;
            line-height: 24px;
            cursor: pointer;
        }

        .one:hover {
            animation: move 5s infinite alternate linear;
        }

        @keyframes move {
            0% {
                transform: translate(0, 0);
            }

            100% {
                transform: translate(calc(-100% + 200px), 0);
            }
        }
    </style>
</head>

<body>
    <div class="wrap">
        <span class="one" title="Overflow scorll left to right Overflow">Overflow scorll left to right Overflow</span>
        <span class="one" title="AAA BBB CCC DDD EEE FFF DDD GGG">AAA BBB CCC DDD EEE FFF DDD GGG</span>
        <span class="" title="AAA BBB CCC">AAA BBB CCC</span>
        <span class="one" title="AAA BBB CCC DDD EEE FFF DDD GGG HHH III">AAA BBB CCC DDD EEE FFF DDD GGG HHH III</span>
    </div>
</body>
image.png

有时候我们也不确定父元素的宽度,这时候我们只要改变一下我们动画效果

.wrap {
            position: relative;
            width: 10vw;
            height: 100vh;
            background: #ddd;
            overflow: hidden;
            resize: horizontal;
        }

        .wrap::-webkit-scrollbar {
            width: 200px;
            height: 200px;
        }

        span {
            position: relative;
            display: inline-block;
            white-space: nowrap;
            padding: 5px;
            line-height: 24px;
            cursor: pointer;
            transition: .5s all;
            will-change: left, transform;
        }

        .scroll:hover {
            animation: move 2s infinite alternate linear;
        }


        @keyframes move {
            0% {
                left: 0;
                transform: translate(0, 0);
            }

            100% {
                left: 100%;
                transform: translate(-100%, 0);
            }
        }
    </style>
</head>

<body>
    <div class="wrap">
        <span class="scroll" title="Overflow scorll left to right Overflow">Overflow scorll left to right
            Overflow</span>
        <span class="scroll" title="AAA BBB CCC DDD EEE FFF DDD GGG">AAA BBB CCC DDD EEE FFF DDD GGG</span>
        <span class="scroll" title="AAA BBB CCC">AAA BBB CCC</span>
        <span class="scroll" title="AAA BBB CCC DDD EEE FFF DDD GGG HHH III">AAA BBB CCC DDD EEE FFF DDD GGG HHH
            III</span>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容