纯CSS3动画实现SVG边框特效

效果展示

源码展示

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>纯C3动画实现SVG边框特效</title>
<style>
  body,html {
    height:100%;
    display:flex;
    justify-content:center;
    align-items:center;
    background:rgb(10,21,117);
}
main {
    width:200px;
    height:500px;
    /* border:1px solid black;
    */
}
svg {
    width:200px;
    height:50px;
    margin-bottom:20px;
    /* background:#ccc;
    */
        cursor:default;
}
rect#shape {
    fill:transparent;
    stroke:white;
    stroke-width:6px;
    stroke-dasharray:0 500;
    stroke-dashoffset:0;
    transition:0.5s ease;
    /* animation:dong 2s ease-in-out infinite alternate;
    */
}
svg:hover #shape {
    stroke-dasharray:500 0;
    stroke-width:6px;
    stroke:rgb(32,213,226);
}
@keyframes dong {
    100% {
    stroke-dasharray:500 0;
    stroke-width:6px;
    /* stroke-dashoffset:-250;
    */
      stroke:white;
}
}rect#one {
    fill:transparent;
    stroke:yellowgreen;
    stroke-width:6px;
    stroke-dasharray:0 500;
    stroke-dashoffset:250;
    animation:dong1 2s ease-in-out infinite alternate;
}
@keyframes dong1 {
    100% {
    stroke-dasharray:500 0;
    stroke-width:6px;
    /* stroke-dashoffset:0;
    */
            stroke:greenyellow;
}
}rect#two {
    fill:transparent;
    stroke:rgb(233,43,43);
    stroke-width:6px;
    stroke-dasharray:200 300;
    stroke-dashoffset:250;
    animation:dong2 2s ease-in-out infinite alternate;
}
@keyframes dong2 {
    100% {
    stroke-dasharray:200 0;
    stroke-width:6px;
    /* stroke-dashoffset:0;
    */
            stroke:rgb(233,43,43);
}
}rect#three {
    fill:transparent;
    stroke:rgb(233,220,43);
    stroke-width:6px;
    stroke-dasharray:50 450;
    stroke-dashoffset:50;
    animation:dong3 2s ease-in-out infinite alternate;
}
rect#threes {
    fill:transparent;
    stroke:rgb(233,103,43);
    stroke-width:6px;
    stroke-dasharray:50 450;
    stroke-dashoffset:-200;
    animation:dong3 2s ease-in-out infinite alternate;
}
@keyframes dong3 {
    100% {
    stroke-dasharray:500 0;
    stroke-width:6px;
    /* stroke-dashoffset:-250;
    */
            stroke:rgb(233,220,43);
}
}rect#four {
    fill:transparent;
    stroke:skyblue;
    stroke-width:6px;
    stroke-dasharray:50 450;
    stroke-dashoffset:150;
    transition:0.5s ease;
    /* animation:dong4 2s ease infinite alternate;
    */
}
svg:hover #four {
    stroke-dasharray:250 250;
}
rect#fours {
    fill:transparent;
    stroke:blue;
    stroke-width:6px;
    stroke-dasharray:50 450;
    stroke-dashoffset:200;
    transition:0.5s ease;
    /* animation:dong4s 2s ease infinite alternate;
    */
}
svg:hover #fours {
    stroke-dasharray:250 50;
}
@keyframes dong4 {
    100% {
    stroke-dasharray:250 250;
}
}@keyframes dong4s {
    100% {
    stroke-dasharray:250 50;
}
}text {
    fill:white;
    font-size:30px;
    transition:0.5s linear;
}
svg:hover text {
    fill:rgb(30,129,223);
}
svg:hover .four {
    fill:rgb(231,105,21);
}
#five {
    fill:transparent;
    stroke:rgb(255,0,179);
    stroke-width:6px;
    stroke-dasharray:50 400;
    stroke-dashoffset:-75;
    stroke-opacity:0;
    animation:dong5 1s linear infinite alternate;
}
@keyframes dong5 {
    100% {
    stroke-opacity:1;
    stroke:rgb(192,44,180);
    stroke-dasharray:50 20;
}
}#six {
    fill:transparent;
    stroke:rgb(0,255,21);
    stroke-width:6px;
    stroke-dasharray:50 400;
    stroke-dashoffset:50;
    animation:dong6 1s linear infinite alternate;
}
@keyframes dong6 {
    100% {
    stroke:rgb(231,250,59);
    stroke-dasharray:20 1;
}
}</style>
</head>
<body>
<main>
    <svg>
    <rect id="shape" height="50" width="200"></rect>
    <text x="70" y="35"><a href="###">百度</a></text>
    </svg>
    <svg>
    <rect id="one" height="50" width="200"></rect>
    </svg>
    <svg>
        <rect id="two" height="50" width="200"></rect>
    </svg>
    <svg>
        <rect id="three" height="50" width="200"></rect>
        <rect id="threes" height="50" width="200"></rect>
    </svg>
    <svg>
            <rect id="fours" height="50" width="200"></rect>
         <rect id="four" height="50" width="200"></rect>
         <text class="four" x="70" y="35"><a href="###">淘宝</a></text>
    </svg>
    <svg>
            <rect id="five" height="50" width="200"></rect>
        </svg>
    <svg>
                <rect id="six" height="50" width="200"></rect>
            </svg>
</main>

<pre style="color:red">
   感:  最近贡献一下我在教学中的小案例  希望能给你一些帮助

                                                              --王      
</pre>

</body>
</html>

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值