CSS伪类与伪元素「建议收藏」

CSS伪类与伪元素「建议收藏」为什么要引入伪类与伪元素?css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来修饰不在文档树中的部分,比如,一句话中的第一个字母,或是列表中的第一个元素,又或者是鼠标悬停在某个超链接上时要设置的样式。什么是伪类,伪元素?伪类:用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,我们可以…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

为什么要引入伪类与伪元素?

css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来修饰不在文档树中的部分,比如,一句话中的第一个字母,或是列表中的第一个元素,又或者是鼠标悬停在某个超链接上时要设置的样式。

什么是伪类,伪元素?

  • 伪类:用于当已有元素处于的某个状态时,为其添加对应的样式,这个状态是根据用户行为而动态变化的。比如说,当用户悬停在指定的元素时,我们可以通过:hover来描述这个元素的状态。虽然它和普通的css类相似,可以为已有的元素添加样式,但是它只有处于dom树无法描述的状态下才能为元素添加样式,所以将其称为伪类。
  • 伪元素:用于创建一些不在文档树中的元素,并为其添加样式。实际上,伪元素就是选取某些元素前面或后面这种普通选择器无法完成的工作。控制的内容和元素是相同的,但它本身是基于元素的抽象,并不存在于文档结构中。比如说,我们可以通过:before来在一个元素前增加一些文本,并为这些文本添加样式。

伪类的分类:状态伪类和结构性伪类

  • 状态伪类:是基于元素当前状态进行选择的。在与用户的交互过程中元素的状态是动态变化的,因此该元素会根据其状态呈现不同的样式。当元素处于某状态时会呈现该样式,而进入另一状态后,该样式也会失去。

       常见的状态伪类主要包括:

  1.   :link 应用于未被访问过的链接;    
  2.   :hover 应用于鼠标悬停到的元素;
  3.   :active 应用于被激活的元素;
  4.   :visited 应用于被访问过的链接,与:link互斥。
  5.   :focus 应用于拥有键盘输入焦点的元素。
  • 结构性伪类:是css3新增选择器,利用dom树进行元素过滤,通过文档结构的互相关系来匹配元素,能够减少class和id属性的定义,使文档结构更简洁。

       常见的结构性伪类包括:

  1.   :first-child 选择某个元素的第一个子元素;  
  2.   :last-child 选择某个元素的最后一个子元素;
  3.   :nth-child() 选择某个元素的一个或多个特定的子元素;
  4.   :nth-last-child() 选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;
  5.   :nth-of-type() 选择指定的元素;
  6.   :nth-last-of-type() 选择指定的元素,从元素的最后一个开始计算;
  7.   :first-of-type 选择一个上级元素下的第一个同类子元素;
  8.   :last-of-type 选择一个上级元素的最后一个同类子元素;
  9.   :only-child 选择的元素是它的父元素的唯一一个子元素;
  10.   :only-of-type 选择一个元素是它的上级元素的唯一一个相同类型的子元素;
  11.   :empty 选择的元素里面没有任何内容。
  12.   :checked匹配被选中的input元素,这个input元素包括radio和checkbox。
  13.   :default匹配默认选中的元素,例如:提交按钮总是表单的默认按钮。
  14.   :disabled匹配禁用的表单元素。
  15.   :enabled匹配没有设置disabled属性的表单元素。
  16.   :valid匹配条件验证正确的表单元素。

常见的伪元素选择器:

  1.   ::first-letter 选择元素文本的第一个字(母)。
  2.   ::first-line 选择元素文本的第一行。
  3.   ::before 在元素内容的最前面添加新内容。
  4.   ::after 在元素内容的最后面添加新内容。
  5.   ::selection匹配用户被用户选中或者处于高亮状态的部分
  6.   ::placeholder匹配占位符的文本,只有元素设置了placeholder属性时,该伪元素才能生效

注意:你会发现伪类元素使用了两个冒号 (::) 而不是一个冒号 (:),这是 CSS3 规范中的一部分要求,目的是为了区分伪类和伪元素,大多数浏览器都支持这两种表示方式。单冒号(:)用于 CSS3 伪类,双冒号(::)用于 CSS3 伪元素。对于 CSS2 中已经有的伪元素,例如 :before,单冒号和双冒号的写法 ::before 作用是一样的。

所以,如果你的网站只需要兼容 webkit、firefox、opera 等浏览器,建议对于伪元素采用双冒号的写法,如果不得不兼容 IE 浏览器,还是用 CSS2 的单冒号写法比较安全。

伪元素的应用:

  • 清除浮动:如果父元素的所有子元素都是浮动的,父元素的高度则无法撑开。可以通过对父元素添加after伪类撑开父元素高度,因为after就是其最后一个子元素。

    代码如下:

.clear::after {
    content: '';
    display: block;
    clear: both;
}

Jetbrains全家桶1年46,售后保障稳定

  • 画分割线:画一条如下的分割线

 CSS伪类与伪元素「建议收藏」 

   代码如下:

<style>
    * {
      padding: 0;
      margin: 0;
    }
    .spliter::before, .spliter::after {
      content: '';
      display: inline-block;
      border-top: 1px solid black;
      width: 200px;
      margin: 5px;
    }
  </style>
</head>
<body>
  <p class="spliter">分割线</p>
</body>
  • 计数器:使用CSS实现计数器,用到的属性有
  1.  counter-reset: 属性设置某个选择器出现次数的计数器的值。默认为 0。
  2.  counter-increment: 属性设置某个选取器每次出现的计数器增量。默认增量是 1。
  3.  content: 插入生成内容。

     代码如下:

<style>
    .chooses {
      counter-reset: letters;
    }
    .chooses input:checked {
      counter-increment: letters;
    }

    .choose span::after {
      content: counter(letters);
    }
  </style>
</head>
<body>
  <div class="chooses">
    <input type="checkbox">a
    <input type="checkbox">b
    <input type="checkbox">c
    <input type="checkbox">d
    <input type="checkbox">e
    <input type="checkbox">f
    <input type="checkbox">g
    <input type="checkbox">h
    <input type="checkbox">i
    <input type="checkbox">j
  </div>
  <p class="choose">我选择了<span></span>个字母</p>
</body>

  效果如下:

 CSS伪类与伪元素「建议收藏」 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198378.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • J2EE架构师之路[通俗易懂]

    J2EE架构师之路[通俗易懂]不经意的回首,工作进入第五个年头了,发现走过了从Java程序员到J2EE架构师的历程。发现电脑上安装了各种各样的J2EE工具:JBuilder,WSAD,Eclipse,Rose,Together,Weblogic,Jtest,Optimizator,Mysql…发现电脑上保存了各种各样的OpenSource项目:Tomcat,JBoss,Ant,Hibernate,Spr

    2022年6月30日
    27
  • MySQL的索引类型及创建索引

    MySQL的索引类型及创建索引一、介绍MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引5.全文索引二、语法CREATETABLEtable_name[col_namedatatype][unique|fulltext][index|key][index_name](col_name[length])[asc|desc]1.unique|fulltext…

    2022年6月3日
    40
  • C语言大数运算-乘除法篇「建议收藏」

    C语言大数运算-乘除法篇「建议收藏」前言:这是第三篇博客,也是一次介绍二个计算的博客,可能难度会比前两篇博客大一点,所以建议对于初学者来说一定要看完我的前两篇博客再来看本篇博客,关于本次实验的环境,和思想在第一篇博客已经简单介绍过了,所以不再赘述,我会先介绍大数的乘法载介绍大数的除法,乘法的难点在于要使用一个嵌套循环,除法的难点在于一个字使用符串比较方法的技巧,本次还是会将算法都写成函数,然后在main()函数中调用,原因是在第四

    2022年10月7日
    3
  • verycd下载办法_flac格式用什么播放器

    verycd下载办法_flac格式用什么播放器VeryCD的下载服务昨天晚上停掉了,和电影、剧集并列VeryCD三大板块的音乐从它的主页面上彻底抹掉了,如果不是这一年来VeryCD着力开拓了在线视频和类SNS服务的话,电影和剧集想来在昨晚也就一齐倒掉了。  VeryCD的命运其实在09年底BTchina被关掉的时候就能想象得到了,从那时起,VeryCD也就加快了转型的速度,面上的转型是“去盗版化”,除了SNS和在线播放业务外,这一年可

    2022年8月10日
    7
  • python获取当前时间的时间戳_python精确到毫秒时间戳

    python获取当前时间的时间戳_python精确到毫秒时间戳在Python中可以使用来自模块time、datetime或calendar的函数来获取当前时间戳,代码语句如【importtime;ts=time.time()print(ts)】。在Python中,有多种方法可以获得当前时间戳。如果希望在Python中获得时间戳,可以使用来自模块time、datetime或calendar的函数。使用模块time模块time是提供各种与时间相关的功能。…

    2022年10月2日
    3
  • PHP代码调试_php调试工具

    PHP代码调试_php调试工具PHP语言没有多线程、同步等概念,大多由函数和类组成,数据类型和语法比较简单,利用其丰富的内置函数就可以实现大部分的调试功能。因此,PHP代码比较容易理解,也很容易调试。php代码调试的实现方式主要有两种:通过PHP的调试函数实现通过断点调试工具实现1.PHP的调试函数对于一般的PHP代码,使用几个常用的输出函数就可实现代码调试。常

    2022年10月2日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号