歡迎開始這一系列的教程的第七講。今天,我們來看一下如何通過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部分。