E + F 选择器: 选中E紧跟着下一个满足条件F的兄弟元素节点
<div>div</div>
<p class="demo">123</p>
<p>456</p>
div + p {
background-color: red;
}
div + .demo {
background-color: red;
}

E ~ F选择器: E 同一级后面所有的满足条件F的元素节点
<div>div</div>
<p class="demo">123</p>
<p>456</p>
div ~ p {
background-color: red;
}

::placeholder: 针对 input 框的 placeholder, 能用来改变字体颜色.
::selection: 定义鼠标选中文本的样式 能设置三个属性color, background-color, text-shadow
E:first-child: 被选择元素E是某个标签下的第一个子元素
<div>
<p>1</p>
<p>2</p>
<p>3</p>
</div>
div:first-child{
background-color: red;
}
想选择第一个 p 标签, 这是一个错误的示范:

结果是整个
div变成了红色这是因为伪类选择器针对的是被选择元素的某种状态, 这里
div是被选择元素所以正确的姿势是:
p:first-child{
background-color: red;
}

正确理解:
被选择元素 E 是某个标签下的第一个子元素
-
E是被选择元素(选中的一定是p) - 是某个标签下的 (可能是
body下的, 还可能是div下的, 很多p都能满足要求) - 第一个子元素(
p位列第二就不能被选中)
<p>0</p>
<div>
<p>1</p>
<p>2</p>
<p>3</p>
</div>
p:first-child{
background-color: red;
}
结果是:

E:last-child 也是一样, 这里就不再赘述.
E:only-child: 被选中元素E是某个元素下的唯一一个元素
E:nth-child(n): 被选中元素E是某个元素下的第n个元素, n从0开始, 那么可以是(2n), (2n+1), (3n) ... 不能加空格(2n + 1), 这样会失效. 或者(odd), (even)
css查数从1开始, 但是前面的n是自然数, 从0开始
E:first-of-type: 被选中元素E是某个元素下的类型为E的第一个元素节点
<div class="wrapper">
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>
</div>
p:first-of-type{
background-color: red;
}

E:only-of-type: 被选中元素E是某个元素下唯一的类型为E的元素节点, 即多于1个E就不好使
E:nth-of-type(n): ... 不多解释了
有意思的是: p:nth-of-type(n+3), 第三个p之后的元素被选中。
E:nth-of-last-type
E:empty: E只能为空元素(里面不能有其他节点), 有空格不行, 但是里面html注释是可以的。
E:checked: 被选中的元素(一般是checkbox, redio)
E:disabled:被禁用的元素 E, 例如一个被禁用的input框
E:enabled: 可以使用的元素 E, 例如一个未被禁用的input框
E:read-only: 只允许读的元素 <input type="text" readonly/> 注意单词之间没有中划线
E:read-write: 好像没什么用。。。