在使用Javascript的网页上禁用/启用CSS
Disable/Enable CSS on webpage using Javascript
根据这个页面,我能够删除所有的CSS预加载和添加到网页上使用。我想实现一个按钮系统,其中"onclick
"= enable/disable
网页CSS,甚至是我的web主机预加载的。我想消除样式标签,以防止我的网站用户滞后。我更喜欢使用我上面链接的脚本,除非有另一个更好的选择。是否有可能启用CSS onclick同一按钮禁用?如果不行,可以这么快完成吗?下面是首选脚本的示例:
if (disable) {
style = "disable";
} else {
location.reload();
}
首选脚本:
function removeStyles(el) {
el.removeAttribute('style');
if(el.childNodes.length > 0) {
for(var child in el.childNodes) {
/* filter element nodes only */
if(el.childNodes[child].nodeType == 1)
removeStyles(el.childNodes[child]);
}
}
}
removeStyles(document.body);
换个方法怎么样?首先添加一个名为'styled'的类到body中,例如
<body class="styled">
在你的CSS定义中使用它作为主选择器
<style>
.styled a { ... }
.styled h1 { .... }
</style>
,然后是一个示例jquery脚本切换类:
<script>
$(function() {
$('#myswitch').click(function() {
$('body').toggleClass('styled');
});
});
</script>
当class存在时,页面将被样式化,当class不存在时,页面将不被样式化。
当然可以有更好的方法,但这是我首先想到的
要删除元素上的所有样式,您可以执行
function removeStyles(el) {
el.style = {};
}
如果您想在页面上启用/禁用CSS,那么目标不仅仅是删除页面上的所有样式,而且还需要将它们保存在某个地方,以便当用户重新单击按钮时可以调用它们。我建议使用jQuery来帮助您完成此操作,可以通过以下方式完成:
var style_nodes = $('link[rel="stylesheet"], style');
style_nodes.remove();
$('*').each(function(num, obj) {
var style_string = $(obj).attr("style");
if (style_string) {
$(obj).data("style-string", style_string);
$(obj).attr("style", "");
}
});
现在您已经将样式表和样式DOM节点保存在style_nodes
中,并将实际的style
属性保存在该特定DOM节点的jQuery数据属性中。当您单击以将CSS添加回页面时,您可以执行以下操作:
$('head').append(style_nodes);
$('*').each(function(num, obj) {
if ($(obj).data("style-string"))
$(obj).attr("style", $(obj).data("style-string"));
});
看看这个我放在一起演示的JS提琴:https://jsfiddle.net/5krLn3w1/
使用JQuery,但我相信大多数框架应该给你类似的功能。
HTML:<h1>Hello World</h1>
<a href="#" id="turn_off">Turn off CSS</a>
<a href="#" id="turn_on">Turn on CSS</a>
JS:
$(document).ready(function() {
$('a#turn_off').click(function(evt) {
evt.preventDefault();
var css = $('head').find('style[type="text/css"]').add('link[rel="stylesheet"]');
$('head').data('css', css);
css.remove();
});
$('a#turn_on').click(function(evt) {
evt.preventDefault();
var css = $('head').data('css');
console.info(css);
if (css) {
$('head').append(css);
}
});
});
CSS: body {
color: #00F;
}
h1 {
font-size: 50px;
}
相关文章:
- CSS-如何定位内容数据标题
- 如何禁用和启用css规则
- 有没有一种方法可以将媒体打印css启用为普通视图
- 有没有计划在CSS中启用JavaScript
- 如何在 iPhone 上打开启用了 CSS 事件的 HTML 文件
- 如何在启用designMode的iframe中包装文本,必要时使用css和javascript
- 选中复选框时启用 html 单选按钮(基本 JS 或 CSS)
- 只允许启用HTTPS的网站使用我的javascript和css
- 如何在客户端(浏览器/CLI等)启用Javascript文件(如jQuery)和CSS文件的缓存
- 启用段落的背景色<p>当有一个带有CSS的引导按钮时
- 什么'如果您在服务器上启用Gzip,那么缩小JavaScript/CSS源代码的意义何在
- CSS按钮:悬停,禁用,然后用javascript重新启用
- JQuery按钮启用和禁用CSS功能点击
- jQuery hide(). slidedown()在启用CSS动画时不起作用
- JQuery启用按钮,如果所有复选框被选中,并添加css禁用按钮
- 在使用Javascript的网页上禁用/启用CSS
- 我可以调用功能时,按钮禁用和修改设置启用在检查元素的CSS样式在FF或Chrome
- 如何启用akamai缓存图像,css, js等
- 如何在Amazon Beanstalk和Tomcat上启用HTML/JavaScript/CSS的gzip
- 一个关于自动滚动(启用了css's overflow-y)效果的小难题