向文档注入动态CSS
Inject dynamic CSS to a document?
向文档注入动态CSS代码以便在运行时预览所做的更改的最佳方法是什么?
我在HTML页面中有一个TextArea,我将在其中键入CSS代码。我想从文本区域更新页面的样式。这是我目前使用的方法。
<!DOCTYPE html>
<html>
<head>
<title>Dynamic CSS Experiments</title>
<meta charset=utf-8 />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<style id="dynamic-css" type="text/css"></style>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
jQuery(function ($) {
var styleTag, textArea;
styleTag = $("#dynamic-css");
textArea = $("#css-ta");
textArea.on('keydown', function () {
styleTag.html(textArea.val())
});
});
</script>
</head>
<body>
<textarea name="css" id="css-ta" cols="30" rows="10"></textarea>
...
</body>
</html>
这是最好的方法吗?还有其他聪明的方法吗?
试试这样做来限制更新的次数。
<!DOCTYPE html>
<html>
<head>
<title>Dynamic CSS Experiments</title>
<meta charset=utf-8/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<style id="dynamic-css" type="text/css"></style>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
jQuery(function ($) {
var styleTag, textArea, active=true, threashold=100;
styleTag = $("#dynamic-css");
textArea = $("#css-ta");
textArea.on('keydown', function () {
if (active===true) {
active = false;
setTimeout(function(){
styleTag.html(textArea.val());
active = true;
}, threashold);
}
});
});
</script>
</head>
<body>
<textarea name="css" id="css-ta" cols="30" rows="10"></textarea>
...
</body>
</html>
我认为"最好"的方法对每种情况都是唯一的。
根据你的脚本,在keydown事件中添加节流可能是有用的,这样你就可以减少样式的更新次数并提高性能。
看到美元。节流或$.debouncehttps://code.google.com/p/jquery-debounce/-实现示例
另外,考虑jQuery函数:.addClass()
和.removeClass()
,以便动态应用CSS样式。
一个更完善的版本应该是这样的:
jQuery(function ($) {
var styleTag, textArea;
var kI;
styleTag = $("#dynamic-css");
textArea = $("#css-ta");
textArea.on('keyup', function () {
if (kI !== undefined) {
clearTimeout(kI);
}
kI = setTimeout(function() {
styleTag.html(textArea.val());
},1000);
});
});
这在keyup事件上放置了一个超时(keyup发生在keydown之后,防止有人重复按下一个键),在事件发生后触发15秒。每次事件发生,倒计时就会重置。如果倒计时结束,你的CSS会更新。
这样可以避免过多地重写样式块的内容。
相关文章:
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- 使用Javascript读取CSS文件并动态更改页面
- 使用css跨浏览器动态剪切多边形
- 使用AngularJS动态更改css属性
- 使用HTML或CSS动态调整徽标大小
- CSS - 动态创建的居中对齐下拉列表
- 如何在使用jquery / css动态显示周围元素的同时保持当前屏幕位置
- 调整大小时Javascript和CSS动态宽度浮动闪烁
- CSS动态三维旋转木马,z轴定位
- 如果我使用Javascript和CSS动态获取数据库的文本,如何将文本划分为列
- Css动态字体大小
- 是否有可能用JavaScript/CSS动态编辑图像,使其背景变得透明?
- 从网页中删除CSS(动态加载,编译,不链接标签)
- 如何在HTML/CSS动态页面中避免滚动条的偏移
- 基于Ajax的CSS——动态加载
- 如何使悬停在CSS动态
- JavaScript和CSS动态版本控制
- 如何使用CSS动态插入元素
- 如何使javascript和css动态
- Css动态设置数组中元素的大小