CSS 伪类和伪元素

1.状态伪类

  • 定义:根据元素的状态定义不同的样式,常用于a链接(未访问/已访问/鼠标划过/已选中),表单元素(失去焦点/获取焦点/禁用)
a:link {color:#FF0000;} /* 链接未访问时的颜色 */
a:visited {color:#00FF00;} /* 已访问过的链接的颜色 */
a:hover {color:#FF00FF;} /* 鼠标划过时链接的颜色 */
a:active {color:#0000FF;} /* 鼠标按下时链接的颜色 */
input:focus{
    border: 1px solid red;/* 输入框获取焦点时的样式 */
}
select > option:disabled {
    color: red;/* 被禁用的表单元素的样式 */
}
select > option:enabled {
    color: green;/* 没有禁用的表单元素的样式 */
}
  • 注意: 在CSS定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
  • 注意: 在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。

2.结构化伪类

  • 定义:结构化伪类是 CSS3 新增选择器,利用 DOM 树进行元素过滤,通过文档结构的互相关系来匹配元素,能够减少 class 和 id 属性的定义,使文档结构更简洁
  • 结构化伪类有3个要素:当前元素的兄弟元素,索引,当前兄弟元素的标签类型
  • nth-child 和 nth-of-type的区别:nth-child既要索引对的上,还要标签类型对的上,而 nth-of-type 在计算索引是一家排除了标签类型的元素
  • 注意:如果所有兄弟元素都是同种标签,例如都是div,只是class不一样,则无法进行类别筛选
示例 说明
p:first-child 选中同级兄弟中的第一个p元素,且这个必须是同级第一个元素
p:last-child 选中同级兄弟中的最后一个p元素,且这个元素必须是同级最后一个元素
p:nth-child(number) 选中同级兄弟中p元素,且这个元素必须是同级的第n个元素
p:nth-child(2n) 选中下标为2,4,6,8...的元素
p:nth-child(2n-1) 选中下标为1,3,5,7...的元素
p:first-of-type 选中同级兄弟中的第一个p元素
p:last-of-type 选中同级兄弟中的最后一个p元素
p:nth-of-type(number) 选中同级兄弟中的第n个p元素 n为1开始
p:nth-of-type(2n) 选中下标为2,4,6,8...的元素

3.伪元素

  • 可以通过伪元素给容器添加子元素(单双冒号都可以)
<style>
    .box {
        width: 300px;
        height: 60px;
        border: 1px solid red;
        position: relative;
    }
    .box::before,
    .box::after {
        content:"";
        position: absolute;
        top: 0;
        width: 30px;
        height: 30px;
        line-height: 30px;
    }
    .box::before {
        left: 0;
        background-color: lightblue;
    }
    .box::after {
        right: 0;
        background-color: purple;
    }
</style>

4.其他

  • 设置占位提示符的样式
<style>
    input::placeholder {
        color: green;
    }
</style>
  • 匹配元素中文本的首字母
p::first-letter {
        color: red;
    }
  • 匹配元素中第一行的文本(不能用在内联元素中)
h3::first-line {
        color: red;
    }

效果

posted @ 2019-10-04 16:29  ---空白---  阅读(431)  评论(0编辑  收藏  举报