SVG 渐变边框在 CSS 中的应用

时间:2024-03-12 15:58:59
<template> <div class="home"> <div class="one"> <svg width="100%" height="100%"> <rect x="2" y="2" width="100%" height="100%" fill="none" style="width: calc(100% - 4px);height: calc(100% - 4px);" rx="4" stroke="url(#paint0_linear_1_2)" stroke-width="4" stroke-linecap="round" /> <defs> <linearGradient id="paint0_linear_1_2" x1="0" y1="0" x2="1" y2="0"> <stop stop-color="#FFD75A" /> <stop offset="1" stop-color="#ED424B" /> </linearGradient> </defs> </svg> </div> <div class="one"> <svg width="100%" height="100%" viewBox="0 0 100% 100%" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect x="0" y="0" width="100%" height="100%" rx="4" stroke="url(#paint0_linear_1_2)" stroke-linecap="round" /> <defs> <linearGradient id="paint0_linear_1_2" x1="0" y1="0" x2="1" y2="0"> <stop stop-color="#FFD75A" /> <stop offset="1" stop-color="#ED424B" /> </linearGradient> </defs> </svg> </div> <div class="one"> <svg width="100%" height="100%" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect x="2" y="2" width="100%" height="100%" style="width: calc(100% - 4px);height: calc(100% - 4px);" stroke-width="2" rx="16" stroke-linecap="round" stroke="url(#paint0_linear_3269_5233)" stroke-dasharray="8 6" /> <defs> <linearGradient id="paint0_linear_3269_5233" x1="0" y1="0" x2="100%" y2="100%" gradientUnits="userSpaceOnUse"> <stop stop-color="#FFD75A" /> <stop offset="1" stop-color="#ED424B" /> </linearGradient> </defs> </svg> </div> <div class="one"> <svg width="100%" height="100%" fill="none" xmlns="http://www.w3.org/2000/svg"> <rect class="rect" x="2" y="2" width="100%" height="100%" stroke-width="2" rx="16" stroke-linecap="round" stroke="url(#paint0_linear_5234_3269)" stroke-dasharray="8 6" /> <defs> <linearGradient id="paint0_linear_5234_3269" x1="0" y1="0" x2="100%" y2="100%" gradientUnits="userSpaceOnUse"> <stop stop-color="#00bbff" /> <stop offset="1" stop-color="red" /> </linearGradient> </defs> </svg> </div> </div> </template> <script> export default { name: 'HomeView', data() { return { } }, } </script> <style scoped> .home { width: 100%; height: 100%; } .one { width: 100px; height: 80px; display: inline-block; margin: 0 10px; } .rect { width: calc(100% - 4px); height: calc(100% - 4px); animation: move .3s infinite linear; } @keyframes move { 0% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 14; } } </style>