SVG实现动态效果

175 阅读1分钟

SVG简单实现模拟交换机报警

效果 :

tutieshi_640x360_10s.gif

实现思路

  • 使用SVG画图软件 画出所需图片,可直接生成代码 . 非常不错~ 生成的代码大概是介个样子

image.png

  • 一行代码组成一个框,有本身所属的ID,可以自定义.如:col1-row2-1

  • 获取ID,利用JS动态添加类名改变边框颜色

    const keys = document.getElementById('keys');
    const button1 = document.getElementById('button1');
    button1.addEventListener('click', changeColor);
    let oldKeys = [];

    function changeColor() {
        console.log(keys.value);
        let keysValue = keys.value;
        let keysValueArr = keysValue.split(',')
        console.log(keysValueArr);

        // remove class
        oldKeys.forEach((item) => {
        document.getElementById(item).classList.remove('svg-stroke-width');
        });

        // add class
        setTimeout(() => {
        keysValueArr.forEach((item) => {
            console.log(item);
            document.getElementById(item).classList.add('svg-stroke-width');
        });
        oldKeys = keysValueArr;
        }, 1000);
body {
      overflow: hidden;
    }

    .svg-stroke-width {
    
      animation: strokeWidth 3s infinite;
    }

    @keyframes strokeWidth {
      0% {
        stroke-width: 0.1;
        stroke: #f35b47;
      }

      100% {
        stroke-width: 5;
        stroke: #ff4e4e;
      }
    }