css 实现div线条环绕

<template>
    <div>
        <div class="mainbox">
            <span class="line"></span>
            <span class="line"></span>
            <span class="line"></span>
            <span class="line"></span>
            <div class="content" @click="sss">线条环绕</div>
        </div>
        <br><br>
    </div>
</template>

<script lang="ts" setup>
const sss = ()=>{
    console.log('----');
    
}
</script>

<style lang="scss" scoped>
.mainbox {
    width: 320px;
    height: 320px;
    position: relative;
    /* 超出隐藏需要加上 */
    overflow: hidden;
}

.content {
    width: 100%;
    height: 100%;
    background-color: #cde;
}

.line {
    /* 结合外层元素的相对定位 */
    position: absolute;
}

.line:nth-child(1) {
    top: 0;
    left: 0;
    width: 100%;
    height: 3px;
    /* 加上渐变效果,方可形成拖尾效果 */
    background: linear-gradient(90deg, transparent, orange);
    animation: animate1 8s linear infinite;
}

/* 分别控制其上下左右的定位距离,从而形成线条跟随效果 */
@keyframes animate1 {
    0% {
        left: -100%;
    }

    50%,
    100% {
        left: 100%;
    }
}

.line:nth-child(2) {
    top: -100%;
    right: 0;
    width: 3px;
    height: 100%;
    background: linear-gradient(180deg, transparent, red);
    animation: animate2 8s linear infinite;
    /* 注意要加上延时触发动画效果,这样线条才会依次触发 */
    animation-delay: 2s;
}

@keyframes animate2 {
    0% {
        top: -100%;
    }

    50%,
    100% {
        top: 100%;
    }
}

.line:nth-child(3) {
    bottom: 0;
    right: 0;
    width: 100%;
    background: linear-gradient(270deg, transparent, green);
    animation: animate3 8s linear infinite;
    animation-delay: 4s;
}

@keyframes animate3 {
    0% {
        right: -100%;
        height: 3px;
    }

    50%,
    100% {
        height: 2px;
        right: 100%;
    }
}

.line:nth-child(4) {
    bottom: -100%;
    left: 0;
    width: 3px;
    height: 100%;
    background: linear-gradient(360deg, transparent, #3a86ff);
    animation: animate4 8s linear infinite;
    animation-delay: 6s;
}

@keyframes animate4 {
    0% {
        bottom: -100%;
    }

    50%,
    100% {
        bottom: 100%;
    }
}
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值