css学习之选择器

做程序员,UI的设计大概是所有人的硬伤。对于样式的设计,做到能读懂和修改就可以了。
毕竟专门做这个的有UI设计师和美工,但是平时不阅读样式表,这块也会生疏。
现在开始复习css的选择器。


一,CSS 元素选择器
元素选择器是最基本的选择器。

例:h1 {color:blue;}
注意,可以对html本身设置样式,例,html {color:red;}
还有一点,就是元素选择器可以设置xml的样式。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="xml.css"?>
<service>
<sys>George</sys>
<body>buddy here</body>
</service>

xml.css:
service
{
  background-color: #afdfe4;
  color: red;
  font-size:60px;
  display: block;
}
sys
{
  color: blue;
  font-size:18px;
  display: block;
}

body
{
  color: yellow;
  font-size:18px;
  display: block;
}


如果多个html标签设置的css有相同的部分,这样就会有多余的css代码,就会冗余,
样式表也很繁杂。把公共的css提取出来,放到一起,就是选择器分组。
例:h2, div {color:blue;}

二,类选择器。
这个最常见,就是定义一个样式,任何想用该样式的元素,只要指定就可以了。

<style type="text/css">
.sty1 {color:red;}
</style>

<p class="sty1">haha</p>

2-1,如果想限制该样式只能对某元素起作用,可以在前面加上该元素的声明(中间不能有空格)。
<style type="text/css"> 
p.sty1 {color:red;}
</style> 

<p class="sty1">起作用</p>
<div class="sty1">不起作用</div>

这样设定就防止了该样式表被误用。

2-2,可以对统一元素指定多个类选择器。(用空格隔开)
例:
<style type="text/css"> 
.sty1 {color:red;}
.sty2 {font-size:60px;}
</style>

<p class="sty1">111111</p>
<p class="sty2">22222</p>
<p class="sty1 sty2">333</p>


结果第3个p同时具有sty1和sty2。

三,CSS之ID选择器。
ID 选择器前面有一个 # 号。对指定id的元素起作用,所以只能使用一次(id一般唯一)。

例:
<style type="text/css"> 
#id1 {color:red;}
</style> 

<p id="id1">起作用</p>
<p>不起作用</p>


四,属性选择器。
指定有该属性(还可以指定条件是什么)的元素具有该样式。
属性选择器可以同时指定多个属性条件。

例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
a[href="http://www.baidu.com"][title="baidu"]
{
font-size:60px;
}
</style>
</head>

<body>
<a href="http://www.baidu.com" title="baidu">百度,起作用</a>
<a href="http://www.sina.com.cn">新浪,不起作用</a>
</body>
</html>

需要特别说明的是,属性选择器是需要指定HTML 或 XHTML 规范。
即页面最上部的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果没有指定,属性选择器可能不起作用。
同时这个HTML 或 XHTML 规范在同一版本的浏览器的效果才是固定的。
也就是说,即使你指定了DOCTYPE,实际效果可能也会因为浏览器的版本不同,
最终和你调试的效果不一样(这就是为什么那么多人讨厌IE的原因之一)。
总是属性选择器不能百分百信任。


关于属性的条件有下面几个;
Element[attr]	        选择具有 attr 属性的所有元素
Element[attr="aaa"]	选择 attr 属性值等于“aaa”的所有元素

Element[attr^="def"]	选择 attr 属性值以 "def" 开头的所有元素
Element[attr$="def"]	选择 attr 属性值以 "def" 结尾的所有元素
Element[attr*="def"]	选择 attr 属性值中包含子串 "def" 的所有元素

Element[attr~="aaa"]	选择 attr 属性值包含“aaa”的所有元素。
(注意,这个attr属性的值可以是多个,但必须使用空格隔开的那种格式)。


例:<p class="sty1 sty2">333</p>。
和Element[attr*="def"]不一样,Element[attr*="def"]表示所有属性值中,每个值只要包含子串def,
就有效。而Element[attr~="aaa"]是指所有属性值中,值必须等于“aaa”才有效。

例:

p[class~="sty1"]{color: red;}
<p class="sty1">有效</p>
<p class="sty1aa">无效</p>
<p class="sty1 sty2">有效</p>
<p class="sty1bbb sty2">无效</p>

p[class*="sty1"]{color: red;}
<p class="sty1">有效</p>
<p class="sty1aa">有效</p>
<p class="sty1 sty2">有效</p>
<p class="sty1bbb sty2">有效</p>


可见Element[attr*="def"]的范围更广。

还有一个Element[attr|="def"]	选择 attr 属性值中以 "def"开头的所有元素
例:
img[src|="sh"] {border: 1px solid gray;}
效果是所有src以sh开头的图像具有该样式。 



五,包含选择器。
包含是指在前面的元素内只要出现后面的元素就应该样式(用空格隔开)。

例:
div p{color: red;}

<p>不起作用</p>
<div>不起作用</div>
<div><p>起作用</p></div>
<div>
<div><table><tr><td><p>嵌套很深,也起作用</p></td></tr></table></div>
</div>

六,子元素选择器。
子元素是指父元素下面紧邻的元素。

和包含选择器不同之处就在于里面的元素是不是紧邻的第一个元素。
注意,该样式选择器也需要声明HTML规范,就是最上部的
<!DOCTYPE HTML>
或者
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
否则,效果就不好说了,和浏览器有关。

例:
<style type="text/css"> 
div>p{color: red;}
</style>  

<p>不起作用</p>
<div>不起作用</div>
<div><p>起作用</p></div>
<div>
<div><table><tr><td><p>不是相邻嵌套,就不起作用</p></td></tr></table></div>
</div>


七, 相邻兄弟选择器
紧接在另一个元素后的元素,而且二者有相同的父元素,对相邻的兄弟元素(加号后者)起作用。

例:
<style type="text/css"> 
div+p{color: red;}
</style>

<p>不起作用</p>

<div>不起作用</div>
<p>起作用</p>

<div><p>不起作用</p></div>







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值