【发布时间】:2014-02-25 08:45:08
【问题描述】:
我尝试通过 javascript 动态添加 css 规则,然后在滚动事件上更新 css。
这是我的代码:
var head = document.head || document.getElementsByTagName('head')[0],
createElement = document.createElement('style');
// append style to head
head.appendChild(createElement);
// scroll event
$(window).on('scroll touchmove', function(e) {
// define variables
var body = $('body'),
style = {
waY: $(document).scrollTop()
};
// create css rules
var css = 'body:before {';
css += 'background-position: 0px ' + (style.waY*0.4).toFixed(2) + 'px';
css += '}';
css += 'body:after {';
css += 'background-position: 0px ' + (style.waY*0.4).toFixed(2) + 'px';
css += '}';
createElement.innerHTML = '';
// add css rules to style tag
if (css.styleSheet) {
// If IE
createElement.styleSheet.cssText = css;
} else {
// Other browsers
createElement.appendChild(document.createTextNode(css));
}
});
我不喜欢这段代码,因为它使页面超载并且运行缓慢。每次如何清除样式或只是重载现有规则?
如果有其他方法可以重新加载css里面的样式?
【问题讨论】:
-
您可以将 id 添加到该样式,然后检查具有该 id 的元素是否存在(在这种情况下,您应该覆盖它)
标签: javascript css scroll