Javascript 如何创建DIV样式的切换器?
我想用JavaScript制作一个CSS样式的切换器,就像Digg在这里做的一样 我有一个div,我想根据主题选择改变div框的样式Javascript 如何创建DIV样式的切换器?,javascript,html,css,Javascript,Html,Css,我想用JavaScript制作一个CSS样式的切换器,就像Digg在这里做的一样 我有一个div,我想根据主题选择改变div框的样式 我不想使用jQuery,我想用纯JavaScript开发这段代码。其实很简单,用户选择一种颜色(#544856),然后使用onchange事件或类似事件执行以下操作: document.getElementById("myDiv").style.color = document.getElementById("myColorTextBox").
我不想使用jQuery,我想用纯JavaScript开发这段代码。其实很简单,用户选择一种颜色(#544856),然后使用onchange事件或类似事件执行以下操作:
document.getElementById("myDiv").style.color =
document.getElementById("myColorTextBox").value;
其实很简单,用户选择一种颜色(#544856),然后使用onchange事件或类似事件执行以下操作:
document.getElementById("myDiv").style.color =
document.getElementById("myColorTextBox").value;
最简单的方法是创建两个样式表,其中包含相同的类,但颜色不同等。然后允许用户在它们之间切换,下面是一个示例链接:
最简单的方法是创建两个样式表,其中包含相同的类,但颜色不同等。然后允许用户在它们之间切换,下面是一个示例链接:
检查源代码以及它如何随着主题的变化而变化,这真的很简单。Digg正在利用CSS的惊人之处,通过简单地更改元素的类来大幅更改内容。你所要做的就是:
<div id="theme_viewer">
<!-- HTML code for your widget/thing to be styled -->
</div>
然后,您的CSS样式表可以执行不同样式所要求的任何操作:
#theme_viewer.theme1 {
background-color: red;
}
#theme_viewer.theme2 {
background-color: blue;
}
#theme_viewer.theme3 {
background-color: black;
color: white;
}
#theme_viewer.theme4 {
background-color: orange;
}
正如J-p的评论和edeverett的回答中提到的,将事件内联不是一个好主意,因为我在本例中使用了它们(即,使用onclick
属性)。我这样做是为了简单,但这不是一个好主意。更好的方法是等待文档加载并使用Javascript动态附加事件处理程序。这被称为不引人注目的Javascript,它是一个好东西TM
以下良好实践的上例示例如下所示:
<ul id='theme_options'>
<li><a href="#" id='theme1'>theme 1</a></li>
<li><a href="#" id='theme2'>theme 2</a></li>
<li><a href="#" id='theme3'>theme 3</a></li>
<li><a href="#" id='theme4'>theme 4</a></li>
</ul>
要添加事件处理程序,请执行以下操作:
addEvent(window, 'load', function() {
var opts = document.getElementById('theme_options');
var links = opts.getElementsByTagName('a');
for(var x = 0; x < links.length; x++) {
addEvent(links[x], 'click', function() {
switchTheme(links[x].id);
});
}
});
检查源代码以及它如何随着主题的改变而改变,这真的很简单。Digg正在利用CSS的惊人之处,通过简单地更改元素的类来大幅更改内容。你所要做的就是:
<div id="theme_viewer">
<!-- HTML code for your widget/thing to be styled -->
</div>
然后,您的CSS样式表可以执行不同样式所要求的任何操作:
#theme_viewer.theme1 {
background-color: red;
}
#theme_viewer.theme2 {
background-color: blue;
}
#theme_viewer.theme3 {
background-color: black;
color: white;
}
#theme_viewer.theme4 {
background-color: orange;
}
正如J-p的评论和edeverett的回答中提到的,将事件内联不是一个好主意,因为我在本例中使用了它们(即,使用onclick
属性)。我这样做是为了简单,但这不是一个好主意。更好的方法是等待文档加载并使用Javascript动态附加事件处理程序。这被称为不引人注目的Javascript,它是一个好东西TM
以下良好实践的上例示例如下所示:
<ul id='theme_options'>
<li><a href="#" id='theme1'>theme 1</a></li>
<li><a href="#" id='theme2'>theme 2</a></li>
<li><a href="#" id='theme3'>theme 3</a></li>
<li><a href="#" id='theme4'>theme 4</a></li>
</ul>
要添加事件处理程序,请执行以下操作:
addEvent(window, 'load', function() {
var opts = document.getElementById('theme_options');
var links = opts.getElementsByTagName('a');
for(var x = 0; x < links.length; x++) {
addEvent(links[x], 'click', function() {
switchTheme(links[x].id);
});
}
});
这可能会对您有所帮助:“
因此,当用户单击主题更改按钮时,onclick事件将加载一个外部CSS文件
不过,使用jQuery可能更容易/更快。您还需要存储一个变量,以指示用户选择了不同的主题。这可能会对您有所帮助:“
因此,当用户单击主题更改按钮时,onclick事件将加载一个外部CSS文件
不过,使用jQuery可能更容易/更快。您还需要存储一个变量,以指示用户选择了不同的主题。这有三个部分: 1)div本身 对于所有样式,这几乎保持不变。Javascript只会更改class属性以更改CSS应用于div的样式。创建div,使其在创建页面时具有默认样式,并添加一个id,以便我们可以在以后使用Javascript轻松获得它:
<div class="style1" id="styleBox"></div>
然后为各个样式设置规则:
.style1{背景色:浅绿色;}
.style2{背景色:黄色;}
.style3{背景色:粉红色;}
请注意,这些都在同一个样式表中,这将使其更易于管理
3)Javascript
这就是添加行为的地方。您还需要单击一些链接,理想情况下,这些链接应该使用JS创建,因为如果没有JS,用户将无法使用它们-但现在让我们假设它们位于页面中:
<div id="styleMenu">
<a href="#" id="style1" >Style 1</a>
<a href="#" id="style2" >Style 2</a>
<a href="#" id="style3" >Style 3</a>
</div>
您需要有一个在页面加载时运行的JS函数(google“javascript onload函数”)。在这个函数中,您需要获取对包含链接的div的引用,并在中添加onClick事件。当点击链接时,此事件将被触发-这称为事件委派(google it)。在这个事件函数中,您需要使用查找已单击的链接,然后将样式化div的className属性设置为已单击链接的id
我将把编写JS留给您,但是如果您使用这种稍微长一点的方式来做事情,而不是使用内联样式或javascript,您将HTML、CSS和javascript完全分离,这将使维护一切变得更加容易。这有三个部分: 1)div本身 对于所有样式,这几乎保持不变。Javascript只会更改class属性以更改CSS应用于div的样式。创建div,使其在创建页面时具有默认样式,并添加一个id,以便我们可以在以后使用Javascript轻松获得它:
<div class="style1" id="styleBox"></div>
然后为各个样式设置规则:
.style1{背景色:浅绿色;}
.style2{背景色:黄色;}
.style3{背景色:粉红色;}
请注意,这些都在同一个样式表中,这将使其更易于管理
3)Javascript
这就是添加行为的地方。您还需要单击一些链接,理想情况下,这些链接应该使用JS创建,因为如果没有JS,用户将无法使用它们-但现在让我们假设它们位于页面中:
<div id="styleMenu">
<a href="#" id="style1" >Style 1</a>
<a href="#" id="style2" >Style 2</a>
<a href="#" id="style3" >Style 3</a>
</div>
您需要有一个在页面加载时运行的JS函数(google“javascript onload函数”)。在这个函数中,您需要获取对包含