markdown [CSS选择器] #css

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown [CSS选择器] #css相关的知识,希望对你有一定的参考价值。

# CSS Selectors Cheatsheet


## Element selectors

**Element** -- selects all `h2` elements on the page

``` CSS
h2 {
    foo: bar;
}
```

**Group** -- selects all `h1`, `h2` and `h3` elements on the page

``` CSS
h1, h2, h3 {
    foo: bar;
}
```


## Class and ID selectors

**Class** -- selects all elements with class attribute containing `foo` or only `p` elements with that class

``` CSS
.foo {
    bar: fum;
}
p.foo {
    bar: fum;
}
```

**ID** -- selects the element with 'baz' id attribute value

``` CSS
#foo {
    bar: fum;
}
```


## Contextual selectors

**Descendant** -- selects all `p` elements within the infinite-level hierarchy of element `#foo` descendants

``` CSS
#foo p {
    bar: fum;
}
```

**Adjacent sibling** -- selects the sibling element `p` that is immediately next to `h2` element

``` CSS
h2 + p {
    foo: bar;
}
```

**Child** -- selects all `p` elements that are immediate children of `#foo` element

``` CSS
#foo > p {
    bar: fum;
}
```

**General sibling** -- selects all elements `p` that are siblings to the `h2` element

``` CSS
h2 ~ p {
    foo: bar;
}
```


## Pseudo-class selectors


### Pseudo-class selectors for link and user states

**Unvisited link** -- applies to link elements that have not been visited

``` CSS
a:link {
    foo: bar;
}
```

**Visited link** -- applies to link elements that have been visited

``` CSS
a:visited {
    foo: bar;
}
```

**Focus state** -- applies to selected `.foo` element that is ready for input 

``` CSS
.foo:focus {
    bar: fum;
}
```

**Hover state** -- applies when mouse pointer is over the `.foo` element

``` CSS
.foo:hover {
    bar: fum;
}
```

**Active state** -- applies when `.foo` element is in process of being clicked

``` CSS
.foo:active {
    bar: fum;
}
```


### Pseudo-class selectors that apply to siblings

**First child** -- selects the specified `.foo` element when it is the first child of its parent

``` CSS
.foo:first-child {
    bar: fum;
}
```

**Last child** -- selects the specified `.foo` element when it is the last child of its parent

``` CSS
.foo:last-child {
    bar: fum;
}
```

**Only child** -- selects the specified `.foo` element when it is the only child of its parent

``` CSS
.foo:only-child {
    bar: fum;
}
```

**First of type** -- selects the `h2` element when it is the first element of its type within its parent element

``` CSS
h2:first-of-type {
    foo: bar;
}
```

**Last of type** -- selects the `h2` element when it is the last element of its type within its parent element

``` CSS
h2:last-of-type {
    foo: bar;
}
```

**Only of type** -- selects the `h2` element when it is the only element of its type within its parent element

``` CSS
h2:only-of-type {
    foo: bar;
}
```

**Nth child** -- selects the `n`th `.foo` child element

``` CSS
.foo:nth-child(n) {
    bar: fum;
}
```

**Nth last child** -- selects the `n`th `.foo` child element counting backwards

``` CSS
.foo:nth-last-child(n) {
    bar: fum;
}
```

**Nth of type** -- selects the `n`th `h2` child element of its type

``` CSS
h2:nth-of-type(n) {
    foo: bar;
}
```

**Nth last of type** -- selects the `n`th `h2` child element of its type counting backwards

``` CSS
h2:nth-last-of-type(n) {
    foo: bar;
}
```

Useful `n` values:

- `odd` or `2n+1` -- every odd child or element
- `even` or `2n` -- every even child or element
- `n` -- every nth child or element
- `3n` -- every third child or element (3, 6, 9, ...)
- `3n+1` -- every third child or element starting with `1` (1, 4, 7, ...)
- `n+6` -- all but first five children or elements (6, 7, 8, ...)
- `-n+5` -- only first five children or elements (1, 2, ..., 5)


### Pseudo-element selectors

**First letter** -- selects the first letter of the specified `.foo` element, commonly used with `:first-child` to target first paragraph

``` CSS
.foo::first-letter {
    bar: fum;
}
```

**First line** -- selects the first line of the specified `.foo` element, commonly used with `:first-child` to target first paragraph

``` CSS
.foo::first-line {
    bar: fum;
}
```

**Before** -- adds generated content before the `.foo` element when used with `content` property

``` CSS
.foo::before {
    bar: fum;
    content: 'baz';
}
```

**After** -- adds generated content after the `.foo` element when used with `content` property

``` CSS
.foo::after {
    bar: fum;
    content: 'baz';
}
```


## Attribute selectors

**Present** -- selects `.foo` elements with `bar` attribute present, regardless of its value

``` CSS
.foo[bar] {
    fum: baz;
}
```

**Exact** -- selects `.foo` elements where the `bar` attribute has the exact value of `fum`

``` CSS
.foo[bar="fum"] {
    baz: qux;
}
```

**Whitespace separated** -- selects `.foo` elements with `bar` attribute values contain specified partial value of `fum` (whitespace separated)

``` CSS
.foo[bar~="fum"] {
    baz: qux;
}
```

**Hyphen separated** -- selects `.foo` elements with `bar` attribute values contain specified partial value of `fum` immediately followed by hyphen (`-`) character

``` CSS
.foo[bar|="fum"] {
    baz: qux;
}
```

**Begins with** -- selects `.foo` elements where the `bar` attribute begins with `fum`

``` CSS
.foo[bar^="fum"] {
    baz: qux;
}
```

**Ends with** -- selects `.foo` elements where the `bar` attribute ends with `fum`

``` CSS
.foo[bar$="fum"] {
    baz: qux;
}
```

**Containts** -- selects `.foo` elements where the `bar` attribute contains string `fum` followed and preceded by any number of other characters

``` CSS
.foo[bar*="fum"] {
    baz: qux;
}
```


## Misc selectors

**Not** -- selects `.foo` elements that are NOT `.bar` elements

``` CSS
.foo:not(.bar) {
    fum: baz;
}
```

**Root** -- selects the highest level parent element in the DOM

``` CSS
:root {
    foo: bar;
}
```

**Empty** -- selects `.foo` elements that have no children or whitespace inside

``` CSS
.foo:empty {
    bar: fum;
}
```

**In-range** and **Out-of-range** -- selects `.foo` elements that have values in or out of range

``` CSS
.foo:in-range {
    bar: fum;
}
.foo:out-of-range {
    bar: fum;
}
```

以上是关于markdown [CSS选择器] #css的主要内容,如果未能解决你的问题,请参考以下文章

markdown CSS选择器 - 匹配部分类名(和其他属性)!!!

CSS性能优化的技巧

markdown 使用CSS3和Flexbox设置样式的“选择”选项

前端基础css 选择器

css的复合选择器

css选择器