欢迎开始这一系列的教程的第七讲。今天,我们来看一下如何通过mootools 1.2和我们以前几讲中的内容来操作样式,这将给你在ui上带来很大的控制权。处理样式非常简单,不过今天我们要做一些调整。例如,我们要介绍键值对(key-value pair)对象。我们也会讲到在domready之外来传递变量,就像我们在关于函数的那一讲中学到的一样。从这里开始,我们会开始慢慢提高难度,介绍一些必要的编程概念。如果你是javascript新手或者第一次开始学mootools,请确保你在明白了前面的教程,你可以随意地问我任何问题。
基本方法
.setstyle();
这个函数可以允许你设置一个元素的样式属性。我们在前面的一些例子中已经使用过了。你要做的就是把它放在你的 选择器之后,那么它将改变一个元素或者多个元素的样式属性。
参考代码: [复制代码] [保存代码]
- $('body_wrap').setstyle('background-color', '#eeeeee');
- $$('.class_name').setstyle('background-color', '#eeeeee');
参考代码: [复制代码] [保存代码]
- <div id="body_wrap">
- <div class="class_name"></div>
- <div class="class_name"></div>
- <div class="class_name"></div>
- <div class="class_name"></div>
- </div>
.getstyle();
同样,这个方法就像它的字面意思一样。.getstyle();将返回一个元素的一个属性值。
参考代码: [复制代码] [保存代码]
- var stylevalue = $('body_wrap').getstyle('background-color');
如果我们在上面的例子中运行这个代码,那么它将返回“#eeeeee”给变量stylevalue。
设置和获取多个样式表属性
.setstyles();
.setstyles();就像你所想象的那样,可以让你一次给一个元素或者一个元素数组设置多个属性值。为了能够同时设置多个样式表属性值,.setstyles();的语法略有一点不同。
参考代码: [复制代码] [保存代码]
- $('body_wrap').setstyles({
-
- 'width': '1000px',
- 'height': '1000px',
-
-
- 'background-color': '#eeeeee'
- });
注意:实际上,属性选择器也可以不需要单引号,除非属性名中有连接符“-”,比如在“background-color”中,为了保持简单,给每个属性选择器都加上单引号更容易一些。
同时也要注意:属性值可能更灵活多变一些(比如“100px”或者“#eeeeee”)。除了字符串(一个只有字母的串,我们会在以后的教程中更深入地讲解这个),你也可以传入数字(这可能在大多数情况下会被解释为px)或者变量而不需要引号:
参考代码: [复制代码] [保存代码]
- var firstbackgroundcolor = '#eeeeee';
-
- var backgroundcolor = firstbackgroundcolor;
-
- var divwidth = 500;
-
- $('body_wrap').setstyles({
-
- 'width': divwidth,
-
- 'height': 1000,
-
- 'background-color': backgroundcolor,
-
- 'color': 'black'
- });
.getstyles();
这个方法可以让你一次获得多个样式属性。这个和我们看到的上面的略有一些不同,因为它包含了多个数据集,每个数据集有一个键(key,属性名)和一个值(value,属性值)。这个数据集叫做对象,.getstyles();方法可以非常容易地把多个属性值放入这些对象中,并可以很简单地把它们取回来。
参考代码: [复制代码] [保存代码]
- var bodystyles = $('body_wrap').getstyles('width', 'height', 'background-color');
-
- var bgstyle = bodystyles['background-color'];
如果在我们的css文件中有这样的样式定义:
参考代码: [复制代码] [保存代码]
- #body_wrap {
- width: 1000px;
- height: 1000px;
- background-color: #eeeeee;
- }
那么变量bgstyle将包含值“#eeeeee”。
注意:如果你要从你的样式表对象中取得一个单独的属性,首先取得一个对象变量(在这个例子中是“bodystyles”),然后使用方括号和单引号(['']),最后填入属性名key(如width或者background-color)。就这么简单!
代码示例
在这个例子中,我们将使用我们刚才在上面学到的一些方法来获取和设置样式。在注意样式属性操作用法的同时,也要特别注意它本身的结构。为了把我们的函数从domready中独立出来,我们需要把那些变量传递到domready事件的函数中。我们通过给domready里面的函数传递一个参数来实现这个。注意点击(click)事件使用了匿名方法——这可以让我们从domready事件中把变量传递到外面的函数中。如果你第一遍没有看懂,请不要着急,下面的例子可能会让这些更清楚更明白一些:
参考代码: [复制代码] [保存代码]
-
- var seebgcolor = function(bgcolor) {
- alert(bgcolor);
- }
-
- var seebordercolor = function(bordercolor) {
- alert(bordercolor);
- }
-
- var seedivwidth = function(playdiv) {
-
-
-
-
-
- var currentdivwidth = playdiv.getstyle('width');
- alert(currentdivwidth);
- }
-
- var seedivheight = function(playdiv) {
- var currentdivheight = playdiv.getstyle('height');
- alert(currentdivheight);
- }
-
- var setdivwidth = function(playdiv) {
- playdiv.setstyle('width', '50px');
- }
-
- var setdivheight = function(playdiv) {
- playdiv.setstyle('height', '50px');
- }
-
- var resetsize = function(foo) {
- foo.setstyles({
- 'height': 200,
- 'width': 200
- });
- }
-
- window.addevent('domready', function() {
-
- var playdiv = $('playstyles');
-
-
- var bodystyles = playdiv.getstyles('background-color', 'border-bottom-color');
-
-
-
- var bgcolor = bodystyles['background-color'];
-
-
- $('bgcolor').addevent('click', function(){
- seebgcolor(bgcolor);
- });
-
- $('border_color').addevent('click', function(){
-
-
- seebordercolor(bodystyles['border-bottom-color']);
- });
-
- $('div_width').addevent('click', function(){
- seedivwidth(playdiv);
- });
-
- $('div_height').addevent('click', function(){
- seedivheight(playdiv);
- });
-
- $('set_width').addevent('click', function(){
- setdivwidth(playdiv);
- });
-
- $('set_height').addevent('click', function(){
- setdivheight(playdiv);
- });
-
- $('reset').addevent('click', function(){
- resetsize(playdiv);
- });
- });
这里是html代码:
参考代码: [复制代码] [保存代码]
- <div id="playstyles"> </div>
- <br />
- <button id="bgcolor">see background-color</button>
- <button id="border_color">see border-bottom-color</button><br /><br />
- <button id="div_width">see width</button>
- <button id="div_height">see height</button><br /><br />
- <button id="set_width">set weight to 50px</button>
- <button id="set_height">set height to 50px</button><br /><br />
- <button id="reset">reset size</button>
这里是css代码
参考代码: [复制代码] [保存代码]
- #playstyles {
- width: 200px
- height: 200px
- background-color: #eeeeee
- border: 3px solid #dd97a1
- }
更多学习...
下载一个包含你开始所需要的所用东西的zip包
包含mootools 1.2核心库,一个外部javascript文件,一个简单的html页面和一个css文件。
更多关于样式表的内容
要学习更多关于样式表的内容,请查阅mootools文档中的element.style部分。