xml地图|网站地图|网站标签 [设为首页] [加入收藏]
CSS模块化编码让开发事半功倍,30个最常用CSS选择
分类:web前端

什么只用 CSS 落成美好的加载

2017/08/15 · CSS · 2 评论 · 加载

原稿出处: Julien Benchetrit   译文出处:枫上雾棋   

图片 1

CSS模块化编码让开拓经济

2011/11/24 · CSS · 2 评论 · 来源: CSS wang     · CSS

原生JS因jQuery的”write less,do more”变得极简,Html因语义化编码变得驾驭。那么,有未有黄金时代种艺术让Css也更是的快捷精致呢? 当然有,那正是模块化编码。

Css的模块化,大家能够驾驭成(抑或自己正是)OOP理念,重用性、灵活性、可扩充性就是它终极的靶子,“类”就是它的宗旨,OOP的多用组合少用世袭同样是它的中坚尺度。Css模块化是一个风行高效的Css编码方式,若有接触过YUI Css的敌人确定对这种艺术有所领悟。

何以Css模块化,小编想这才是大家实在关切的。 我所知晓的Css模块化,应该从两大块去分别:

第一大块:

从整站全局模块化。 那一点大家并不目生,时常使用的reset css便是模块化的意气风发局地,全局通用的书体样式,链接样式,甚至通用底部头部及主体容器等等那么些大家已经熟知,此外诸如定义文字制版(如.f12{font-size:12px})、定位(如.tl{text-align:left})、长度高度(如.w10{width:10px})、边距(如.m10{margin:10px})等页面中会常用到的样式,那一类,大家誉为Css通用原子类 (哈,与类扯上涉及了,那就权当成类吧).通用原子类有七个特色: 通用性和原子性,任何页面都足以随便动用它们,且他们只展现最底蕴的体裁,一个通用原子类只设置三个样式,不可再分. 关于整站全局模块化不再详述,本文前面我会贴出阿当的《Web前端开采修炼之道》黄金年代书中常用通用原子类样式。

第二大块:

是从视觉效果上模块化,在视觉上样式和职能相对独立稳固的片段就能够视为模块。 拆分那些模块,应该尽恐怕坚决守护一个尺度: 模块与模块之间尽量不要满含相近的一些,若有平等部分就再拆出来独立成二个模块。下图是自家画的多少个轻巧易行的页面视觉图:

图片 2

见状上海体育场合,生手的Css编码日常是为1~4定义多少个类名,为她们写各自的体制; 明智一点的写法是为1~4定义两个类名,用.a .b .c .d{…}格局定义共相像式,然后再为各自定义不一致部分的体裁;可是,还只怕有意气风发种完美的法门,那就是模块化. 上面小编就上述图为例做个差非常少的模块化深入分析。

第一步,剖析任何视觉共用有个别. 能够看见,1~4中,标题背景、标题文字、内容文字这两个部分的样式没什么分歧样的。所以,我们得感到那么些三个区块定义一个类名,将同台的体裁写给这么些类名:

XHTML

; html-script: false ]<div> <h2>不佳松鼠再出山h2> <p>20世纪Fox将为卖座动漫片《冰河世纪》(Ice Age外市译做《冰川时期》)再一次开拍续集...p> <div> <div> <h2>不好松鼠再出山h2> <p>20世纪Fox将为卖座动漫片《冰河世纪》(Ice Age外省译做《冰川时期》)再一次开始拍片续集...p> <div>

1
2
3
4
5
6
7
8
; html-script: false ]<div>
    <h2>倒霉松鼠再出山h2>
    <p>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
<div>
<div>
    <h2>倒霉松鼠再出山h2>
    <p>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
<div>

其次步,深入分析出不一致部分,并衡量高效利用. 能够看出,分歧部分,主假设内容背景象和区块宽度两部分. 先说背景象,背景观有三种,海蓝(1个),威尼斯红(2个),浅赫色(1个),服从”模块与模块之间尽量不要满含相近的部分,若有相通部分就再拆出来独立成一个模块”的尺码,大家要把2个白底的体制指出来,另多个单身定义,而传说Css优先原则,大家能够把白底默断定义到第一步中的box样式中,另二种背景观可做重定义管理. 再来看看宽度与定点,2,4上涨的幅度等同且都右浮动,所以,大家能够把那部分提议来模块化,而调换平时能够一贯调用通用原子类,所以,大家只是必要定义一个开间样式中(若那几个宽度在通用原子类中也许有就越来越好了). 如此的话,Html能够这么写:

XHTML

<div> <h2>倒霉松鼠再出山h2> <p>20世纪Fox将为卖座动画片《冰河世纪》(Ice Age外市译做《冰川时代》)再度开始拍戏续集...p> </div> <div> <h2>不佳松鼠再出山h2> <p>20世纪Fox将为卖座动漫片《冰河世纪》(Ice Age各市译做《冰川时代》)再度开始拍片续集...p> </div>

1
2
3
4
5
6
7
8
<div>
    <h2>倒霉松鼠再出山h2>
    <p>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
</div>
<div>
    <h2>倒霉松鼠再出山h2>
    <p>20世纪福克斯将为卖座动画片《冰河世纪》(Ice Age内地译做《冰川时代》)再次开拍续集...p>
</div>

大概,那样的结构对Html页面来讲,会显的有一些肥胖,但Css文件因为重用性的巩固而大大的减小了. Css模块化是二个相比实用但也亟需去通晓的思辨,实际利用中也急需完善的剖析,过多的模块也会诱致维护性的减退,犹如OOP编程相仿,大家也要思量”公有属性”与”私有属性”. 本文通过一个轻巧的例子剖判了Css模块化的中坚思想,越来越多关于Css模块化的学识,能够看YUI Css可能别的互连网上的能源.

CSS

/*文字拼版*/ .f12{font-size:12px} .f13{font-size:13px} .f14{font-size:14px} .f16{font-size:16px} .f20{font-size:20px} .fb{font-weight:bold} .fn{font-weight:normal} .t2{text-indent:2em} .lh150{line-height:150%} .lh180{line-height:180%} .lh200{line-height:200%} .unl{text-decoration:underline;} .no_unl{text-decoration:none;} /*定位*/ .tl{text-align:left} .tc{text-align:center} .tr{text-align:right} .bc{margin-left:auto;margin-right:auto;} .fl{float:left;display:inline} .fr{float:right;display:inline} .cb{clear:both} .cl{clear:left} .cr{clear:right} .clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden} .clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block} .vm{vertical-align:middle} .pr{position:relative} .pa{position:absolute} .abs-right{position:absolute;right:0} .zoom{zoom:1} .hidden{visibility:hidden} .none{display:none} /*长度中度*/ .w10{width:10px} .w20{width:20px} .w30{width:30px} .w40{width:40px} .w50{width:50px} .w60{width:60px} .w70{width:70px} .w80{width:80px} .w90{width:90px} .w100{width:100px} .w200{width:200px} .w250{width:250px} .w300{width:300px} .w400{width:400px} .w500{width:500px} .w600{width:600px} .w700{width:700px} .w800{width:800px} .w{width:100%} .h50{height:50px} .h80{height:80px} .h100{height:100px} .h200{height:200px} .h{height:100%} /*边距*/ .m10{margin:10px} .m15{margin:15px} .m30{margin:30px} .mt5{margin-top:5px} .mt10{margin-top:10px} .mt15{margin-top:15px} .mt20{margin-top:20px} .mt30{margin-top:30px} .mt50{margin-top:50px} .mt100{margin-top:100px} .mb10{margin-bottom:10px} .mb15{margin-bottom:15px} .mb20{margin-bottom:20px} .mb30{margin-bottom:30px} .mb50{margin-bottom:50px} .mb100{margin-bottom:100px} .ml5{margin-left:5px} .ml10{margin-left:10px} .ml15{margin-left:15px} .ml20{margin-left:20px} .ml30{margin-left:30px} .ml50{margin-left:50px} .ml100{margin-left:100px} .mr5{margin-right:5px} .mr10{margin-right:10px} .mr15{margin-right:15px} .mr20{margin-right:20px} .mr30{margin-right:30px} .mr50{margin-right:50px} .mr100{margin-right:100px} .p10{padding:10px;} .p15{padding:15px;} .p30{padding:30px;} .pt5{padding-top:5px} .pt10{padding-top:10px} .pt15{padding-top:15px} .pt20{padding-top:20px} .pt30{padding-top:30px} .pt50{padding-top:50px} .pb5{padding-bottom:5px} .pb10{padding-bottom:10px} .pb15{padding-bottom:15px} .pb20{padding-bottom:20px} .pb30{padding-bottom:30px} .pb50{padding-bottom:50px} .pb100{padding-bottom:100px} .pl5{padding-left:5px} .pl10{padding-left:10px} .pl15{padding-left:15px} .pl20{padding-left:20px} .pl30{padding-left:30px} .pl50{padding-left:50px} .pl100{padding-left:100px} .pr5{padding-right:5px} .pr10{padding-right:10px} .pr15{padding-right:15px} .pr20{padding-right:20px} .pr30{padding-right:30px} .pr50{padding-right:50px} .pr100{padding-right:100px}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*文字排版*/
.f12{font-size:12px}
.f13{font-size:13px}
.f14{font-size:14px}
.f16{font-size:16px}
.f20{font-size:20px}
.fb{font-weight:bold}
.fn{font-weight:normal}
.t2{text-indent:2em}
.lh150{line-height:150%}
.lh180{line-height:180%}
.lh200{line-height:200%}
.unl{text-decoration:underline;}
.no_unl{text-decoration:none;}
/*定位*/
.tl{text-align:left}
.tc{text-align:center}
.tr{text-align:right}
.bc{margin-left:auto;margin-right:auto;}
.fl{float:left;display:inline}
.fr{float:right;display:inline}
.cb{clear:both}
.cl{clear:left}
.cr{clear:right}
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}
.clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block}
.vm{vertical-align:middle}
.pr{position:relative}
.pa{position:absolute}
.abs-right{position:absolute;right:0}
.zoom{zoom:1}
.hidden{visibility:hidden}
.none{display:none}
/*长度高度*/
.w10{width:10px}
.w20{width:20px}
.w30{width:30px}
.w40{width:40px}
.w50{width:50px}
.w60{width:60px}
.w70{width:70px}
.w80{width:80px}
.w90{width:90px}
.w100{width:100px}
.w200{width:200px}
.w250{width:250px}
.w300{width:300px}
.w400{width:400px}
.w500{width:500px}
.w600{width:600px}
.w700{width:700px}
.w800{width:800px}
.w{width:100%}
.h50{height:50px}
.h80{height:80px}
.h100{height:100px}
.h200{height:200px}
.h{height:100%}
/*边距*/
.m10{margin:10px}
.m15{margin:15px}
.m30{margin:30px}
.mt5{margin-top:5px}
.mt10{margin-top:10px}
.mt15{margin-top:15px}
.mt20{margin-top:20px}
.mt30{margin-top:30px}
.mt50{margin-top:50px}
.mt100{margin-top:100px}
.mb10{margin-bottom:10px}
.mb15{margin-bottom:15px}
.mb20{margin-bottom:20px}
.mb30{margin-bottom:30px}
.mb50{margin-bottom:50px}
.mb100{margin-bottom:100px}
.ml5{margin-left:5px}
.ml10{margin-left:10px}
.ml15{margin-left:15px}
.ml20{margin-left:20px}
.ml30{margin-left:30px}
.ml50{margin-left:50px}
.ml100{margin-left:100px}
.mr5{margin-right:5px}
.mr10{margin-right:10px}
.mr15{margin-right:15px}
.mr20{margin-right:20px}
.mr30{margin-right:30px}
.mr50{margin-right:50px}
.mr100{margin-right:100px}
.p10{padding:10px;}
.p15{padding:15px;}
.p30{padding:30px;}
.pt5{padding-top:5px}
.pt10{padding-top:10px}
.pt15{padding-top:15px}
.pt20{padding-top:20px}
.pt30{padding-top:30px}
.pt50{padding-top:50px}
.pb5{padding-bottom:5px}
.pb10{padding-bottom:10px}
.pb15{padding-bottom:15px}
.pb20{padding-bottom:20px}
.pb30{padding-bottom:30px}
.pb50{padding-bottom:50px}
.pb100{padding-bottom:100px}
.pl5{padding-left:5px}
.pl10{padding-left:10px}
.pl15{padding-left:15px}
.pl20{padding-left:20px}
.pl30{padding-left:30px}
.pl50{padding-left:50px}
.pl100{padding-left:100px}
.pr5{padding-right:5px}
.pr10{padding-right:10px}
.pr15{padding-right:15px}
.pr20{padding-right:20px}
.pr30{padding-right:30px}
.pr50{padding-right:50px}
.pr100{padding-right:100px}

赞 1 收藏 2 评论

图片 3

二15个最常用CSS选取器深入分析

2011/10/23 · CSS · 来源: 大范甘迪     · CSS

您或然已经领悟了id、class、后台选用器那一个主旨的css接纳器。但那远远不是css的方方面面。上边向大家系统的剖判css中贰十六个最常用的选拔器,蕴涵我们最讨厌的浏览器宽容性难题。精晓了它们,技巧真正清楚css的壮烈灵活性。

1. *

CSS

* { margin: 0; padding: 0; }

1
2
3
4
* {
    margin: 0;
    padding: 0;
   }

星状选取符会在页面上的每三个因素上起成效。web设计者常常用它将页面中具有因素的margin和padding设置为0。 *选取符也足以在子接纳器中使用。

CSS

#container * { border: 1px solid black; }

1
2
3
#container * {
     border: 1px solid black;
   }

上边包车型地铁代码中会应用于id为container成分的保有子成分中。 除非供给,笔者不提出在页面中过的的行使星状接纳符,因为他的成效域太大,格外耗浏览器财富。 宽容浏览器:IE6+、Firefox、Chrome、Safari、Opera

2. #X

CSS

#container { width: 960px; margin: auto; }

1
2
3
4
#container {
      width: 960px;
      margin: auto;
   }

#号成效域有对应id的因素。id是大家最常用的css选取器之大器晚成。id选拔器的优势是精准,高优先级(优先级基数为100,远高于class的10卡塔 尔(英语:State of Qatar), 作为javascript脚本钩子的不二抉择,同样短处也很明显优先级过高,重用性差,所以在行使id采取器前,大家最佳问下自个儿,真的到了非用id选择器的程度? 宽容浏览器:IE6+、Firefox、Chrome、Safari、Opera

3. .X

CSS

.error { color: red; }

1
2
3
.error {
     color: red;
   }

这是一个class(类)采纳器。class选用器与id选拔器的两样是class接受器能功能于期待样式化的意气风发组成分。 包容浏览器:IE6+、Firefox、Chrome、Safari、Opera

4. X Y

CSS

li a { text-decoration: none; }

1
2
3
li a {
     text-decoration: none;
   }

那也是大家最常用的豆蔻梢头种接纳器——后代接纳器。用于接收X成分下子成分Y,要留心的点是,这种艺术的选取器将选用其下具备相配的子成分,无视层级,所以有 的气象是不宜使用的,比如上述的代码去掉li下的全部a的下划线,但li里面还应该有个ul,作者不指望ul下的li的a去掉下划线。使用自此代选用器的时候要 思索是否期望某样式对具备子孙成分都起作用。这种后代选用器还应该有个作用,就是开创雷同命名空间的功能。譬如上述代码样式的作用域显然为li。 包容浏览器:IE6+、Firefox、Chrome、Safari、Opera

5. X

CSS

a { color: red; } ul { margin-left: 0; }

1
2
a { color: red; }
ul { margin-left: 0; }

标签选取器。使用标签选用器功能于效率域范围内的具有对应标签。优先级仅仅比*高。 包容浏览器:IE6+、Firefox、Chrome、Safari、Opera

6. X:visited和X:link

CSS

a:link { color: red; } a:visted { color: purple; }

1
2
a:link { color: red; }
a:visted { color: purple; }

应用:link伪类功能于未点击过的链接标签。:hover伪类作用于点击过的链接。 宽容浏览器:IE7+、Firefox、Chrome、Safari、Opera

7. X+Y

CSS

ul + p { color: red; }

1
2
3
ul + p {
      color: red;
   }

隔壁采取器,上述代码中就能够同盟在ul后边的第二个p,将段落内的文字颜色设置为深黑。(只万分第三个要素) 宽容浏览器:IE7+、Firefox、Chrome、Safari、Opera

8. X>Y

CSS

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>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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>

JavaScript

<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">子选择器。与儿孙接纳器X Y不一样的是,子选拔器只对X下的第一手子级Y起效果。在上头的css和html例子中,div#container&gt;ul仅对container中近些日子一流的ul起效果。从理论上来说X &gt; Y是值得一说倡选取器,可惜IE6不援助。 宽容浏览器:IE7+、Firefox、Chrome、Safari、Opera</span>

1
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#039;Times New Roman&#039;, &#039;Bitstream Charter&#039;, Times, serif; font-size: 13px; line-height: 19px; white-space: normal;&quot;&gt;子选择器。与后代选择器X Y不同的是,子选择器只对X下的直接子级Y起作用。在上面的css和html例子中,div#container&amp;gt;ul仅对container中最近一级的ul起作用。从理论上来讲X &amp;gt; Y是值得提倡选择器,可惜IE6不支持。 兼容浏览器:IE7+、Firefox、Chrome、Safari、Opera&lt;/span&gt;

9. X ~ Y

CSS

ul ~ p { color: red; }

1
2
3
ul ~ p {
      color: red;
   }

隔壁选取器,与如今提到的X+Y分歧的是,X~Y相称与X雷同等级的具备Y成分,而X+Y只极度第叁个。 包容浏览器:IE7+、Firefox、Chrome、Safari、Opera

10. X[title]

CSS

a[title] { color: green; }

1
2
3
a[title] {
      color: green;
   }

品质采取器。例如上述代码相称的是含有title属性的链接成分。

极度浏览器:IE7+、Firefox、Chrome、Safari、Opera

11. X[title=foo]

CSS

a[href="] { color: #1f6053; }

1
2
3
a[href="http://css9.net"] {
     color: #1f6053;
}

品质接纳器。 上边的代码匹配所有具有href属性,且href为  的具有链接。

以此职能很好,但是多少又有一些局限。若是大家期望相称href包罗css9.net的有所链接该咋做呢?看下八个选拔器。 包容浏览器:IE7+、Firefox、Chrome、Safari、Opera

12. X[title*=css9.net]

CSS

a[href*="css9.net"] { color: #1f6053; }

1
2
3
a[href*="css9.net"] {
     color: #1f6053;
   }

质量选用器。正如大家想要的,上面代码相配的是href中饱含”css9.net”的享有链接。

非常浏览器:IE7+、Firefox、Chrome、Safari、Opera

13. X[href^=http]

CSS

a[href^="http"] { background: url(path/to/external/icon.png) no-repeat; padding-left: 10px; }

1
2
3
4
a[href^="http"] {
      background: url(path/to/external/icon.png) no-repeat;
      padding-left: 10px;
   }

特性选用器。上边代码相配的是href中持有以http开始的链接。 宽容浏览器:IE7+、Firefox、Chrome、Safari、Opera

13. X[href$=.jpg]

1
 

CSS

a[href^="http"] { background: url(path/to/external/icon.png) no-repeat; padding-left: 10px; }

1
2
3
4
a[href^="http"] {
      background: url(path/to/external/icon.png) no-repeat;
      padding-left: 10px;
   }

JavaScript

<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">属性采取器。在性质选取器中使用$,用于相配结尾为一定字符串的成分。在地点代码中相配的是全部链接到增加名字为.jpg图片的链接。(注意,这里仅仅是.jpg图片,假若要效益于具备图片链接该如何是好呢,看下叁个接受器。卡塔 尔(阿拉伯语:قطر‎</span>

1
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#039;Times New Roman&#039;, &#039;Bitstream Charter&#039;, Times, serif; font-size: 13px; line-height: 19px; white-space: normal;&quot;&gt;属性选择器。在属性选择器中使用$,用于匹配结尾为特定字符串的元素。在上面代码中匹配的是所有链接到扩展名为.jpg图片的链接。(注意,这里仅仅是.jpg图片,如果要作用于所有图片链接该怎么做呢,看下一个选择器。)&lt;/span&gt;

相配浏览器:IE7+、Firefox、Chrome、Safari、Opera

14. X[data-*=foo]

在上多个接纳器中关系如何合营全部图片链接。借使使用X[href$=.jpg]兑现,须要这么做:

CSS

a[href$=".jpg"], a[href$=".jpeg"], a[href$=".png"], a[href$=".gif"] { color: red; }

1
2
3
4
5
6
a[href$=".jpg"],
a[href$=".jpeg"],
a[href$=".png"],
a[href$=".gif"] {
     color: red;
  }
1
 

JavaScript

<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', 提姆es, serif; font-size: 13px; line-height: 19px; white-space: normal;">看上去相比较麻烦。另贰个消除办法是为全部的图片链接加一个一定的属性,例如‘data-file’</span>

1
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#039;Times New Roman&#039;, &#039;Bitstream Charter&#039;, Times, serif; font-size: 13px; line-height: 19px; white-space: normal;&quot;&gt;看上去比较麻烦。另一个解决办法是为所有的图片链接加一个特定的属性,例如‘data-file’&lt;/span&gt;

html代码

XHTML

<a href="path/to/image.jpg" data-filetype="image"> 图片链接 </a>

1
<a href="path/to/image.jpg" data-filetype="image"> 图片链接 </a>

css代码如下:

CSS

a[data-filetype="image"] { color: red; }

1
2
3
a[data-filetype="image"] {
      color: red;
   }

如此有着链接到图片的链接字体颜色为湖蓝。

相当浏览器:IE7+、Firefox、Chrome、Safari、Opera

15. X[foo~=bar]

特性接纳器。属性采纳器中的波浪线符号能够让大家相配属性值中用空格分隔的四个值中的二个。看下边例子:

html代码

XHTML

<a href="path/to/image.jpg" data-info="external image"> Click Me, Fool </a>

1
<a href="path/to/image.jpg" data-info="external image"> Click Me, Fool </a>

css代码

CSS

a[data-info~="external"] { color: red; } a[data-info~="image"] { border: 1px solid black; }

1
2
3
4
5
6
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

  1. X:checked

checked伪类用来同盟处于选定状态的分界面成分,如radio、checkbox。

CSS

input[type=radio]:checked { border: 1px solid black; }

1
2
3
input[type=radio]:checked {
      border: 1px solid black;
   }

下面代码中格外的是持有处于选定状态的单选radio,设置1px的青黄边框。

相称浏览器:IE9+、Firefox、Chrome、Safari、Opera

  1. X:after和X:before

这多个伪类与content结合用于在要素的前头或许后边增添内容,看二个精练的例证:

CSS

h1:after {content:url(/i/logo.gif)}

1
h1:after {content:url(/i/logo.gif)}

地点的代码完毕了在h1题指标背后显示一张图片。

笔者们也通常用它来实现消释浮动,写法如下:

CSS

.clearfix:after { content: ""; display: block; clear: both; visibility: hidden; font-size: 0; height: 0; } .clearfix { *display: inline-block; _height: 1%; }

1
2
3
4
5
6
7
8
9
10
11
12
.clearfix:after {
       content: "";
       display: block;
       clear: both;
       visibility: hidden;
       font-size: 0;
       height: 0;
      }
.clearfix {
      *display: inline-block;
     _height: 1%;
   }

JavaScript

<strong style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;"> </strong>

1
&lt;strong style=&quot;font-family: Georgia, &#039;Times New Roman&#039;, &#039;Bitstream Charter&#039;, Times, serif; font-size: 13px; line-height: 19px; white-space: normal;&quot;&gt; &lt;/strong&gt;

JavaScript

<strong style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">19. X:hover</strong>

1
&lt;strong style=&quot;font-family: Georgia, &#039;Times New Roman&#039;, &#039;Bitstream Charter&#039;, Times, serif; font-size: 13px; line-height: 19px; white-space: normal;&quot;&gt;19. X:hover&lt;/strong&gt;

CSS

div:hover { background: #e3e3e3; }

1
2
3
div:hover {
     background: #e3e3e3;
   }

:hover伪类设定当鼠标划过时成分的样式。上边代码中设定了div划过时的背景观。

急需潜心的是,在ie 6中,:hover只可以用来链接成分。

这边享受二个阅历,在设定链接划过时现身下滑线时,使用border-bottom会比text-decoration显得更不错些。代码如下:

CSS

a:hover { border-bottom: 1px solid black; }

1
2
3
a:hover {
    border-bottom: 1px solid black;
   }

合营浏览器:IE6+、Firefox、Chrome、Safari、Opera

20. X:not(selector)

CSS

div:not(#container) { color: blue; }

1
2
3
div:not(#container) {
      color: blue;
   }

否定伪类接受器用来在相配成分时排除某个因素。在上头的例子中,设定除了id为container的div成分字体颜色为blue。

协作浏览器:IE9+、Firefox、Chrome、Safari、Opera

21. X::pseudoElement

::伪类用于给成分片段增多样式。比方二个段子的率先个字母恐怕第风度翩翩行。须求静心的是,这些::伪类只好用来块状成分。

下边的代码设定了段落中首先个假名的体裁:

CSS

p::first-letter { float: left; font-size: 2em; font-weight: bold; font-family: cursive; padding-right: 2px; }

1
2
3
4
5
6
7
p::first-letter {
      float: left;
      font-size: 2em;
      font-weight: bold;
      font-family: cursive;
      padding-right: 2px;
   }
1
 

JavaScript

<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">上面包车型大巴代码中设定了段落中率先行的样式:</span>

1
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#039;Times New Roman&#039;, &#039;Bitstream Charter&#039;, Times, serif; font-size: 13px; line-height: 19px; white-space: normal;&quot;&gt;下面的代码中设定了段落中第一行的样式:&lt;/span&gt;

CSS

p::first-line { font-weight: bold; font-size: 1.2em; }

1
2
3
4
p::first-line {
      font-weight: bold;
      font-size: 1.2em;
  }

协作浏览器:IE6+、Firefox、Chrome、Safari、Opera

(IE6竟然扶助,有个别意外啊。卡塔尔国

22. X:nth-child(n)

CSS

li:nth-child(3) { color: red; }

1
2
3
li:nth-child(3) {
      color: red;
   }

那么些伪类用于设定叁个行列成分(比方li、tr卡塔尔中的第n个因素(从1开端算起卡塔尔的样式。在地点例子中,设定第五个列表成分li的书体颜色为革命。

看三个更加灵活的用法,在下边例子中设定第偶数个成分的体制,能够用它来贯彻隔行换色:

CSS

tr:nth-child(2n) { background-color: gray; }

1
2
3
tr:nth-child(2n) {
      background-color: gray;
   }

非常浏览器:IE9+、Firefox、Chrome、Safari

23. X:nth-last-child(n)

CSS

li:nth-last-child(2) { color: red; }

1
2
3
li:nth-last-child(2) {
      color: red;
   }

与X:nth-child(n)功用相仿,分化的是它从三个连串的终极多个元素开首算起。上边例子中设定尾数第叁个列表成分的书体颜色。

合作浏览器:IE9+、Firefox、Chrome、Safari、Opera

24. X:nth-of-type(n)

CSS

ul:nth-of-type(3) { border: 1px solid black; }

1
2
3
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)

CSS

ul:nth-last-of-type(3) { border: 1px solid black; }

1
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伪类用于相称三个队列的第三个成分。我们日常用它来得以完结二个行列的首先个因素或最终叁个要素的上(下卡塔尔国边框,如:

CSS

ul:nth-last-of-type(3) { border: 1px solid black; }

1
2
3
ul:nth-last-of-type(3) {
      border: 1px solid black;
   }

特出浏览器:IE7+、Firefox、Chrome、Safari、Opera

27. X:last-child

CSS

ul > li:last-child { border-bottom:none; }

1
2
3
ul > li:last-child {
      border-bottom:none;
  }

与:first-child相仿,它非常的是体系中的最终三个因素。

相称浏览器:IE9+、Firefox、Chrome、Safari、Opera

28. X:only-child

CSS

div p:only-child { color: red; }

1
2
3
div p:only-child {
      color: red;
   }

其风度翩翩伪类用的可比少。在上头例子中相配的是div下有且独有叁个的p,约等于说,如若div内有八个p,将不相配。

CSS

<div><p> My paragraph here. </p></div> <div> <p> Two paragraphs total. </p> <p> Two paragraphs total. </p> </div>

1
2
3
4
5
6
<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

CSS

li:only-of-type { font-weight: bold; }

1
2
3
li:only-of-type {
      font-weight: bold;
   }

本条伪类匹配的是,在它上面容器下只有它一个子成分,它从不邻居成分。比方地方代码相称唯有叁个列表项的列表元素。

相配浏览器:IE9+、Firefox、Chrome、Safari、Opera

30. X:first-of-type

:first-of-type伪类与:nth-of-type(1)效果同样,相配现身的第七个成分。大家来看个例证:

XHTML

<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>

1
2
3
4
5
6
7
8
9
10
11
<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>
1
 

JavaScript

<span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">在地点的html代码中,如若大家期望仅相配List Item 2列表项该如何是好吧:</span>

1
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#039;Times New Roman&#039;, &#039;Bitstream Charter&#039;, Times, serif; font-size: 13px; line-height: 19px; white-space: normal;&quot;&gt;在上面的html代码中,如果我们希望仅匹配List Item 2列表项该如何做呢:&lt;/span&gt;

方案一:

CSS

ul:first-of-type > li:nth-child(2) { font-weight: bold; }

1
2
3
ul:first-of-type > li:nth-child(2) {
      font-weight: bold;
  }

方案二:

CSS

p + ul li:last-child { font-weight: bold; }

1
2
3
p + ul li:last-child {
      font-weight: bold;
   }

方案三:

CSS

ul:first-of-type li:nth-last-child(1) { font-weight: bold; }

1
2
3
ul:first-of-type li:nth-last-child(1) {
      font-weight: bold;
   }

同盟浏览器:IE9+、Firefox、Chrome、Safari、Opera。

总结:

假若你正在利用老版本的浏览器,如IE 6,在选用方面css选取器时应当要在乎它是还是不是相配。可是,那不应改为阻挡咱们学习应用它的理由。在兼顾时,你能够参照他事他说加以考查浏览器兼容性列表,也能够通过脚本手段让老版本的浏览器也支撑它们。

另一些,大家在利用javascript类库的选取器时,举个例子jquery,要尽只怕的施用那个原生的css3选取器,因为类库的选取器引擎会通过浏览器内置剖析它们,那样会获取更加快的快慢。

 

赞 10 收藏 评论

图片 4

为啥要做加载

只想说, 本文最重大的是对 CSS, 伪元素, keyframe的享受, 以至读者对那一个事物的真正掌握, 我并不是怂恿大家在每五个页面包车型大巴先头都去加贰个绚烂的加载

自己是如何是好的

昔不前段时间的页面, 对加载的设计也就恐怕不相同. 本文设计的加载符合大超多页面.

与此同时, 本文假设读者已经丰硕熟习伪元素, CSS 动画属性keyframe, 如若读者想重温, 上面两篇随笔可做参照他事他说加以调查

  • 学会使用 CSS 中的 :after 和 :before
  • keyframe 动画直通车

本文由澳门新葡亰手机版发布于web前端,转载请注明出处:CSS模块化编码让开发事半功倍,30个最常用CSS选择

上一篇:没有了 下一篇:减少阻塞渲染的,测试你的前端代码
猜你喜欢
热门排行
精彩图文