Svg存在的坑

1.svg不能很好的在anroid2.3中得到支持,需要额外的补充。(应用案例【开心流量】:http://f.aidg.cc/mweb/flowstore/C23QMupA#/pay
IE8-以及Android 2.3默认浏览器是不支持SVG的,

<svg width="96" height="96">
  <image xlink:href="svg.svg" src="svg.png" width="96" height="96" />
</svg>

即所有浏览器,包括IE,会把image标签渲染成img标签,而SVG中的image作用是:

Provides a way to display a graphics image on the screen.

也就是提供在屏幕上显示一个图形图像的方法。

于是,就有,如果浏览器支持SVG,则SVG显示;对于不支持的浏览器,例如IE8浏览器,会忽略svg标签的存在,直接渲染image,在其看来,这就是个img标签,于是,图像就以svg.png的形式显示了。

参考文献:
http://www.zhangxinxu.com/wordpress/2013/09/svg-fallbacks/

<think>嗯,用户现在问的是如何修改SVG中的stroke颜色。首先,我需要确认用户对SVG的了解程度。可能他们是在开发网页或者设计图形时遇到了这个问题,想调整边框颜色。 用户之前问过“经办人翻译英文”,现在转向SVG,可能是在处理前端开发或者设计相关的工作。需要明确他们是想通过哪种方式修改stroke颜色,是直接修改SVG代码,还是用CSS或者JavaScript动态控制? 接下来,我要考虑不同的方法。直接内联样式是最简单的,适合静态修改。然后是CSS类,方便复用和管理。外部CSS文件的话,适合多个SVG元素统一风格。动态修改的话可能需要JS,用户可能有交互需求,比如点击变色。 另外,用户可能不知道stroke和fill的区别,需要简单提一下,避免混淆。还有属性优先级的问题,内联样式会覆盖外部CSS,这点需要注意。可能用户遇到修改了CSS但没效果的情况,这时候需要检查优先级。 还要考虑不同形状元素是否都支持stroke属性,比如path、rect、circle等,确保方法通用。可能用户使用了第三方库或者框架,比如React,这时候需要给出相应的示例,比如内联对象或者styled-components。 最后,常见错误部分,比如拼写错误、单位问题、颜色格式是否正确,都是用户可能遇到的,需要提醒。如果有动画或交互,可能需要更动态的方法,用户可能需要进一步的信息,但这次先给出基础方法。 总结一下,分步骤介绍不同方法,强调适用场景,注意事项,确保用户能根据需求选择合适的方式,并避免常见错误。这样用户不仅能解决问题,还能理解背后的原理,提升他们的技能。</think>### SVG描边颜色修改指南 --- #### 一、基础修改方法 **1. 直接属性修改** 在SVG标签内部通过`stroke`属性直接定义颜色: ```xml <path d="M10 10 L90 10" stroke="#FF0000" <!-- 红色描边 --> stroke-width="2"/> ``` **2. CSS内联样式** 使用`style`属性实现多属性控制: ```xml <circle cx="50" cy="50" r="40" style="stroke: rgb(0,255,0); stroke-width: 3px;"/> ``` --- #### 二、进阶控制方式 **1. CSS类选择器** 定义可复用的样式类: ```css /* 外部CSS文件 */ .special-border { stroke: purple; stroke-dasharray: 5; stroke-linecap: round; } ``` ```xml <!-- SVG应用 --> <rect class="special-border" width="100" height="80"/> ``` **2. 当前颜色继承** 使用`currentColor`继承父级颜色: ```xml <svg style="color: navy"> <polygon points="20,20 80,20 50,80" stroke="currentColor"/> <!-- 自动继承navy颜色 --> </svg> ``` --- #### 三、动态修改方案 **1. JavaScript操作** 通过DOM修改属性: ```javascript document.getElementById('myPath').setAttribute('stroke', 'orange'); ``` **2. 动画效果** 实现颜色渐变动画: ```xml <path stroke="black"> <animate attributeName="stroke" values="black;red;blue;black" dur="3s" repeatCount="indefinite"/> </path> ``` --- #### 四、框架适配示例 **React组件**: ```jsx <svg> <rect stroke={isActive ? '#FF4136' : '#AAAAAA'} style={{ transition: 'stroke 0.3s ease' }} /> </svg> ``` **Vue动态绑定**: ```vue <template> <path :stroke="dynamicColor" /> </template> ``` --- #### 五、注意事项 1. **优先级顺序** `内联style > 内联属性 > CSS类 > 外部CSS` 2. **颜色格式支持** - 十六进制 `#RRGGBB` - RGB/RGBA `rgb(255,0,0)` - 颜色名称 `red` - HSL `hsl(120, 100%, 50%)` 3. **特殊元素** - `<text>`需要同时设置`fill`和`stroke` - `<line>`默认无填充色,需单独设置`stroke` --- #### 六、调试技巧 1. 浏览器开发者工具中: - 通过元素检查直接修改`stroke`值 - 使用`getComputedStyle(element).stroke`获取实际值 2. 遇到不生效时检查: - 是否存在`stroke-opacity`覆盖 - 是否被更高优先级的样式覆盖 - SVG命名空间是否正确声明 如需特定场景的解决方案,可提供具体代码片段或设计需求!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值