1 一、CSS3选择器
2 1、CSS3基本选择器
3 类型
4
5 语法
6
7 功能描述
8
9 标签选择器
10
11 P{font-size:16px}
12
13 使用HTML中的标签作为相应的选择器的名称,直接设置页面中的标签样式
14
15 类选择器
16
17 .class{font-size:16px}
18
19 最常用的选择器,样式一样的情况可以公用一个类名
20
21 ID选择器
22
23 #id{font-size:16px}
24
25 只能在页面中使用一次,同一个id属性在同一个页面中只能使用一次
26
27 基本选择器的优先级: ID选择器>class类选择器>标签选择器 ;
28
29 CSS选择器的命名规范:a、使用英文字母小写 b、不要和Id选择器同名 c、使用具有语义化的单词命名 d、长名称或者词组可以使用驼峰命名方式命名选择器;
30
31 2、CSS3高级选择器
32 (1)层次选择器
33
34 层次选择器是通过HTML的文档对象模型(Document Object Model,DOM)元素间的层次来选择元素的,其主要的层次关系包括后代、父子、相邻兄弟和通用兄弟等几种关系。
35
36
37
38 选择器
39
40 类 型
41
42 功能描述
43
44 E F
45
46 后代选择器
47
48 选择匹配的F元素,且匹配的F被包含在匹配的E元素内
49
50 E>F
51
52 子选择器
53
54 选择匹配的F元素,且3匹配的F元素是匹配的E元素的子元素
55
56 E+F
57
58 相邻兄弟选择器
59
60 选择匹配的F元素,且匹配的F元素紧位于匹配的E元素的后面
61
62 E~F
63
64 通用兄弟选择器
65
66 选择匹配的F元素,且位于匹配的E元素后的所有匹配的F元素
67
68 注意:a、后代选择器两个选择符之间必须要以空格隔开,中间不能有任何其他的符号插入。
69
70 b、通用兄弟选择器选中的是E元素相邻的后面兄弟元素F,是一个或多个元素;相邻兄弟选择器选中的仅是与E元素相邻并且紧挨的兄弟元素F,其中选中的仅是一个元素。
71
72 (2)属性选择器
73
74 在HTML中,可以给元素设置各种各样的属性,如 id、class、title、href等。通过各种各样的属性可以选择到元素并为其设置样式;
75
76 属性选择器
77
78 功能描述
79
80 E[attr]
81
82 选择匹配具有属性attr的E元素
83
84 例:a[id] { background:yellow; }
85
86
87
88 E[attr=val]
89
90 选择匹配具有属性attr的E元素,并且属性值为val(其中val区分大小写)
91
92 例:a[id=”first”] { background: red; }
93
94 <a href=”http://abcd.doc” id=”first” class=”links item”>10</a>
95
96 E[attr^=val]
97
98 选择匹配元素E,且E元素定义了属性attr,其属性值是以val开头的任意字符串
99
100 例如:a[href^=”http”] { background: red; }
101
102 <a href=”http://abcd.doc” id=”first” class=”links item”>10</a>
103
104 E[attr$=val]
105
106 选择匹配元素E,且E元素定义了属性attr,其属性值是以val结尾的任意字符串
107
108 例如:a[href$=”doc”] {background: red; }
109
110 <a href=”http://abcd.doc” id=”first” class=”links item”>10</a>
111
112 E[attr*=val]
113
114 选择匹配元素E,且E元素定义了属性attr,其属性值包含了“val”,也就是字符串val与属性值中的任意位置相匹配
115
116 例如:a[class*="links"] { background: red; }
117
118 <a href=”http://abcd.doc” id=”first” class=”links item”>10</a>
119
120 注意:E[attr=val]属性选择器中,属性和属性值必须完全匹配才能被选中。
121
122 例如:<a href="#" class="links item"></a>。
123
124 其中,a[class="links"]{…}是找不到匹配元素的,只有a{class="links item"}{…}才能够匹配。
125
126 (3)结构伪类别选择器
127
128 伪类可以将一段并不存在的HTML当作独立元素来定位,或者是找到无法使用的其他简单选择器就能定位到实际存在的元素上。
129
130 选择器
131
132 功能描述
133
134 E:first-child
135
136 作为父元素的第一个子元素的元素E
137
138 E:last-child
139
140 作为父元素的最后一个子元素的元素E
141
142 E F:nth-child(n)
143
144 选择父级元素E的第n个子元素F(n可以是1、2、3……)
145
146 E:first-of-type
147
148 父元素内具有指定类型的第一个元素E元素
149
150 E:last-of-type
151
152 父元素内具有指定类型的最后一个元素E元素
153
154 E F:nth-of-type(n)
155
156 选择父元素内具有指定类型的第n个F元素。
157
158
159
160 注意:E F:nth-child(n)和E F:nth-of- type(n)的区别:前者是在父级里从第一个元素开始查找,不分类型。后者是在父级里先看类型,再看位置。
161
162 div p:nth-child(1){ background: yellow:} div中第一个且是p元素。
163
164 div p:nth-of-type(2){ background: blue:} div中第2个类型为p的元素。
165
166 二、jQuery选择器
167 在CSS中,选择器的作用是获取元素,而后为其添加CSS样式,美化其外观;jQuery选择器,不仅良好地继承了CSS选择器的语法,还集成了其获取页面元素便捷高效的特点,jQuery选择器与CSS选择器的不同之处就在于,jQuery选择器获取元素后,为该元素添加的是行为,使页面交互变得更加丰富。jQuery选择器浏览器兼容性更好。优势:①代码简洁;②处理机制完善;
168
169 1.基本选择器
170
171
172 名称
173
174 语法构成
175
176 描述
177
178 返回值
179
180 示例
181
182 标签选择器
183
184 element
185
186 匹配指定的标签名元素
187
188 元素集合
189
190 $(“h2”)选取所有h2元素
191
192 类选择器
193
194 .class
195
196 匹配指定的class元素
197
198 元素集合
199
200 $(“.tiltle”)选取所有以class为title的元素
201
202 Id选择器
203
204 #id
205
206 匹配指定的id元素
207
208 单个元素
209
210 $(“#title”)选取以id为title的元素
211
212 并集选择器
213
214 selector1,selector2,…,selecorN
215
216 将每个选择器匹配的元素合并后一起返回
217
218 元素集合
219
220 &(“div,p,.title”)选取所有div、p和class为title的元素
221
222 全局选择器
223
224 *
225
226 匹配所有元素
227
228 集合元素
229
230 $(“*”)选取所有元素
231
232 2.层次选择器
233 名称
234
235 语法构成
236
237 描述
238
239 返回值
240
241 示例
242
243 后代选择器
244
245 root offspring
246
247 选取root元素里的所有offspring(后代)元素
248
249 元素集合
250
251 $(“#menu span”)选取#menu下所有的<span>元素
252
253 子选择器
254
255 parent>child
256
257 选取parent元素下的child(子)元素
258
259 元素集合
260
261 $(“#menu>span”)选取#menu下的子元素<span>
262
263 相邻元素选择器
264
265 prev+next
266
267 选取紧邻prev元素之后的next元素
268
269 元素集合
270
271 $(“h2+dl”)选取紧邻<h2>元素之后的同辈元素<dl>
272
273 类似next()方法
274
275 同辈元素选择器
276
277 prev~siblings
278
279 选取prev元素之后的所有siblings(同辈)元素
280
281 元素集合
282
283 $(“h2~dl”)选取<h2>元素之后所有的同辈元素<dl>
284
285 类似nextAll()方法
286
287 注意: 后代选择器选择范围:子、孙子、曾孙子……
288
289 子选择器选择范围:子
290
291 3.属性选择器
292 从语法构成来看,它属于遵循CSS选择器;从类型来看,它属于jQuery中按条件过滤获取元素的选择器之一。
293
294 语法
295
296 描述
297
298 返回值
299
300 示例
301
302 [attribute]
303
304 选取包含指定属性的元素
305
306 元素集合
307
308 $(“[href]”)选取含有href属性的元素
309
310 [attribute=value]
311
312 选取等于指定属性是某个特定值的元素
313
314 元素集合
315
316 $(“[href=’#’]”)选取href属性值为’#’的元素
317
318 [attribute!=value]
319
320 选取不等于指定属性是某个值的元素
321
322 元素集合
323
324 $(“[href!=’#’]”)选取href属性值不为”#”的元素
325
326 [attribute^=value]
327
328 选取指定属性是以某些特定值开始的元素
329
330 元素集合
331
332 $(“[href^=’en’]”)选取href属性值以”en”开头的元素
333
334 [attribute$=value]
335
336 选取指定属性是以某些特定值结尾的元素
337
338 元素集合
339
340 $(“[href$=’.jpg’]”)选取href属性值以”.jpg”结尾的元素
341
342 [attribute*=value]
343
344 选取指定属性值包含某些值的元素
345
346 元素集合
347
348 $(“[href*=’txt’]”)选取href属性值中含有”txt”的元素
349
350 4.过滤选择器
351 过滤选择器主要通过特定的过滤规则来筛选出所需要的DOM元素,过滤规则与CSS中懂得伪类语法相同,即选择器都是以一个冒号(:)开头,冒号前是需要过滤的元素。例如,a:hover表示当鼠标指针移过<a>元素时,tr:visited表示当鼠标指针访问过<tr>元素后等。
352
353 按照不同的过滤条件,过滤选择器可以分为基本过滤、内容过滤、可见性过滤、属性过滤、子元素过滤和表单对象属性过滤选择器。这里仅介绍分别介绍基本过滤选择器、可见性过滤选择器、表单属性过滤选择器,后续接触到其它再补充。
354
355 (1)基本过滤选择器
356
357 语法
358
359 描述
360
361 返回值
362
363 示例
364
365 :first
366
367 选取第一个元素
368
369 单个元素
370
371 $(“li:first”)选取所有<li>元素中的第一个<li>元素
372
373 :last
374
375 选取最后一个元素
376
377 单个元素
378
379 $(“li:last”)选取所有<li>元素中的最后一个<li>元素
380
381 :not(selector)
382
383 选取去除所有与给定选择器匹配的元素
384
385 集合元素
386
387 $(“li:not(.three)”)选取class不是three的元素
388
389 :even
390
391 选取索引是偶数的所有元素(index从0开始)
392
393 集合元素
394
395 $(“li:even”)选取索引是偶数的所有<li>元素
396
397 :odd
398
399 选取索引是奇数的所有元素(index从0开始)
400
401 集合元素
402
403 $(“li:odd”)选取索引是奇数的所有<li>元素
404
405 :eq(index)
406
407 选取索引等于index的元素(index从0开始)
408
409 单个元素
410
411 $(“li:eq(1)”)选取索引等于1的<li>元素
412
413 :gt(index)
414
415 选取索引大于index的元素(index从0开始)
416
417 集合元素
418
419 $(“li:gt(1)”)选取索引大于1的<li>元素(注意:大于1,不包括1)
420
421 :lt(index)
422
423 选取索引小于index的元素(index从0开始)
424
425 集合元素
426
427 $(“li:lt(1)”)选取索引小于1的<li>元素(注意:小于1,不包括1)
428
429 :header
430
431 选取所有标题元素,如h1~h6
432
433 集合元素
434
435 $(“:header”)选取网页中的所有标题元素
436
437 :focus
438
439 选取当前获取焦点的元素
440
441 集合元素
442
443 $(“:focus”)选取当前获取焦点的元素
444
445 :animated
446
447 选择所有动画元素
448
449 集合元素
450
451 $(“:animated”)选取当前所有动画元素
452
453 (2)可见性过滤选择器
454
455 选择器
456
457 描述
458
459 返回值
460
461 示例
462
463 :visible
464
465 选取所有可见的元素
466
467 集合元素
468
469 $(“:visible”)选取所有可见的元素
470
471 :hidden
472
473 选取所有隐藏的元素
474
475 集合元素
476
477 $(“:hidden”)选取所有隐藏的元素
478
479 注意:选择器 :hidden获取的元素不仅包括样式属性display为 "none" 的元素,还包括文本隐藏域(<input type="hidden"/>和visibility :hidden之类的元素。)
480
481 visibility:hidden----将元素隐藏但是在网页中该占的位置还是占着;
482
483 display:none----将元素的显示设为无,即在网页中不占任何位置;
484
485 (3)表单属性过滤选择器
486
487 在介绍表单属性过滤选择器之前,先介绍jQuery表单选择器,为了方便表单验证,jQuery提供了专门针对表单的一类选择器,即表单选择器;
488
489 a、表单选择器
490
491 表单选择器就是用来选择文本输入框、按钮等表单元素的。
492
493 结合代码来介绍
494
495 示例1:
496
497
498
499 复制代码
500 1 <--省略部分代码-->
501 2 <div class="main">
502 3 <form method="post" name="myform" id="myform">
503 4 <h1 class="bold" colspan="2">注册休闲网</h1>
504 5
505 6 <dl>
506 7 <dt class="left">您的Email:</dt>
507 8 <dd>
508 9 <input type="hidden" name="userId" />
509 10 <input id="email" type="text" class="inputs" /></dd>
510 11 </dl>
511 12 <dl>
512 13 <dt class="left">输入密码:</dt>
513 14 <dd>
514 15 <input id="pwd" type="password" class="inputs" /></dd>
515 16 </dl>
516 17 <dl>
517 18 <dt class="left">再输入一遍密码:</dt>
518 19 <dd>
519 20 <input id="repwd" type="password" class="inputs" /></dd>
520 21 </dl>
521 22 <dl>
522 23 <dt class="left">您的姓名:</dt>
523 24 <dd>
524 25 <input id="user" type="text" class="inputs" /></dd>
525 26 </dl>
526 27 <dl>
527 28 <dt class="left">性别:</dt>
528 29 <dd>
529 30 <input name="sex" type="radio" value="1" checked="checked" />
530 31 男
531 32 <input name="sex" type="radio" value="0" />
532 33 女</dd>
533 34 </dl>
534 35 <dl>
535 36 <dt class="left">出生日期:</dt>
536 37 <dd>
537 38 <select name="year">
538 39 <option value="1998">1998</option>
539 40 </select>年
540 41 <select name="month">
541 42 <option value="1">1</option>
542 43 </select>月
543 44 <select name="day">
544 45 <option value="12">12</option>
545 46 </select>日</dd>
546 47 </dl>
547 48 <dl>
548 49 <dt class="left">爱好:</dt>
549 50 <dd>
550 51 <input type="checkbox" checked="checked" />编程
551 52 <input type="checkbox" />读书
552 53 <input type="checkbox" />运动
553 54 </dd>
554 55 </dl>
555 56 <dl>
556 57 <dt class="left">您的头像:</dt>
557 58 <dd>
558 59 <input id="fileImgHeader" type="file" />
559 60 <img id="imgHeader" src="images/header1.jpg" />
560 61 <input type="image" src="images/header2.jpg" /></dd>
561 62 </dl>
562 63
563 64 <dl>
564 65 <dt> </dt>
565 66 <dd>
566 67 <input name="btn" type="submit" value="注册" class="rb1" />
567 68 <input name="btn" type="reset" value="重置" class="rb1" />
568 69 <input type="button" style="display: none" />
569 70 <button type="button" style="display: none"></button>
570 71 </dd>
571 72 </dl>
572 73 </form>
573 74 </div>
574 75 <--省略部分代码-->
575 复制代码
576
577
578 使用示例一的代码介绍表单选择器的语法如下表:
579
580 语法
581
582 描述
583
584 示例
585
586 :input
587
588 匹配所有input、textarea、select和button元素
589
590 $(“#myform :input”)选取表单中所有的input、select和button元素
591
592 :text
593
594 匹配所有单行文本框,即type=”text”
595
596 $(“#myform :text”)选取Email和姓名两个input元素
597
598 :password
599
600 匹配所有密码框,即type=”password”
601
602 $(“#myform :password”)选取两个<input type=”password”/>元素
603
604 :radio
605
606 匹配所有单项按钮
607
608 $(“#myform :radio”)选取性别对应的两个<input type=”radio”/>元素
609
610 :checkbox
611
612 匹配所有复选框
613
614 $(“#myform :checkbox”)选取三个<input type=”checkbox”/>元素
615
616 :submit
617
618 匹配所有提交按钮
619
620 $(“#myform : submit”) 选取一个<input type=”submit”/>元素
621
622 :image
623
624 匹配所有图像域
625
626 $(“#myform : image”) 选取一个<input type=”image”/>元素
627
628 :reset
629
630 匹配所有重置按钮
631
632 $(“#myform : reset”) 选取一个<input type=” reset”/>元素
633
634 :button
635
636 匹配所有普通按钮
637
638 $(“#myform :button”)选取最后两个button元素
639
640 :file
641
642 匹配所有文件域
643
644 $(“#myform :file”) 选取一个<input type=” file”/>元素
645
646 :hidden
647
648 匹配所有不可见元素,
649
650 $(“#myform :hidden”)选取的元素包括三个option元素、一个<input type=”hiidden”/>元素、style=”display: none”的两个button元素
651
652 b、表单过滤选择器
653
654 示例2:
655
656 复制代码
657 <--省略部分代码-->
658 <div class="register">
659 <form id="userform" name="userform">
660 <p>
661 编号:<input name="code" disabled="disabled" value="10010"/>
662 </p>
663 <p>
664 姓名:<input name="name" type="text" value="张三"/>
665 </p>
666 <p>
667 性别:<input name="sex" type="radio" value="1" checked="checked" /> 男
668 <input name="sex" type="radio" value="0" />女
669 </p>
670 <p>
671 爱好:
672 <input type="checkbox" checked="checked" />编程
673 <input type="checkbox" />读书
674 <input type="checkbox" />运动
675 </p>
676 <p>
677 家乡:<select name="hometown">
678 <option value="1" selected="selected">北京</option>
679 <option value="2">上海</option>
680 <option value="3">天津</option>
681 </select>
682 </p>
683 </form>
684 </div>
685
686 <--省略部分代码-->
687 复制代码
688
689
690 使用示例2的代码介绍表单过滤选择器的语法如下表:
691
692 语法
693
694 描述
695
696 示例
697
698 :enabled
699
700 匹配所有可用元素
701
702 $(“#userform :enable”)匹配form内部除编号输入框外的所有元素
703
704 :disabled
705
706 匹配所有不可用元素
707
708 $(“#userform :disabled”)匹配编号输入框
709
710 :checked
711
712 匹配所有被选中元素(复选框、单项按钮、select中的option)
713
714 $(“#userform :checked”)匹配”性别”中的”男”选项和”爱好”中的”编程”选项
715
716 :selected
717
718 匹配所有选中的option元素
719
720 $(“#userform :selected”)匹配”家乡”中的”北京”选项
721
722 5.jQuery选择器的注意事项
723 (1).选择器中含有特殊如号的注意事项
724
725 在W3C规范中,规定属性值中不能含有某些特殊字符,但难免会碰到表达式中有"#"和"."等特殊字的情况,若是按照一般情况来处理则会出错,这里就需要使用转义符转义。
726
727 例如:
728
729 1 <div id="id#a">aa</div>
730 2 <div id="id[2]">cc</div>
731 普通方式处理(错误):
732
733 1 $("#id#a");
734 2 $("#id[a]");
735 不能正确获取到元素,正确的写法需要在特殊符号前加"\\"如下:
736
737 $("#id\\#a");
738 $("#id\\[2\\]");
739 (2)选择器中含有空格的注意事项
740
741 选择器中空格也是不容忽视的,
742
743 例如:
744
745
746
747 var $t_a = $(".test :hidden"); //带空格的jQuery选择器
748 以上代码选取的是class为 "test"的元素内部的隐藏元素
749
750 var $t_b = $(".test:hidden"); //不带空格的jQuery 选择器
751 以上代码选取的是隐藏的class为 "test"的元素