• svg 直线水平渐变为什么没有效果,必须得是一条倾斜的不水平的直线才有渐变效果呢??


    参考:https://blog.csdn.net/u012260672/article/details/80905631

    对x1=x2(没有宽度)或者y1=y2(没有高度)的直线(line以及path,如果,stroke里使用的是渐变效果,那么,在各种浏览器上都会出现同一个BUG,这条线会消失。关键字objectBoundingBox这玩意儿,在元素没有宽度或者高度的时候,会失去作用。linearGradient渐变又依赖这个属性,所以渐变就会失效。

    解决方案很简单,为linearGradient加上属性gradientUnits=”userSpaceOnUse”

    gradientUnits是用于规定元素的坐标系统的,有两个属性值userSpaceOnUse和objectBoundingBox,后者是默认值。

    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="499" height="2">
         <defs>
             <!-- 水平渐变 -->
             <linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="0%" gradientUnits="userSpaceOnUse">
                   <stop offset="0%" stop-color="red" stop-opacity="1" />
                   <stop offset="100%" style="stop-color:yellow;stop-opacity:1;" />
             </linearGradient>
         </defs>
         <!-- 直线水平渐变 -->
         <line x1="0" y1="0" x2="499" y2="0"  style="stroke-2;" stroke="url(#grad)"/>
    </svg>
    
    
    <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="499" height="2">
         <defs>
             <!-- 水平渐变 -->
             <linearGradient id="grad" x1="0%" y1="0%" x2="100%" y2="0%">
                   <stop offset="0%" stop-color="red" stop-opacity="1" />
                   <stop offset="100%" style="stop-color:yellow;stop-opacity:1;" />
             </linearGradient>
         </defs>
         <!-- 直线水平渐变 -->
        <!-- 如果没有 gradientUnits="userSpaceOnUse"属性,x1=x2或者y1=y2会消失线条,只可以画斜线的渐变   -->
         <line x1="0" y1="1" x2="499" y2="2"  style="stroke-2;" stroke="url(#grad)"/>
    </svg>
    每天进步一点点
  • 相关阅读:
    贪心法解活动安排问题
    求两个等长的已排序数组的中位数(《算法导论》P113习题9.3-8)
    0-1背包问题
    动态规划法解最长公共子序列问题
    动态规划法解矩阵链乘问题
    常见的算法设计策略
    A*算法与8数字谜题(参见《算法》P226习题2.5.32)
    keepalive+redis 主从高可用
    sharding-jdbc 读写分离+水平分表
    hash一致算法原理
  • 原文地址:https://www.cnblogs.com/677a/p/11732499.html
Copyright © 2020-2023  润新知