如何检查svg<g>元素支持css转换
How to check if svg <g> element supports css transform
Chrome、Firefox和Safari支持无前缀的CSS样式转换svg <g>
元素,而Internet Explorer和Android 4.2.0浏览器不支持。
我想通过JavaScript检查浏览器是否支持此功能,例如:
if ( svg_css_Transform_supported() ){
//do something;
}else{
//do nothing;
}
这是一个在所有支持的浏览器上运行良好的JSFiddle教程:
http://jsfiddle.net/samehobada/w95298kf/
function svg_css_Transform_supported()
{
var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
return 'transform' in svg;
}
我在这个解决方案之后搜索了很多,并从modernizr线程(elementFromPoint)中找到了另一种技术。既然你不需要每次都检查这个,你可以把它存储在cookie中。
我使用的是jQuery和它的cookie插件,但如果你不这样做,这个概念会保持不变:
// svg transform support test
svgTransformSupport = function () {
if (typeof $.cookie('svgtransform') === 'undefined') {
var svg = $('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2" id="oksvgtransform"><path id="nosvgtransform" d="M0 0h1v1H0z"/></svg>');
$body.append(svg);
// straight test
if ('transform' in svg[0]) {
$.cookie('svgtransform',true);
console.log('straight css test svg transform ok');
return true;
}
// real test
svg.css({
'position':'fixed',
'width':'2px',
'height':'2px',
'left':'0px',
'top':'0px',
'z-index':'1000',
});
$('#nosvgtransform').css({
'transform':'translate(1px,1px)',
});
var isSupport = (document.elementFromPoint(0, 0).id=="oksvgtransform");
svg.remove();
$.cookie('svgtransform',isSupport);
if (isSupport) {
console.log('element from point test svg transform ok');
} else {
console.log('element from point test svg transform failed');
}
return(isSupport);
} else if ($.cookie('svgtransform')=="true") {
console.log('cookie test svg transform ok');
return (true);
} else {
console.log('cookie test svg transform fail');
return (false);
}
}
相关文章:
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- 如何首先设置样式<td>表中包含在窗体中的元素
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在验证器中添加自定义规则以检查<ul>具有元素
- 调整<音频>元素
- <的自定义进度条;音频>并且<进度>HTML5元素
- 转换<a>使用jQuery将文本字符串转换为dom元素
- react-让一个元素返回两个相邻的<tr>标签
- <h1>标签在离子含量元素中不可见
- 更改<td>更改事件的元素值
- 为什么不是't html<对象>元素响应鼠标事件
- 更改每个<李>元素在<ol>
- 点击<选择>元素,但不在<选项>
- Jquery将css类添加到父级<ul>元素
- jQuery对嵌套在<李>并且<a>元素,同时离开父<ul>打开
- 单击事件在替换<使用>元素在<svg>(Win7/IE11)
- 将换行符写入<span>元素
- 如何正确地获得<i><p>元素
- HTML5<视频>元素在Firefox、Opera和Safari中不起作用
- 我正试图动态地拉动<h3>元素,并将它们放在选择列表中