自闭合标签由包围,不包含任何元素内容。

在XHTML标准中,自闭合标签还需要在结尾的标记处加上/表示结束,这模仿了XML中的自闭合标签,后来到HTML5标准里舍弃了这一没有意义的规定。

在HTML5中,不同类型的标签自闭合会有不同的解析方式:

规范中被设计成空标签的标签,如input,img等,会被解析成自闭合的标签,用这类标签时,即使用一个结束标签来形成闭合标签,后面的结束标签也会被忽略掉,例如,到浏览器里看到的还是自闭合的

包含内容的标签,如div,span等,会被解析成

的形式,如果这些标签后面还有其他兄弟元素,它们会被包含进去,变成子元素

解析后变成

由于自闭合标签不包含子元素,在应用伪元素(pseudo-element)的时候会略微有点麻烦。

CSS1中的伪元素有::first-letter和::first-line两种,这两种伪元素只能应用在块级元素上,但常用的自闭合标签如input,img都是行内元素,即使是修改display属性也不起作用,所以不讨论这两种伪元素。

接下来重点看CSS2中的两个伪元素,::before和::after,它们可以被应用到自闭合标签中,但也仅限于input[type=checkbox]和input[type=radio]元素。

input{

position: relative;

}

input::before{

content: '';

height: 18px;

width: 18px;

position: absolute;

background-color: #dddddd;

}

上面的样式代码在webkit内核浏览器(Chrome,Safari,Opera)中能够正常显示,其它浏览器都没有效果。实际上,加了伪元素之后,伪元素会被嵌入到input元素中,input也不再是自闭合的了,如下面所示,

::before

如果不考虑其它的浏览器,我们可以直接在input元素上加伪元素来实现自定义checkbox和radio button。

这样做兼容性不好,其实我们可以在input的后面加上一个span元素,通过给span元素伪元素来实现自定义样式的checkbox和radio。

.input-wrapper{

position: relative;

display: inline-block;

height: 18px;

width: 18px;

}

.input-wrapper input[type=checkbox]{

position: absolute;

height: 18px;

width: 18px;

margin: 0;

opacity: 0;

z-index: 1;

}

.input-wrapper .input-inner{

position: absolute;

left: 0px;

height: 18px;

width: 18px;

border: 1px solid #dddddd;

}

.input-wrapper .input-inner::before{

content: '';

height: 12px;

width: 6px;

top: 2px;

left: 5px;

position: absolute;

border-right: 2px solid #4dc86f;

border-bottom: 2px solid #4dc86f;

transform: rotate(45deg);

visibility: hidden;

}

.input-wrapper input[type=checkbox]:checked+.input-inner::before{

visibility: visible

}

span.input-inner元素显示为正方形选择框,加上伪元素,用来显示勾选状态,通过:checked和+选择器与input元素联动,从而实现自定义样式的checkbox。

需要强调的是这里使用的是visibility这个属性控制伪元素的显示与隐藏,而是不是用display,原因是操作display会引起浏览器的回流与重绘,但是visibility属性改变后浏览器只用重绘即可,频繁操作的情况下使用visibility效率会更高。

html5自闭合标签有哪些,自闭合标签与伪元素相关推荐

  1. html 伪元素放入标签,CSS中的before和:after伪元素使用详解

    如果你一直密切关注着各种网页设计的博客,你可能已经注意到了:before和:after伪元素已经在前端开发中获得了相当多的关注.特别是在Nicolas Gallagher的博客中,后期运用了很多伪类元 ...

  2. 第四篇 HTML5 伪类与伪元素

    目录 一.伪类 1.概念: 1.1.first-child伪类 1.2.超链接伪类 1.3.CSS类和伪类 1.4.其他伪类 二.伪元素 CSS中伪对象详解 :first-line 伪对象 :firs ...

  3. php 闭合标记,什么叫自闭合标签?自闭标签有什么用

    什么叫自闭合标签?自闭标签有什么用?相信很多刚刚入门的html还不知道自闭合标签?下面 第一PHP社区 为您总结一下自闭标签. 一:什么叫自闭合标签 所谓闭合标签就是指标签有开始,和结束,目前在htm ...

  4. br 标签是否需要自闭合

    <br>规范还是<br />规范 <img>规范还是<img /> 规范 没有深入研究 觉得很奇怪,今天看了一篇文档  http://blog.jobb ...

  5. js正则匹配闭合标签_正则匹配闭合HTML标签(支持嵌套)

    OK,先确定我们要解决的问题--从一段Html文本中找出特定id的标签的innerHTML. 这里面最大的难点就是,Html标签是支持嵌套的,怎么能够找到指定标签相对应的闭合标签呢? 我们可以这样想, ...

  6. 详解html5新增的标签与css3中伪类和伪元素

    html5 / css3 基础篇(第一篇) 回顾 是的,你没看错!今天是一个全新的开始,今天这一讲我们就要开始h5和c3了,html 和 css的基础篇我们都告一段落了.html一共两篇,css走过了 ...

  7. php 收缩栏,HTML5每日一练之details展开收缩标签的应用

    HTML5每日一练之details展开收缩标签的应用 details标签的出现,为我们带来了更好的用户体验,不必为这种收缩展开的效果再编写JS来实现. 注:目前仅Chrome支持此标签. detail ...

  8. HTML5+CSS3 02(表格、表单标签、语义化,字符实体标签)

    一 表格的基本使用 1.1 表格的基本标签 场景:在网页中以行+列的单元格的方式整齐展示和数据,如:学生成绩表 基本标签: 标签名 说明 table 表格整体,可用于包裹多个tr tr 表格每行,可用 ...

  9. html5才有的标签是什么意思,html5header标签是什么意思?html5header标签的用法详解(附实例)-...

    本篇文章主要的向大家介绍了关于html5 header标签的元素的基本介绍,和header标签的用法实例解析.下面就让我们一起来看看这篇关于html5 header标签的文章吧 一.首先我们来说说ht ...

最新文章

  1. HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求。...
  2. php支付密码控件,vue支付密码的图文实例
  3. python中实例方法与实例属性-Python中的类属性和实例属性以及静态方法和类方法...
  4. 动态规划之数字三角形模型
  5. android 键盘点击事件监听事件,Android 键盘事件触发以及监听
  6. android商店账号密码错误,安卓:我失去了我的安卓密钥商店,我该怎么办?
  7. iOS内存管理机制解析
  8. 折线图 放大_第二个折线图(Line Plot)的示例代码
  9. (node:62099) ExperimentalWarning: The fs.promises API is experimental
  10. 国密 sm系列 java实现_国密标准SM3算法,java实现
  11. 计算机作业个人简历word,计算机毕业生个人简历模板word模板
  12. axure中继器求和_axure中继器使用方法图文详解
  13. [因果推断] 什么是因果推断(一)
  14. @SpringBootTest注解分析(一)Found multiple @SpringBootConfiguration annotated classes
  15. 美国队长的工资 python代码-Python | 用Python画个美队盾牌送给你
  16. java--吸血鬼数的判断
  17. layDate 时间范围限制 开始时间小于结束时间
  18. diy公益拍卖会 杨宗纬吴尊林俊杰s.h.e等拼人气
  19. 编写函数long fun(int high,int n),功能是:计算并返回high以内(不包含high)最大的n个素数之和。若不足n个,则到最小素数2为止。例如:若high=100,n=10,则函数
  20. mysql服务怎么启动和关闭?

热门文章

  1. 剑三服务器维护后蹲宠刷新吗,剑三宠物开服刷新点合集 重置版除奇遇外宠物刷新点一览...
  2. 离职后心生不满、某医院前网管“炫技性报复”,让整个医院系统瘫痪…
  3. 牛客网编程入门刷题简单整理
  4. trueNas/freebsd查看是否开启睿频
  5. 舒亦梵:4.24非农周即将来临,黄金趋势将会何去何从
  6. MySQL之——数据库的基本操作
  7. Explaining Knowledge Distillation by Quantifying the Knowledge
  8. html table 合并单元格 分页,Word表格跨页,合并单元格后,希望跨页的每一页都显示合并单元格的内容(有图)...
  9. Swift5.1 语言指南(二十三) 协议
  10. arm汇编指令中MRS和MSR