【发布时间】:2018-10-29 04:53:58
【问题描述】:
需要将 css 更新为动态值,我不确定最好的方法是什么。
<div id="app" style="zoom: 0.XX;">
...
</div>
缩放级别将根据窗口调整大小触发,应用程序将相应缩放。我将此应用程序加载到cordova并让它在iPAD中运行,然后我意识到需要使用“-webkit-text-size-adjust”将字体大小调整为与缩放级别相同,以便它不会破坏设计布局。
我的挑战是像这样动态设置 css:
#app * {
-webkit-text-size-adjust : nn%
}
其中 nn 是缩放 X 100 + '%'
我试过了:
1) 在app div上设置样式,但这对应用到内部元素没有帮助
<div id="app" style="zoom: 0.XX; -webkit-text-size-adjust: XX%">
2)使用javascript设置所有内部节点,但我认为不仅效率较低,而且如果我的窗口没有调整大小,它也不会触发,这意味着如果我导航到其他页面,这个逻辑不会被调用。
REF: https://stackoverflow.com/questions/25305719/change-css-for-all-elements-from-js
let textSizeAdjust = function(zoom) {
let i,
tags = document.getElementById("app").getElementsByTagName("*"),
total = tags.length;
for ( i = 0; i < total; i++ ) {
tags[i].style.webkitTextSizeAdjust = (zoom * 100) + '%';
}
}
3) 我尝试使用 javascript,但很可能它们在技术上不正确,因为 querySelector 返回 null。
document.querySelector('#app *').style.webkitTextSizeAdjust = zoom *100 + '%';
document.querySelector('#app').querySelector('*').style.webkitTextSizeAdjust = zoom * 100 + "%";
最终,我相信我需要动态创建 css,以便浏览器将此设置应用于 DOM:
#app * {
-webkit-text-size-adjust: nn
}
请让我知道这是否正确,或者如何使用javascript创建上述css并动态更改值?
【问题讨论】:
标签: javascript css