利器:
  君欲善其事须先利其器,好吧因为我们的时间比较紧迫,只有六天而已,那么六天的时间用死记硬背的方式学会Mt犹如天方夜谭,因此我们需要借鉴一下Editplus的素材栏帮我们记忆就好了,当我们需要用到什么函数的时候直接从素材里找一下双击就行了.
Editplus的素材是允许我们自己进行配置的,下边的文件是我已经配置好的Mt1.4的素材文件,大家可以直接下载,然后将此文件放入Editplus的素材文件夹底下就行了.
Mootools1.4.zip

看我的操作动画:

看完动画之后相信大家自己配置editplus的素材已经没什么问题了吧,这个素材文件是我编辑的,如果大家感觉有什么错误或遗漏之处,可以自己使用editplus修改一下这个文件即可,修改完保存之后最好重新开启一下editplus这个软件.

在这个素材文件里我把Mt1.4的核心方法都放进来了,另外简单放了几个插件的用法,这个素材的内容即为我们接下来需要学习的内容.

Dom选择器:
Mt的选择器基本可以理解为两类:这一点和jq不同(jq是$打天下),这两类分别是:
$:id选择器(只能针对id选择).
$$:混合选择器(和jq的$是一样的).

我们先看一下id选择器,在mt里$和document.id都能根据id选择节点,通常$是最常用的.我们来看个例子:

<div id='a'></div>
$('a')...

注意:这种用法不需要用#号.

$$和jq的$是一样的,可以混合选择,但是通常我很少在用这个,虽然它功能很强,但是与id选择器比起来实在算不上高效,当然了Mt有办法取代它,别着急我们一会再讲,我们先看$$的例子:

<div id='a' class='a1'></div>
<div id='b'><b>a</b></div>
<div id='c'></div> $$('#a')...//根据id选择,需要#号
$$('.a1')...//根据class选择
$$('div.a1')...//双重条件
$$('#b b')...//选择<b>a</b>
$$('#a,#b,#c')...//选择多个

.....更多请看素材文件内的selector部分

用过jq的朋友应该知道,在jq内$选择器如果写的太复杂,那么效率是很低的,同样,Mt的$$和jq的$神似,那么我们有没有办法来改善$$的效率呢,当然是有的,看下边:

getElement:从上级节点开始匹配一个下级节点
getElements:从上级节点开始匹配多个下级节点(类似jq的find)
getElementById:从上级节点根据id开始匹配一个下级节点

.....更多请看素材文件内的selector部分

好了,那我简单举几个例子给大家阐述一下他是如何取代$$的.

$(document.body).getElement('div');//在当前页面内找寻第一个div
$('a').getElements('div');//在id='a'的容器里找寻所有的div
$('a').getElementById('b');//在id='a'的容器里找寻id='b'的节点

....还有更多的方式,大家可以看素材文件内的selector部分

这种迭代匹配的方式比复杂的css选择器语句的效率要高.所以如果大家很在乎效率,那么我建议多使用$和迭代找寻方式,尽量少用$$,但是如果您已经习惯了jq的方式且不在乎效率,那么你就直接用$$就行了.$$和jq的$用法是完全相同的.

$$一些比较复杂的匹配方式在素材文件里都有,大家可以看看,如果记不住也没关系,只要知道哪些能匹配哪些不能匹配,在实际应用中直接双击素材添加就行了.

完整的范例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>http://hi.baidu.com/see7di/home</title>
<script src="https://ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js"></script>
</head> <body id='a'>
<h2 class='a'>Single images</h2>
<p>
<a class='b' title="T1" href="http://www.digitalia.be/images/25.jpg"><img src="img/map1.png"></a>
<a class='c' title="B1" href="http://www.digitalia.be/images/24.jpg"><img src="img/map2.png"></a>
</p>
<script type='text/javascript'>
alert($('a').get('html'));
alert($$('.a').get('tag'));
alert($$('h2.a').get('text'));
$$('h2.a').set('text','重新设置一下内容!');
alert($$('h2.a').get('text')); alert($$('.b').get('href')+'\n'+$$('.b').getProperty('href'));
$$('.b').setProperty('href','#')
alert($$('.b').get('href')+'\n'+$$('.b').getProperty('href')); console.log('此内容输出值Firebug的控制台!');
</script>
</body>
</html>

下边是我找来的一篇关于css选择器的文章,对我们学习选择器很有帮助。

 1. *
* {margin: 0; padding: 0;}
星状选择符会在页面上的每一个元素上起作用。web设计者经常用它将页面中所有元素的margin和padding设置为0。
*选择符也可以在子选择器中使用。
#container * { border: 1px solid black;}
上面的代码中会应用于id为container元素的所有子元素中。
除非必要,我不建议在页面中过的的使用星状选择符,因为他的作用域太大,相当耗浏览器资源。
兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera
2. #X
#container {width: 960px;margin: auto; }
井号作用域有相应id的元素。id是我们最常用的css选择器之一。id选择器的优势是精准,高优先级(优先级基数为100,远高于class的10),作为javascript脚本钩子的不二选择,同样缺点也很明显优先级过高,重用性差,所以在使用id选择器前,我们最好问下自己,真的到了非用id选择器的地步?
兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera
3. .X
.error {color: red;}
这是一个class(类)选择器。class选择器与id选择器的不同是class选择器能作用于期望样式化的一组元素。
兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera
4. X Y
li a { text-decoration: none;}
这也是我们最常用的一种选择器——后代选择器。用于选取X元素下子元素Y,要留意的点是,这种方式的选择器将选取其下所有匹配的子元素,无视层级,所以有的情况是不宜使用的,比如上述的代码去掉li下的所有a的下划线,但li里面还有个ul,我不希望ul下的li的a去掉下划线。使用此后代选择器的时候要考虑是否希望某样式对所有子孙元素都起作用。这种后代选择器还有个作用,就是创建类似命名空间的作用。比如上述代码样式的作用域明显为li。
兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera
5. X
a { color: red; }
ul { margin-left: 0; }
标签选择器。使用标签选择器作用于作用域范围内的所有对应标签。优先级仅仅比*高。
兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera
6. X:visited和X:link
a:link { color: red; }
a:visted { color: purple; }
使用:link伪类作用于未点击过的链接标签。:hover伪类作用于点击过的链接。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
7. X+Y
ul + p {color: red;}
相邻选择器,上述代码中就会匹配在ul后面的第一个p,将段落内的文字颜色设置为红色。(只匹配第一个元素)
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
8. X>Y
div#container > ul { border: 1px solid black;}
<div id=”container”>
<ul>
<li> List Item
<ul>
<li> Child </li>
</ul>
</li>
<li> List Item </li>
<li> List Item </li>
<li> List Item </li>
</ul>
</div>
子选择器。与后代选择器X Y不同的是,子选择器只对X下的直接子级Y起作用。在上面的css和html例子中,div#container>ul仅对container中最近一级的ul起作用。从理论上来讲X > Y是值得提倡选择器,可惜IE6不支持。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
9. X ~ Y
ul ~ p { color: red;}
相邻选择器,与前面提到的X+Y不同的是,X~Y匹配与X相同级别的所有Y元素,而X+Y只匹配第一个。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
10. X[title]
a[title] { color: green;}
属性选择器。比如上述代码匹配的是带有title属性的链接元素。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
11. X[title="foo"]
a[href="http://blog.moocss.com"] { color: #1f6053; }
属性选择器。 上面的代码匹配所有拥有href属性,且href为http://blog.moocss.com的所有链接。
这个功能很好,但是多少又有些局限。如果我们希望匹配href包含css9.net的所有链接该怎么做呢?看下一个选择器。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
12. X[href*="moocss"]
a[href*="moocss"] {color: #1f6053;}
属性选择器。正如我们想要的,上面代码匹配的是href中包含”http://blog.moocss.com“的所有链接。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
13. X[href="http"]
a[href="http"] {background: url(path/to/external/icon.png) no-repeat; padding-left: 10px;}
属性选择器。上面代码匹配的是href中所有以http开头的链接。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
14. X[href$=".jpg"]
a[href="http"] { background: url(path/to/external/icon.png) no-repeat;padding-left: 10px;}
属性选择器。在属性选择器中使用$,用于匹配结尾为特定字符串的元素。在上面代码中匹配的是所有链接到扩展名为.jpg图片的链接。(注意,这里仅仅是.jpg图片,如果要作用于所有图片链接该怎么做呢,看下一个选择器。)
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
15. X[data-*="foo"]
在上一个选择器中提到如何匹配所有图片链接。如果使用X[href$=".jpg"]实现,需要这样做:
a[href$=".jpg"],
a[href$=".jpeg"],
a[href$=".png"],
a[href$=".gif"] {
color: red;
}
看上去比较麻烦。另一个解决办法是为所有的图片链接加一个特定的属性,例如‘data-file’
html代码
图片链接
css代码如下:
a[data-filetype="image"] {
color: red;
}
这样所有链接到图片的链接字体颜色为红色。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
16. X[foo~="bar"]
属性选择器。属性选择器中的波浪线符号可以让我们匹配属性值中用空格分隔的多个值中的一个。看下面例子:
html代码
<a href=”path/to/image.jpg” data-info=”external image”> Click Me, Fool </a>
css代码
a[data-info~="external"] {
color: red;
}
a[data-info~="image"] {
border: 1px solid black;
}
在上面例子中,匹配data-info属性中包含“external”链接的字体颜色为红色。匹配data-info属性中包含“image”的链接设置黑色边框。
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
17. X:checked
checked伪类用来匹配处于选定状态的界面元素,如radio、checkbox。
input[type=radio]:checked {
border: 1px solid black;
}
上面代码中匹配的是所有处于选定状态的单选radio,设置1px的黑色边框。
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera
18. X:after和X:before
这两个伪类与content结合用于在元素的前面或者后面追加内容,看一个简单的例子:
h1:after {content:url(/i/logo.gif)}
上面的代码实现了在h1标题的后面显示一张图片。
我们也经常用它来实现清除浮动,写法如下:
.clearfix:after {
content: “”;
display: block;
clear: both;
visibility: hidden;
font-size: 0;
height: 0;
}
.clearfix {
*zoom:1
}
19. X:hover
div:hover {
background: #e3e3e3;
}
:hover伪类设定当鼠标划过时元素的样式。上面代码中设定了div划过时的背景色。
需要注意的是,在ie 6中,:hover只能用于链接元素。
这里分享一个经验,在设定链接划过时出现下滑线时,使用border-bottom会比text-decoration显得更漂亮些。代码如下:
a:hover {
border-bottom: 1px solid black;
}
兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera
20. X:not(selector)
div:not(#container) {
color: blue;
}
否定伪类选择器用来在匹配元素时排除某些元素。在上面的例子中,设定除了id为container的div元素字体颜色为blue。
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera
21. X::pseudoElement
::伪对象用于给元素片段添加样式。比如一个段落的第一个字母或者第一行。需要注意的是,这个::伪对象只能用于块状元素。
下面的代码设定了段落中第一个字母的样式:
p::first-letter {
float: left;
font-size: 2em;
font-weight: bold;
font-family: cursive;
padding-right: 2px;
}
下面的代码中设定了段落中第一行的样式:
p::first-line {
font-weight: bold;
font-size: 1.2em;
}
兼容浏览器:IE6+、Firefox、Chrome、Safari、Opera
(IE6竟然支持,有些意外啊。)
22. X:nth-child(n)
li:nth-child(3) {
color: red;
}
这个伪类用于设定一个序列元素(比如li、tr)中的第n个元素(从1开始算起)的样式。在上面例子中,设定第三个列表元素li的字体颜色为红色。
看一个更灵活的用法,在下面例子中设定第偶数个元素的样式,可以用它来实现隔行换色:
tr:nth-child(2n) {
background-color: gray;
}
兼容浏览器:IE9+、Firefox、Chrome、Safari
23. X:nth-last-child(n)
li:nth-last-child(2) {
color: red;
}
与X:nth-child(n)功能类似,不同的是它从一个序列的最后一个元素开始算起。上面例子中设定倒数第二个列表元素的字体颜色。
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera
24. X:nth-of-type(n)
ul:nth-of-type(3) {
border: 1px solid black;
}
与X:nth-child(n)功能类似,不同的是它匹配的不是某个序列元素,而是元素类型。例如上面的代码设置页面中出现的第三个无序列表ul的边框。
兼容浏览器:IE9+、Firefox、Chrome、Safari
25. X:nth-last-of-type(n)
ul:nth-last-of-type(3) {
border: 1px solid black;
}
与X:nth-of-type(n)功能类似,不同的是它从元素最后一次出现开始算起。上面例子中设定倒数第三个无序列表的边框。
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera
26. X:first-child
:first-child伪类用于匹配一个序列的第一个元素。我们经常用它来实现一个序列的第一个元素或最后一个元素的上(下)边框,如:
ul:nth-last-of-type(3) {
border: 1px solid black;
}
兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera
27. X:last-child
ul > li:last-child {
border-bottom:none;
}
与:first-child类似,它匹配的是序列中的最后一个元素。
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera
28. X:only-child
div p:only-child {
color: red;
}
这个伪类用的比较少。在上面例子中匹配的是div下有且仅有一个的p,也就是说,如果div内有多个p,将不匹配。
<div><p> My paragraph here. </p></div>
<div>
<p> Two paragraphs total. </p>
<p> Two paragraphs total. </p>
</div>
在上面代码中第一个div中的段落p将会被匹配,而第二个div中的p则不会。
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera
29. X:only-of-type
li:only-of-type {
font-weight: bold;
}
这个伪类匹配的是,在它上级容器下只有它一个子元素,它没有邻居元素。例如上面代码匹配仅有一个列表项的列表元素。
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera
30. X:first-of-type
:first-of-type伪类与:nth-of-type(1)效果相同,匹配出现的第一个元素。我们来看个例子:
<div>
<p> My paragraph here. </p>
<ul>
<li> List Item 1 </li>
<li> List Item 2 </li>
</ul>
<ul>
<li> List Item 3 </li>
<li> List Item 4 </li>
</ul>
</div>
在上面的html代码中,如果我们希望仅匹配List Item 2列表项该如何做呢:
方案一:
ul:first-of-type > li:nth-child(2) {
font-weight: bold;
}
p + ul li:last-child {
font-weight: bold;
}
方案三:
ul:first-of-type li:nth-last-child(1) {
font-weight: bold;
}
兼容浏览器:IE9+、Firefox、Chrome、Safari、Opera。

总结:
    如果你正在使用老版本的浏览器,如IE 6,在使用上面css选择器时一定要注意它是否兼容。不过,这不应成为阻止我们学习使用它的理由。在设计时,你可以参考浏览器兼容性列表,也可以通过脚本手段让老版本的浏览器也支持它们。

一周学会Mootools 1.4中文教程:(1)Dom选择器的更多相关文章

  1. 一周学会Mootools 1.4中文教程:(7)汇总收尾

    转眼之间已经第七课了,这也将成为最后一课,如果这7课下来您感觉水平没有达到预想的水平,没关系您可以继续关注本站的博文,我会陆续发一些类似的文章帮您提升水平,另外我最近打算和群里的几个Mootools爱 ...

  2. 一周学会Mootools 1.4中文教程:序论

    刚才发了几篇Mootools(以后直接简称Moo或Mt,看到这两个名字的时候不要感到奇怪),有一位热心的朋友"追杀"告诉我说现在已经出到1.4了,就不要再纠结于1.2了,想象一下有 ...

  3. 一周学会Mootools 1.4中文教程:(6)动画

    先看一下动画的参数设置: 参数: fps - (number:默认是50) 每秒的帧数. unit - (string:默认是 false) 单位,可为 'px','em',或 '%'. link - ...

  4. 一周学会Mootools 1.4中文教程:(5)Ajax

    ajax在我们前台的开发中是非常重要的,所以我们单独拿出一节课来讲述,首先我们看一下mootools的ajax构成 语法: var myRequest=new Request([参数]); 参数: u ...

  5. 一周学会Mootools 1.4中文教程:(3)事件

    今天我們講解一下mt的事件部分,对于事件的讲解主要包含三部分,分别是:绑定,移除,和触发,我们首先来看一个例子 //jquery的事件绑定方式$('a').click(function){ alert ...

  6. 一周学会Mootools 1.4中文教程:(4)类型

    Mootools的类型主要包含下边几部分:String:字符串;Number:数字;Array:数组;Object:对象;Json:;Cookie:. 这也是我们今天的讲述重点.每一种数据类型Mt都为 ...

  7. 一周学会Mootools 1.4中文教程:(2)函数

    温故: 透过对上一节课的学习,相信大家对mt的选择器应该有了一定的认识了,我再放几个小示例让大家对选择器的复杂应用有所了解: <!DOCTYPE html PUBLIC "-//W3C ...

  8. 一周学会go语言并应用 by王奇疏

    <一周学会go语言并应用> by王奇疏 ( 欢迎加入go语言群: 218160862 , 群内有实践) 点击加入 零.安装go语言,配置环境及IDE 这部分内容不多,请参考我的这篇安装环境 ...

  9. webstorm的中文教程和技巧分享

    webstorm是一款前端javascript开发编辑的神器,此文介绍webstorm的中文教程和技巧分享.webstorm8.0.3中文汉化版下载:百度网盘下载:http://pan.baidu.c ...

随机推荐

  1. Php开源项目大全

    WordPress  [PHP开源 博客Blog] WordPress是最热门的开源个人信息发布系统(Blog)之一,基于PHP+MySQL构建.WordPress提供的功能包括: 1.文章发布.分类 ...

  2. UITextField总结--博主总结的真好

    忍不住copy过来http://www.cnblogs.com/wengzilin/archive/2012/03/13/2393985.html 还有些不错的博客推荐给大家http://blog.c ...

  3. js操作cookie,js判断浏览器属性,

    在默认情况下,只有设置cookie的网页才能读取该cookie.如果想让一个页面读取另一个页面设置的cookie,必须设置cookie的路径. http://www.jb51.net/article/ ...

  4. 复习-C语言内嵌汇编-初级(2)

    汇编取出内存中的值 # include <stdio.h> int main() { ; ; int *p = &i; //ret = *p; __asm__( "ldr ...

  5. FAQ: Python中if __name__ == '__main__':作用

    #hello.pydef sayHello(): str="hello" print(str); if __name__ == "__main__": prin ...

  6. windows环境中mysql忘记root密码的解决办法

    原文地址:http://www.cnblogs.com/linuxnotes/archive/2013/03/09/2951101.html windows下重置Mysql Root密码的方法mysq ...

  7. IE9下报错,错误: “JSON”未定义

    今天在公司运行的代码好好的,但是拿回家里以后就报错了 结果是IE9,没有设为兼容模式,唉,微软导出都是坑啊.

  8. cygwin在Windows8.1中设置ssh的问题解决

    为了在Windows 8.1上直接使用Linux环境和hadoop开发,装了cygwin,同时设置ssh无密码登录.   但正常ssh-keygen后复制到authorised_keys后登录出现提示 ...

  9. Cocos2d—X游戏开发之CCTableView详解(十一)

    本来很早就想写关于CCTableView的文章,但是在基本功能实现之后呢,项目需求增加导致对这个控件的研究必须更加深入一点. 好的,现在开始介绍一下这个控件,在Cocos2d—X引擎中,这是一个仿制i ...

  10. Python入门-函数的使用到程序的公布安装

    Python入门-函数的使用到Python的公布安装 本文主要适合有一定编程经验,至少掌握一门编程语言的人查看. 文中样例大多都是简单到认识英文单词就能看懂的水平,主要讲的是Python的总体使用方法 ...