SVG:linearGradient渐变在直线上失效的问题解决方案

简介: SVG开发里有个较为少见的问题。 对x1=x2或者y1=y2的直线(line以及path),比如:   如果,stroke里使用的是渐变效果,那么,在各种浏览器上都会出现同一个BUG,这条线消失了。

SVG开发里有个较为少见的问题。

对x1=x2或者y1=y2的直线(line以及path),比如:

<path d="M200,10 200,100" stroke="url(#orange_red)"/>

 

如果,stroke里使用的是渐变效果,那么,在各种浏览器上都会出现同一个BUG,这条线消失了。

原因不好排查,但是道理很简单,参考:

www.w3.org

Keyword objectBoundingBox should not be used when the geometry of the 
applicable element has no width or no height, such as the case of a horizontal 
or vertical line, even when the line has actual thickness when viewed due to 
having a non-zero stroke width since stroke width is ignored for bounding box 
calculations. When the geometry of the applicable element has no width or 
height and objectBoundingBox is specified, then the given effect (e.g., a 
gradient or a filter) will be ignored.

简而言之,就是说:

关键字objectBoundingBox这玩意儿,在元素没有宽度或者高度的时候,会失去作用。

 

linearGradient渐变又依赖这个属性,所以失效了。

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

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

具体的说明参考:

gradientUnits MDN

 

目录
相关文章
|
8月前
|
前端开发
css三角号旋转90度,上下移动动画效果demo效果(整理)
css三角号旋转90度,上下移动动画效果demo效果(整理)
|
10月前
|
前端开发 容器
Echarts实战案例代码(46):带渐变背景颜色的倾斜角度的图表的CSS样式表解决方案
Echarts实战案例代码(46):带渐变背景颜色的倾斜角度的图表的CSS样式表解决方案
86 0
|
10月前
|
前端开发 容器
css——图片缩放,拉伸,变形的解决办法
css——图片缩放,拉伸,变形的解决办法
444 0
|
11月前
【Three.js入门】纹理及其常用属性、透明纹理、环境遮挡贴图与强度
【Three.js入门】纹理及其常用属性、透明纹理、环境遮挡贴图与强度
305 0
An动画基础之散件动画原理与形状提示点
An动画基础之散件动画原理与形状提示点
705 0
An动画基础之散件动画原理与形状提示点
从一个圆环进度功能来学习SVG
从一个圆环进度功能来学习SVG
114 0
从一个圆环进度功能来学习SVG
|
前端开发 JavaScript
使用SVG实现动态分布的圆环发散路径动画
使用SVG实现动态分布的圆环发散路径动画
224 0
|
前端开发
CSS设置标签、图片,放大、缩小、旋转、移动、倾斜(transform)
CSS设置标签、图片,放大、缩小、旋转、移动、倾斜(transform)
|
前端开发 JavaScript
canvas设置像素与画布样式宽高不符的原因及解决办法
canvas设置像素与画布样式宽高不符的原因及解决办法
661 0
Photoshop - PS/AE渐变工具出现色带波纹色彩过渡不均匀咋办?
Photoshop - PS/AE渐变工具出现色带波纹色彩过渡不均匀咋办?
953 0
Photoshop - PS/AE渐变工具出现色带波纹色彩过渡不均匀咋办?