复合选择器

一、复合选择器
1)子选择器

  1. 父标签>子标签:将样式应用于该父标签下的第一级所有直接子标签
  2. 父标签>.class类名:将样式应用于该父标签下的第一级所有命名是该类名的子标签
  3. 父标签#id>.class类名:将样式应用于该id的父标签下的第一级所有该class类名的直接子标签(父标签和id之间无空格)

2)包含选择器/后代选择器

  1. 父标签+空格+子标签: 将样式应用于该父标签包含的所有的该子标签,以及子标签包含的所有标签。同理,父标签可以用id或class代替,只要是在父标签中的,任何标签都可以作为子标签。可以包含很多层,但最好不要超过4层。

子选择器和父选择器区别:

<style>
div#box>span{
        color:blue;
    }
</style>
<body>
<h2>
    <span>html</span>
    <span>HTML树状图</span>
</h2>
<div id="box">
    <span>
        content:
        <span>1</span>
    </span>
    <span>
        <span>test</span>
    </span>
    <span>3</span>
    <div>
        <span>4</span>
    </div>
</div>
</body>
<!--子选择器:数字4不会加载样式,其他会加载样式;包含选择器:所有的span都会加载样式-->
<!--即包含选择器是只要该规则下的子标签被包住,不管几层都会被作用于该样式;子选择器只有第一层。也就是一个是所有后代,一个是第一代后代-->

3)相邻选择器

  1. A标签+A标签相邻的标签(下一个标签,不是上一个):将样式应用于A标签的相邻标签,A标签本身不会应用该样式。下面代码中,如果讲兄弟选择器更换为相邻选择器,则只有<div>HTML树状图</div>,会应用样式。

4)兄弟选择器

A标签~B标签:指定A元素后面的同级B标签,以及B标签包含的所有标签应用该样式。如下面代码,与h2同级的所有div均会应用该样式

<style>
    h2~div{
        font-size:16px;color: red
    }
</style>
</head>
<body>
<h2>HTML结构</h2>
<div>HTML树状图</div>
<span>
    HTML知识
<div>oo</div>
</span>
<div class="class1">问君能有几多愁</div>
<div>问君能有几多愁</div>
</body>

5)关于选择器嵌套

一层层的找,样式作用于最里面一层的标签,如:
#wrap #header h2 span{font-size: 24px; color: #55a532},样式作用于最里面一层的span

6)Jquery属性选择器

  1. 基础样式

div[attr]:匹配带有一个名为attr的属性的元素——方括号里的值。attr可以是style/class/id/其他各种属性的名字。注意,style设置的样式名不能作为attr。

  1. 通过属性值来引用

通过属性值选择:div[attr="value"],匹配带有一个名为attr的属性的元素,其值为value——引号中的字符串。

  1. 按是否包含该属性值匹配

p[attr~="value1"],匹配带有一个名为attr的属性的元素 ,其值正为value1,或者匹配带有一个attr属性的元素,其值有一个或者更多,至少有一个和value1匹配。注意,比如class="a b",[class="a"]是可以找到的,但class="ab",[class="a"]就找不到。

4.按是否以该属性值开头

div[attr|="value"],匹配带有一个名为attr的属性的元素,其值可正为value,或者开始为value,后面紧随着一个连字符。比如:div[lang|="zh"]。注意,比如class="ab",[class|="a"]是可以找到的,但class="a b",[class|="a"]就找不到。

7)字符串匹配选择器

  1. 通过判断属性值是否包含该文本
<style>
    div[class*="test"] {
        background: #ffff00;
    } 
</style>
<body>
<div class="Nowteston">第三个 div 元素。</div>
</body>
<!--只要属性值包含test字段,则该样式被应用,无论value之间是否空格-->

2.通过判断属性值是否以该文本结尾

<style> 
div[class$="test"]
{
background:#ffff00;
}
</style>
<body>
<div class="first_test">The first div element.</div>
<div class="test">This is some text in a paragraph.</div>
</body>
<!--只要属性值以test字段结尾,则该样式被应用,无论value之间是否空格-->

3.通过判断属性值是否以该文本开头

<style>
    div[class^="test"] {
        background: #ffff00;
    }<!--只要属性值以test字段开头,则该样式被应用,无论value之间是否空格-->
<!--注意:"-"用在两个单词间可以作为连字符,将二者合为一个单词-->
</style>

总结:

CSS选择器和CSS3在很多地方语言结构相似,CSS让项目更稳定,CSS3则支持更多渲染

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容