以内联样式删除无效的css属性
Invalid css property gets removed in inline style
我在元素中定义了一些内联样式
<div id="box" style="-ms-grid-row:1; background-color: yellow;"></div>
,然后用javascript设置一个样式。
var box = document.getElementById('box');
box.innerHTML += '<br>before: ' + box.getAttribute('style');
box.style.height = '100px';
box.innerHTML += '<br>after: ' + box.getAttribute('style');
,输出变成:
before: -ms-grid-row:1; background-color: yellow;
after: background-color: yellow; height: 100px;
测试http://jsfiddle.net/P7eBN/浏览器删除了-ms-grid-row属性,我不希望它这样做,因为我正在写一个插件,读取内联风格的-ms-grid-row属性,所以-ms-grid-row需要以某种方式保留。使用jQuery时也是如此。$(box).height(100)
我怎样才能以最好的方式让用户通过样式设置高度。高度,仍然能够读取-ms-grid-row属性之后不知何事?
我正在写一个插件,读取内联样式与-ms-grid-row属性,所以-ms-grid-row需要以某种方式保存。听起来像是数据属性的工作:
<div id="box" data-ms-grid-row="1" style="background-color: yellow;"></div>
你的插件会将其读取为(跨浏览器方式)
box.getAttribute('data-ms-grid-row')
或对于现代浏览器:
box.dataset.msGridRow
这个怎么样?
var box = document.getElementById('box');
box.innerHTML += '<br>before: ' + box.getAttribute('style');
box.setAttribute('style', box.getAttribute('style') + ' height : 100px;');
box.innerHTML += '<br>after: ' + box.getAttribute('style');
当您编写任何CSS样式时,它将被浏览器过滤并应用于元素。比如说,for。,你写这个CSS:
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
当你在Chrome开发者工具中检查时,你将只看到-webkit-border-radius: 5px;
,而其他将不应用
假设您正在为浏览器提供HTML版本,因此您可以使用data-
属性。以这种方式发送样式:
style="border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;"
data-style="border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;"
现在你读的是data-style
,而不是style
。最终的代码将类似于:
var box = document.getElementById('box');
box.innerHTML += '<br>before: ' + box.getAttribute('data-style');
box.setAttribute('style', box.getAttribute('style') + '; height : 100px');
box.innerHTML += '<br>after: ' + box.getAttribute('data-style');
我在Internet Explorer 9上尝试了您的页面,属性如预期的那样保留了下来。除ie以外的浏览器会忽略-ms-前缀。因此你不能看到它
相关文章:
- 谷歌图表-如何更改整个表的css属性
- 将css属性替换为变量
- 使用Jquery/Javascript替换CSS属性
- 如何使用JavaScript查找未定义的CSS属性的值
- 在jquerymobile中设置按钮css属性的动画
- JavaScript无法提取引号css属性
- 使用AngularJS动态更改css属性
- 使用javascript获取具有特定CSS属性的所有元素
- 将css属性添加到对象的集合中
- 取消img的css属性宽度和高度(不能使用“auto”)
- CSS属性更改侦听器
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 如何使用java脚本或jQuery基于相同的特定css属性对元素进行分组
- 如何在不链接/jquery的情况下使用方法应用css属性数组
- 在 javascript css 属性中使用变量
- 在jQuery中链接时CSS属性不起作用
- jQuery检查CSS宽度是否大于0,然后添加CSS属性
- 使用循环增加css属性值
- 更改类所选空输入的CSS属性
- 无法查找元素'手动加载CSS文件时的CSS属性