CSS Selector – 基础

我要留言

想总结一下关于CSS的selector部分以及对selector的一些思考。我准备分成四个部分来写,算是系列文章吧。四个部分分别是:

  1. 基础:主要是从CSS selector来谈起,也是平时用的最多的;
  2. 高级:谈谈一些高级的selector的用法;
  3. 关于Cascade:关于CSS继承,优先级的一些topic;
  4. 未来的思考:未来的CSS selector会怎么发展?CSS 3做了什么?javascript所带来的影响是什么?

1.基础

一.Tag selector
标签selecor ,也可以称为类型selector,它将对HTML页面中所有的该类型有效。

h1 {
   font-family:Arial, sans-serif;
   color:#CCCCFF;
}

二.Class Selector
类选择器和HTML中的class相结合,应用到所有声明了该class的标签中。类选择器必须要以 “.”来开头。
对于

.title{
   color:#FF000;
   font-size:24px;
}

三.ID selector
ID选择器会将其syle应用在HTML中该ID的tag上。
对于

 #sidebar{
  float:left;
  margin-left:30px;
}

一个有意思的问题是如果在一个HTML中,有两个以上的tag用了同一个ID会怎么样呢?虽然并不是合法的HTML,但是大部分的游览器会忽略这个问题。这个时候ID选择器就像类选择器一样,只要哪个tag的使用了该ID,就会应用该style.
四.Descendent selector

这种选择器的的意思就是根据DOM树的祖先、父子关系来选择具体的元素。

如:

h1 strong {
     color:red;
}

将对<h1> This is homepage of <strong>liwenbing</strong></h1>中的strong的内容进行标红。

同样这种方式是可以组合前面的任何三种选择器:

h1 .intro a{
      color:yellow;
}

将对<h1> This is homepage of <strong >liwenbing </strong> who is <span class=”intro”><a href=”#”>lovely boy</a></span></h1>中的lovely boy标黄。

注意tag和类之间是否有空格是非常重要的。

有空格表示是应用该类的元素在tag之中,就像上面的例子;没有空格,则表示tag和class都标明的是同一个元素。

h1.intro a{   //注意h1和.intro之间没有空格
     color:blue;
}

对<h1 class=”intro”>This is homepage of <a href=”#” >liwenbing </a></h1>中的liwenbing是有效的。

再举一个和ID selector结合的例子:

#sidebar h2{
      font-size:1.2em;
}

上述style将对sidebar元素下面的所有h2进行应用。

五.Group selector

组选择器顾名思义就是对于一组selector应用同一中style,以逗号”,”隔开;组中的元素都可以是前面四中的任何一种。

h1,
p .intro,
#sidebar .title{
 color:#6F6F6F;
}

六.伪选择
伪选择器可以进一步地定义用户和页面的行为。最常用的就是对link的定义了;

a:hover{
  text-decoration:  none;
}
a:visited{
 color:blue;
}

当然关于link的除了上述两种,还有a:link,a:active;
其他还有很多的伪选择,例如现在在用的focus.下面这个CSS可以让input 有safari中的高亮效果(不过IE并不支持)。

 input:focus{
  border-color: #feca70;
}

其他伪选择器还有:before,:after,:firs-child.

5 Responses to “CSS Selector – 基础”

  1. yaxin

    关注中。。。

  2. 商文筑

    CSS3 selector里面说到css selector是一项被低估的技术,dojo目前的css selector访问DOM结点似乎要比使用DOM API还要高效。

    期待楼主的研究

  3. Alalei

    selector 非常强大,我写过一次selector的解析器,用起来很爽,特别是做UI 效果的时候。不过还是依赖于dom api,效率还是非常非常低的。 dojo.query 效率确实不错,但是真正写商业应用的人好少去用dojo。从某种意义上来说,selector可以看作是对id应用的扩展,想想,还有没有别的更加强大和动态的扩展。。。

  4. liwenbing

    jquery做selector就是做的很好了。但是js的东西还是不能直接和CSS selector原生支持的相比,无论是效率还是实时性。js的好处就是比较的灵活。

  5. 李文兵 » CSS Selector - 高级

    [...] 在前面一篇文章中(CSS Selector – 基础)介绍一些CSS selector的基本用法。里面来谈一些平时比较少用的CSS selector用法。 [...]

Leave a Reply

Spam Protection by WP-SpamFree