css--不同类型的选择器(一)

2019-01-02  本文已影响6人  缺月楼

CSS中,选择器用于定位我们想要样式化的网页元素。各种各样可用的CSS选择器允许我们精确选择要样式化的元素

不同类型的选择器

选择器可以被分为以下类别

简单选择器(Simple selectors)

元素选择器 Element Selectors
例如:下面代码中html文档中所有的 p元素和所有的div都会被选中。

p {
  color: red;
}

div {
  color: blue;
}

ID 选择器 ID Selectors
选中idlaowangp元素,设置p元素的字体大小为24px。

<p id="laowang">你好 CSS</p>

#laowang {
  font-size: 24px;
}

类选择器 Class Selectors
一个元素也可以应用多个不同的CSS 类,一个 CSS类可以应用到多个不同的元素。

  <ul>
  <li class="first done">吃饭</li>
  <li class="second done">睡觉</li>
  <li class="third">打豆豆</li>
</ul>
.first {
  font-weight: bold;
}

.done {
  text-decoration: line-through;
}

通用选择器 Universal Selector

* {
  box-sizing: border-box;
}

.flex-container * {
  flex-basis: 100%;
}

属性选择器

属性选择器是一种特殊类型的选择器,它根据元素的属性和属性值来匹配元素。它们的通用语法由方括号 ([]) 组成,其中包含属性名称,后跟可选条件以匹配属性的值。 属性选择器可以根据其匹配属性值的方式分为两类: 存在和值属性选择器和子串值属性选择器。

存在和值(Presence and value)属性选择器
这些属性选择器尝试匹配精确的属性值:实例HTML代码如下

我的食谱配料: <i lang="fr-FR">Poulet basquaise</i>
<ul>
  <li data-quantity="1kg" data-vegetable>Tomatoes</li>
  <li data-quantity="3" data-vegetable>Onions</li>
  <li data-quantity="3" data-vegetable>Garlic</li>
  <li data-quantity="700g" data-vegetable="not spicy like chili">Red pepper</li>
  <li data-quantity="2kg" data-meat>Chicken</li>
  <li data-quantity="optional 150g" data-meat>Bacon bits</li>
  <li data-quantity="optional 10ml" data-vegetable="liquid">Olive oil</li>
  <li data-quantity="25cl" data-vegetable="liquid">White wine</li>
</ul>

[attr]
该选择器选择包含attr属性的所有元素,不论 attr 的值为何。


** 所有具有"data-vegetable"属性的元素将被应用绿色的文本颜色 **
[data-vegetable] {
  color: green
}

[attr=val]
该选择器仅选择 attr属性被赋值为 val 的所有元素。

  ** 所有具有"data-vegetable"属性且属性值刚好为"liquid"的元素将被应用金色的背景颜色 **
[data-vegetable="liquid"] {
  background-color: goldenrod;
}

[attr~=val]
该选择器仅选择具有 attr 属性的元素,而且要求 val 值是 attr值包含的被空格分隔的取值列表里中的一个。

                                  
     ** 所有具有"data-vegetable"属性且属性值包含"spicy"的元素,
      即使元素的属性中还包含其他属性值,都会被应用红色的文本颜色 **
                                  
[data-vegetable~="spicy"] {
  color: red;
}
子串值(Substring value)属性选择器

这种情况的属性选择器也被称为“伪正则选择器”,因为它们提供类似 regular expression 的灵活匹配方式(但请注意,这些选择器并不是真正的正则表达式)

[attr|=val]
选择attr属性的值是 val 或值以 val- 开头的元素(注意,这里的 “-” 不是一个错误,这是用来处理语言编码的)。

** 语言选择的经典用法 **
[lang|="fr"] {
  font-weight: bold;
}

[attr^=val]
选择attr属性的值以 val 开头(包括 val)的元素。

   **具有属性"data-quantity"其值以"optional"开头的所有元素 **
[data-quantity^="optional"] {
  opacity: 0.5;
}

[attr$=val]
选择attr属性的值以 val 结尾(包括 val)的元素。

 **具有"data-quantity"属性其值以"kg"结尾的所有元素**
[data-quantity$="kg"] {
  font-weight: bold;
}

[attr*=val]
选择attr属性的值中包含子字符串 val 的元素(一个子字符串就是一个字符串的一部分而已,例如,”cat“ 是 字符串 ”caterpillar“ 的子字符串)。

**具有"data-vegetable"属性含有值"not spicy"的所有元素,都变回绿色**
[data-vegetable*="not spicy"] {
  color: green;
}
上一篇下一篇

猜你喜欢

热点阅读