D. *_*ans 4 javascript css mootools
使用Mootools Element.Dimensions,我可以获得任何元素的计算大小(以像素为单位)。但是,我无法分辨出是否已使用像素值或百分比值确定了元素的大小(在特殊情况下(具有内联样式))。
有这样做的明智方法吗?我能想到的唯一解决方案(这太可怕了,几乎不值得使用该名称)是遍历文档样式表,查找与目标元素匹配的选择器,然后遍历声明的样式以获取目标属性。
背景
我试图用CKEditor实例替换某个类的所有textarea 。理想情况下,宽度为100%的textarea将由样式相似的编辑器实例替换-因此它们将根据窗口调整大小进行缩放-而固定大小的textareas将由固定大小的编辑器替换。
是的,我可以给他们一个不同的类(如果没有很好的解决方案,我会这样做),但是理想情况下,我希望能够放入CKEditor脚本并使所有工作都可以进行,而无需调整HTML。
可以办到。看着这个问题(为什么getComputedStyle在元素创建后立即为像素值返回'auto'?)给出了提示。
如果将元素的样式设置为display = none,然后调用getComputedStyle,则将获得计算值(百分比宽度或“自动”,或样式表应用于元素的任何值),而不是像素宽度。
工作代码jsfiddle https://jsfiddle.net/wtxayrnm/1/
function getComputedCSSValue(ele, prop) {
var resolvedVal = window.getComputedStyle(ele)[prop];
//does this return a pixel based value?
if (/px/.test(resolvedVal)) {
var origDisplay = ele.style.display;
ele.style.display = 'none';
var computedVal = window.getComputedStyle(ele)[prop];
//restore original display
ele.style.display = origDisplay;
return computedVal;
} else {
return resolvedVal;
}
}
Run Code Online (Sandbox Code Playgroud)
应当注意,这将导致重新渲染布局,但根据您的情况,这可能比遍历所有样式表规则或克隆元素(这可能导致某些级联规则无法应用)更为简单。
| 归档时间: |
|
| 查看次数: |
2719 次 |
| 最近记录: |