CSS基础(二)

classid的使用场景

id:适用与指定元素
class:适用与多个有共同样式的元素

CSS常见选择器

基础选择器

  • * 通用选择器
  • #id id选择器
  • .class class选择器
  • element 类选择器

组合选择器

  • E,F 多元素选择器,同时匹配元素E或元素F
  • E F 后代选择器,匹配E元素的所有后代F
  • E>F 子元素选择器,匹配E元素的所有子元素F
  • E+F 直接相邻选择器,匹配E元素之后的相邻的同级元素F
  • E~F 普通相邻选择器,匹配E元素之后的同级元素F(无论直接相邻与否)

属性选择器

  • E[attr] 匹配所有具有属性attr的元素,div[id]就能取到所有有id属性的div
  • E[attr =value] 匹配属性attr值为value的元素,div[id=test],匹配id=test的div
  • E[attr ~=value] 匹配所有属性attr具有多个空格分隔、其中一个值等于value的元素
  • E[attr ^=value] 匹配属性attr的值以value开头的元素
  • E[attr $=value] 匹配属性attr的值以value结尾的元素
  • E[attr *=value] 匹配属性attr的值包含value的元素

选择器的优先级计算

简单场景

  1. 在属性后面有!important时,优先级最高
  2. 作为style属性写的内联样式
  3. id选择器
  4. 类选择器
  5. 伪类选择器
  6. 属性选择器
  7. 标签选择器
  8. 通配符选择器
  9. 浏览器的自定义

复杂选择器

  • 行内样式 ==>a
  • ID选择器 ==>b
  • 类、属性选择器和伪类选择器 ==>c
  • 标签选择器、伪元素 ==>d
    从上到下,优先度以此降低。

a:linka:hovera:activea:visited的使用顺序

a:link{
color: blue;
}
a:visited{
color: red;
}
a:hover{
color: green;
}
a:active{
color: yellow;
}

a首先是一个没点击过的链接(a:link),当鼠标放在a链接上(a:hover),再点击(a:active),点击后即为已访问过的链接(a:visited)。
样式层层覆盖。

常见的伪类选择器

  • E:first-child 匹配元素E的第一个子元素
  • E:link 匹配所有未被点击过的链接E
  • E:visited 匹配所有已被点击过的链接E
  • E:active 匹配鼠标已按下且未释放的E元素
  • E:hover 匹配鼠标悬停其上的元素E
  • E:focus 匹配获得当前焦点的元素E
  • E:lang(c) 匹配lang属性等于c的元素E
  • E:enabled 匹配表单中可用的元素
  • E:disabled 匹配表单中禁用的元素
  • E:cheked 匹配表单中被选中的radio或checkbox元素
  • E:selection 匹配用户当前选中的元素
  • 更多选择器

p:first-childp:first-of-type的作用和区别

  • p:first-child父元素下第一个且为p的元素
<style>
p:first-child{
color:red;
}
</style>
<div>
      <p>第一个元素——p</p>                   字体为红
      <div>第二个元素——div</div>             字体为黑
</div>
<div>
      <div>第一个元素——div</div>             字体为黑
      <p>第二个元素———p</p>                  字体为黑
</div>
  • p:first-of-type 父元素下第一个p元素
p:first-of-type{
color:red;
}
<div>
      <p>第一个元素——p</p>                   字体为红
      <div>第二个元素——div</div>             字体为黑
</div>
<div>
      <div>第一个元素——div</div>             字体为黑
      <p>第二个元素———p</p>                  字体为红
</div>

问题1

#header{
}/*id为header的元素*/
.header{
}/*class为header的元素*/
.header .logo{
}/*后代选择器,class为header下所有class为logo的元素*/
.header.mobile{
}/*class为header和mobile的元素*/
.header p, .header h3{
}/*class为header下所有p和h3元素*/
#header .nav>li{
}/*id为header下所有class为nav的元素下所有li元素*/
#header a:hover{
}/*id为header下所有鼠标在其上方的a元素*/
#header .logo~p{
}/*id为header下所有class为logo后所有同级的p元素*/
#header input[type="text"]{
}/*id为header下所有input标签中有type属性为text的元素*/

问题2

<style>
.item1:first-child{
  color: red;
}
.item1:first-of-type{
  background: blue;
}
</style>
 <div class="ct">
   <p class="item1">aa</p>/*该元素即是.ct中第一个元素,也是.ct中第一个p元素,所以它即是红字也是蓝背景*/
   <h3 class="item1">bb</h3>/*该元素是.cd中的第二个元素,但是却是第一个h3元素,所以它仅是背景为蓝色*/
   <h3 class="item1">ccc</h3>/*该元素是.cd中的第三个元素,也是第二个h3元素,所以它的样式是浏览器的默认样式*/
 </div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.class 和 id 的使用场景? class:类选择器,一个标签可以有多个类且同一个类可以用到不同的标签上,...
    饥人谷_兔子君阅读 1,215评论 0 0
  • class 和 id 的使用场景? id:id选择器,使用#name定义(name为id名,可任意取名),使用id...
    DCbryant阅读 291评论 0 0
  • class 和 id 的使用场景? class属性: 指定标签的类名,CSS操作中,把一些特定的样式放到一个类中,...
    我要认真学前端阅读 1,038评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,814评论 1 92
  • 1,class 和 id 的使用场景? 1.class是类选择器,用.class定义,定位到页面中有相同特征的一类...
    _思铭阅读 381评论 0 0