如何使用多个不断变化的样式表在网站上制作主题
How do you make themes on a website using multiple changing stylesheets?
我有一个我从零开始制作的Github Pages网站。我想让主题,用户可以选择从网站上的单选按钮。所以,我做了两个不同的CSS样式表,分别叫darkTheme.css和lightTheme.css。通常,如果我只有一个样式表,我可以在头部正常链接它。在我的例子中有2个。我有两个主要问题。
<input name="theme" value="darkTheme" id="darkTheme" type="radio" checked/>
<p>Dark</p>
<br>
<input name="theme" value="darkTheme" id="darkTheme" type="radio" />
<p>Dark</p>
所以,我希望主题是黑暗的,如果一个变量叫做theme = "dark";
,主题变成黑暗时,第一个单选按钮被选中。反之亦然
尝试使用其他样式表。
<link rel="stylesheet" href="theme1.css" />
<link rel="alternate stylesheet" href="theme2.css" />
样式表和备选样式表之间的切换
与其物理地从头部交换CSS样式表,为什么不为样式表中的每个主题创建一个全局CSS选择器呢?
你可以在单选按钮上使用onClick或onChange事件来知道它们何时被更改。
你可以使用jQuery的addClass和removeClass函数来改变需要重新设计样式的最上层元素的类(就嵌套而言),在我的例子中,我使用body标签。这将允许动态更改CSS。
$(document).ready(function() {
$('input[type=radio][name=theme]').change(function() {
if (this.value == 'darkTheme') {
$('body').removeClass('light');
$('body').addClass('dark');
}
else if (this.value == 'lightTheme') {
$('body').removeClass('dark');
$('body').addClass('light');
}
});
});
当您使用SCSS或SASS进行嵌套时,样式化特别容易:
.dark {
h1 {
color: black;
}
/* Dark Styles */
}
.light {
h1 {
color: grey;
}
/* Light Styles */
}
但是标准的CSS也可以:
.dark h1 {
color: black;
}
.light h1 {
color: grey;
}
一旦你改变了DOM元素上的类,浏览器就会触发一个渲染,你所有的主题样式就会下降并生效。
这项技术还允许你自由地把所有的选择器的东西为每个主题在自己的css文件(dark.css和light.css),然后你可以简单地导入在头部,而不是交换他们。
头部的所有样式表编译成一组浏览器的样式。只有当正确的类选择器在body标签上时(在我的例子中),每个样式表中的样式才会被启用。
相关文章:
- Javascript+动态菜单+当前链接样式(CSS)+基于PHP的网站
- 禁用移动样式表以加载整个网站
- JavaScript和CSS样式不适用于我的“;谷歌网站”;页
- 从引导程序2开始=>引导程序3..不破坏网站样式
- 如何为正在查看的网站动态更改css样式表
- 压缩脚本和样式,并将所有js和样式引用合并为单个引用,以优化网站性能
- 更改网站的样式代码以允许用户更改大小和样式不起作用
- 如何在运行时应用外部网站的样式
- 具有巨大内联样式的网站
- 如果在移动设备上查看网站,请更改样式
- 将自定义标记添加到自定义样式的 Google Maps API v3 for Wordpress 网站
- 网站加载CSS / Jquery样式缓慢
- 沙盒,用于保护允许用户上传样式的网站
- 在WordPress中,获取样式表中的网站URL
- 添加特定的CSS样式's仅当网站在iframe或lightbox中查看时
- 太多的小数+样式不可见的网站
- 如果用户使用带有锚/哈希的链接访问网站,我如何将样式应用于元素
- 动态样式表语言不工作后发布网站在线
- 使用Grunt &在大型Magento网站上删除未使用的css样式
- 可以bootstrap用于网站插件,而不与网站样式和js冲突