如何使用adobeillustrator生成的SVG,包括位图图像作为链接与onclick
How to use an Adobe Illustrator generated SVG including bitmapped image as a link with onclick
我花了一些时间才弄清楚,所以我将在这里描述它,供其他感兴趣的人使用:
我想用SVG代替我的web作品集图像(我是一名设计师),这样文件大小就会合理,同时图像在高清屏幕上看起来也会很好。
我的许多图像都有一些位图部分和一些矢量部分,因此将两者组合成一个SVG是必不可少的。
我遇到了三个主要问题:
1) 从Illustrator导出的SVG在HTML页面中使用<img>
标签显示时失去其位图艺术。
2) 当使用SVG的<object>
标签时,鼠标事件如onclick不再工作
3) 当使用带有<object>
标签的SVG时,iPad上的iOS将无法正确缩放图像。只有容器会被调整大小——实际的图像会保持不变。
为了使用SVG嵌入位图图像(例如,Illustrator文件放置PNG图像),我必须使用:
<object data="yourimage.svg" type="image/svg+xml"></object>
WebKit中有一个已知的bug (Google Code报告),它阻止SVG在<img>
标签中显示位图组件。
为了在SVG中捕获鼠标事件,我打开了Illustrator SVG本身,并在</svg>
:
<rect id="mynewobjectid" onclick="top.myjavascriptfunction(evt)"
cursor="pointer" pointer-events="visible" fill="none"
width="1536" height="1536"/>
我从SVG的第5行<svg>
标签中获得了宽度和高度,但这次我没有添加"px"。我不认为那会有什么不同。
pointer-events="visible"是必要的,这样空矩形就可以捕获鼠标事件。
html文档中的javascript函数如下所示:
function myjavascriptfunction(evt){alert(evt.target.id)}
结果是一个漂亮的图像,看起来像一个链接,当我点击它时,给我一个带有对象ID的警报。
注意,我还将光标改为手,这样链接的图像就可以看到了,使用cursor="pointer"
感谢David Dailey提供的简单有效的解决方案。
[关于iOS问题的更新]事实证明,默认情况下,iPad上的iOS 7.0拒绝正确调整<object>
标签的大小(它会调整对象边界的大小,但不会调整所包含的图像)。
解决方案是将SVG文件开头的SVG标记中的宽度和高度从其原始像素值更改为100%。示例
- 如何使用tweenJS使位图移动到某些点
- 使用EaselJS位图时捕获错误的URL
- easeljs在不同的位置多次添加位图到舞台上
- 如何通过在灯箱外单击或在与图像贴图组合时点击esc退出灯箱
- 用纯Javascript(无html)创建画布/位图
- JavaScript画布可以像位图一样操作吗?它是否为此进行了优化
- 悬停并选择图像贴图的状态
- 任何比较两个不同位图图像并在javascript中检测不同区域的方法
- 圆形路径中的位图旋转 CreateJS Tweenjs.
- EaseJS将颜色过滤器应用于位图
- 用于在 Photoshop 中的位图图像中创建文本的 Photoshop 脚本
- 在 JavaScript 中将原始图像的十六进制字符串转换为位图图像
- 寻找一个交互式javascript地图解决方案,允许放大,标记和使用位图图像(不是SVG))
- 传递数组列表<ImageItems>从一个活动到另一个活动.图像项包含位图和字符串
- createjs.位图()图像未显示
- 将图像(或位图)转换为二维矩阵
- 如何使用adobeillustrator生成的SVG,包括位图图像作为链接与onclick
- 位图构造器URL VS图像,如何决定
- 当将图像加载到Easeljs位图类时,它是否使用原始图像?
- 为什么我的位图图像出现在画布上使用EaselJS混叠