奇妙的CSS之伪类与伪元素
我们都知道,在CSS中有很多选择器,例如id(#), class(.),属性[attr],这些虽然可以满足一些需要,但有时候还力有未逮。伪类和伪元素就提供了一个有益的补充,可以使我们更高效编码。伪类和伪元素是预定义的、独立于文档元素的,它们不是从DOM中获取的,不是基于元素本身特征的(id,类,属性等)。它们从元素的特殊状态来获取,比如元素的兄弟元素,子元素,文本元素的第一个字符等。
CSS伪类: 和一般的DOM中的元素样式不一样,它并不需要任何DOM内容。只是插入了一些修饰类的元素,这些元素对于用户来说是可见的,但是对于DOM来说不可见。伪类产生的样式效果我们也可以通过添加一个class来实现。伪类选择元素基于的是当前元素处于的状态,或者说元素当前所具有的特性,亦或是它所处的环境,而不是元素本身所具有的id、class、属性等静态的标志。当元素的状态变化时,由伪类定义的元素样式也会随之变化,这是和由id(#), class(.),属性[attr]选择器定义的样式是大不相同的。此可以看出,它的功能和class有些类似,但它是基于文档之外的抽象,所以叫伪类。
一、UI元素状态伪类
- E:hover用于当用户把鼠标移动到元素上面时的效果;
- E:active用于用户点击元素那一下的效果(正发生在点的那一下,松开鼠标左键此动作也就完成了);
- E:focus用于元素成为焦点,这个经常用在表单元素上。
- E:enable 指定当元素处于可用状态时的样式;
- E:disable 指定当元素处于不可用状态时的样式;
- E:read-only 指定当元素处于只读状态时的样式;
- E:read-write 指定当元素处于非只读状态时的样式;
E:checked 指定当表单中的radio单选框或checkbox复选框处于选取状态时的样子(FF中要写成:-moz-checked);
E:default 指定当页面打开时默认处于选区状态的radio或checkbox控件的样式;
E:indeterminate 指定当页面打开时,如果一组单选框中任何一个单选框都没有被设定为选取状态时整组单选框的样式,如果用户选取了一个单选框,则该样式被取消;
E::selection 指定当元素处于选中状态时的样式.
二、结构伪类
- E:first-child选择某个元素的第一个子元素;
- E:last-child选择某个元素的最后一个子元素;
- E:nth-child()选择某个元素的一个或多个特定的子元素;
- E:nth-last-child()选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;
- E:nth-of-type()选择指定的元素;
- E:nth-last-of-type()选择指定的元素,从元素的最后一个开始计算;
- E:first-of-type选择一个上级元素下的第一个同类子元素;
- E:last-of-type选择一个上级元素的最后一个同类子元素;
- E:only-child选择的元素是它的父元素的唯一一个了元素;
- E:only-of-type选择一个元素是它的上级元素的唯一一个相同类型的子元素;
- E:empty选择的元素里面没有任何内容。
三、否定选择器
- E :not() 可以让你定位不匹配该选择器的元素。
CSS伪元素与伪类类似,它可以用来选择元素的某些部分,这些部分可能不包含在<div>或者<span>中,不方便用其他方法来选择。比如,:first-letter伪元素可以用来选择一个元素中文本的第一个字符,这样就可以创建一些特效。
CSS伪元素有:
- E:first-letter 伪元素向文本的第一个字母添加特殊样式;
- E:first-line 伪元素向文本的首行添加特殊样式;
- E:before 伪元素在元素之前添加内容;
- E:after 伪元素在元素之后添加内容。
那么在CSS3中,也对伪元素进行了一定的调整,在以前的基础上增加了一个“:”也就是现在变成了::first-letter,::first-line,::before,::after。另外他还增加了一个::selection,::selection用来改变浏览网页选中文的默认效果。
奇妙的CSS之伪类与伪元素的更多相关文章
- CSS中伪类及伪元素用法详解
CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...
- CSS伪类和伪元素
一.伪类 CSS伪类用于向某些选择器添加特殊的效果,在W3规范中,CSS伪类有如下几个: CSS2.1 :active:向被激活的元素添加样式(激活是指点击鼠标那一下) :focus:向拥有键盘输入焦 ...
- CSS 属性 - 伪类和伪元素的区别
伪类和伪元素皆独立于文档结构.它们获取元素的途径也不是基于id.class.属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素).区别总结如下: ①写法不一样: ...
- CSS 伪类和伪对象选(五)
一.伪选择器 伪选择器包括:伪类选择器和伪对象选择器,以冒号(:)作为前缀,冒号后紧跟伪类或者伪对象名称,冒号前后没有空格,否则解析为包含选择器 如: div:hover{ font-size:12p ...
- 详解 CSS 属性 - 伪类和伪元素的区别[转]
首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...
- CSS 属性 - 伪类和伪元素
CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果.这里特殊指的是两者描述了其他 cs ...
- 关于css中伪类及伪元素的总结
css中的伪类和伪元素总是混淆,今天参考了很多资料,也查看了部分文档,现将伪类及伪元素总结如下: 一.由来: 伪类和伪元素的引入都是因为在文档树里有些信息无法被充分描述,比如CSS没有"段落 ...
- CSS的伪类和伪元素
伪类 W3C:"W3C" 列指示出该属性在哪个 CSS 版本中定义(CSS1 还是 CSS2). 属性 描述 CSS :active 向被激活的元素添加样式. 1 :focus 向 ...
- 详解 CSS 属性 - 伪类和伪元素的区别(再也不用概念盲了!!!)
首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...
随机推荐
- Tcp协议三次握手四次挥手
一.什么是TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6. 二.什 ...
- (三)论sizeof与strlen之间的区别
一.sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等. 它的功能是:获得保 ...
- python函数的 全局变量与局部变量
一.函数的全局变量 1.什么是全局变量 顶着头开始写,没有任何缩进,在py文件的任何位置都能调用 #!/usr/bin/env python # _*_ coding:utf8 _*_ name=&q ...
- ReactiveCocoa内存管理
1.我们创建的管道是如何被保存的么? ReactiveCocoa设计的目的之一是允许这样一种编程样式,即管道可以匿名创建.到目前为止,我们的管道都是这么处理的.为了支持这种模式,ReactiveCoc ...
- noVNC连接CentOS,以Web方式交付VNC远程连接
什么是noVNC? noVNC 是一个 HTML5 VNC 客户端,采用 HTML 5 WebSockets, Canvas 和 JavaScript 实现,noVNC 被普遍用在各大云计算.虚拟机控 ...
- 回调函数之基本的Promise
在 JavaScript 中,所有的代码都是单线程的,所谓的回调函数就是为了处理一些异步的操作.而多层的回调函数嵌套是一种比较古老的处理方式,这种代码的弊端显而易见,结构混乱.代码冗余,而 Promi ...
- 浅谈ASP.net处理XML数据
XML是一种可扩展的标记语言,比之之前谈到的html有着很大的灵活性,虽然它只是与HTML仅有一个字母只差,但两者有很大的区别. XML也是标记语言,所以它每个标签必须要闭合,而HTML偶尔忘了闭合也 ...
- How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On——RHEL Pacemaker中配置STONITH
本文主要简单介绍一下如何在RHEL 7 Pacemaker中配置一个fence_vmware_soap类型的STONITH设备(仅供测试学习). STONITH是Shoot-The-Other-Nod ...
- 【leetcode 简单】 第六十九题 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 - ...
- 网站发布IIS后堆栈追踪无法获取出错的行号
一.问题起因 系统发布上线后,有时会发生错误,那么错误的记录就很重要,它对于错误的排查和问题的发现有着重要的作用,通常我们采取的方式为Log日志文件记录和数据库错误记录.文本不会讨论错误记录的方式以及 ...