我想通过JavaScript将column-count
应用于无序列表,因为我事先不知道需要多少列。
我做了以下操作,这适用于Chrome和IE10,但在FireFox和Opera中无效。
var ul= document.getElementById('multi-columns');
ul.style['-moz-column-count'] = 4;
ul.style['-webkit-column-count'] = 4;
ul.style['column-count'] = 4;
我没有在Safari中对此进行测试,但我敢打赌,因为它适用于Chrome。
为什么这不适用于FireFox和Opera?什么是变通方法?
答案 0 :(得分:1)
您必须缩短前缀名称并删除连字符。使用camel-case除了它的前缀 - 然后第一个char也必须大写:
var ul= document.getElementById('multi-columns');
ul.style['MozColumnCount'] = 4;
ul.style['WebkitColumnCount'] = 4;
ul.style['columnCount'] = 4;
或
ul.style.MozColumnCount = 4;
ul.style.WebkitColumnCount = 4;
ul.style.columnCount = 4;
您可以使用如下函数来概括:
function getSupportedProp(proparray){
var root=document.documentElement //reference root element of document
for (var i=0; i<proparray.length; i++){ //loop through possible properties
if (proparray[i] in root.style){ //if property exists on element (value will be string, empty string if not set)
return proparray[i] //return that string
}
}
}
//SAMPLE USAGE
var boxshadowprop = getSupportedProp(['boxShadow', 'MozBoxShadow', 'WebkitBoxShadow']) //get appropriate CSS3 box-shadow property
document.getElementById("mydiv").style[boxshadowprop]="5px 5px 1px #818181" //set CSS shadow for "mydiv"