概述

  fieldset 用于对表单中的控件元素进行分组。

  fieldset是块级双标签,绝大多数浏览器都支持。

属性

disabled

  fieldset的所有子代控件均会继承,即不可编辑状态。

<form method="post" action="http://www.baidu.com"><div><label for="username">用户名</label><input type="text" name="username"></div><fieldset disabled><legend>支付信息</legend><div><label for="phone">手机号</label><input type="text" name="phone"></div><div><label for="type">支付方式</label><input type="radio" name='type' value="1" id="type-1"><label for="type-1">现金</label><input type="radio" name='type' value="0" id="type-0"><label for="type-0">其他</label></div></fieldset><button type="submit">提交</button>
</form>

  Chrome浏览器呈现,禁用后鼠标、键盘Tab均无法选中。

  但是IE浏览器较为特殊,不仅可以输入,还能触发输入事件。

  更糟糕的是fieldset内部的按钮,点击还会触发事件。

  兼容IE11浏览器。

fieldset[disabled] {pointer-events: none;
}

  兼容IE9IE10

fieldset {position: relative;
}fieldset[disabled]::after {content: '';position: absolute;left: 0;top: 0;right: 0;bottom: 0;background: rgba(0, 0, 0, 0);
}

  IE8及以下浏览器,样式处理较麻烦,可采用js处理。

<body>...<script>function forEach(array, callback) {for (var i = 0; i < array.length; i++) {callback(array[i], i, array)}}var fieldsets = document.getElementsByTagName('fieldset')var inputs = []var buttons = []forEach(fieldsets, function (fieldset) {if (fieldset.disabled) {buttons = fieldset.getElementsByTagName('button')inputs = fieldset.getElementsByTagName('input')forEach(buttons, function (button) {button.disabled = true})forEach(inputs, function (input) {input.disabled = true})}})</script>
</body>

  在表单提交时,即使不可编辑状态的控件中含有默认值,也不会伴随form一起提交。

  提交时请求参数。

form

  将fieldset关联为form的一部分,但是浏览器支持程度比较低。

  如下fieldset绑定formid属性,实现表单控件在form外部关联上了form

<form method="post" id="form" action="http://www.baidu.com"><div><label for="username">用户名</label><input type="text" name="username"></div><button type="submit">提交</button>
</form>
<fieldset form="form"><legend>支付信息</legend><div><label for="phone">手机号</label><input type="text" name="phone"></div><div><label for="type">支付方式</label><input type="radio" name='type' value="1" id="type-1"><label for="type-1">现金</label><input type="radio" name='type' value="0" id="type-0"><label for="type-0">其他</label></div>
</fieldset>

样式

  fieldset默认包括内外边距,同时周围有一个非完全闭合的边框,可通过border属性修改其颜色和宽度等。

  注意边框线没有从文字上面穿过去,而是文字垂直居中压在边框线上,文字背景色是透明而非白色。

  若通过CSS模拟,定位文本到边框上是没法实现的,文字必然要设置白色背景色才能遮住边框,但是若fieldset的背景色为非白色,就会出现问题。

  另外一种可行的方式是文字和两个元素,其中两个元素需设置宽度和1px高度,三元素垂直方向居中对齐,但是最终实现效果也只能接近fileldset

文本位置和样式

  fieldset开口处的文字是legend元素渲染的,因此可修改legend元素的CSS属性来调整文本样式。

  可调整legend左右内边距来控制文字左右留白。

legend {padding: 0 50px;
}

  调整legend左外边距来控制文字位置,注意设置margin: auto可水平居中文字。

legend {padding: 0;animation: marginLeft 2s infinite alternate;
}@keyframes marginLeft {100% {margin-left: 160px;}
}

  也可设置text-align属性控制文字位置。

legend {padding: 0;text-align: right;
}

应用场景

分割线

  如下文字两侧带横线。

  一般可通过伪元素实现,宽度自适应,浏览器兼容方面IE10及以下不兼容。

.hr {display: flex;align-items: center;
}.hr::after,
.hr::before {content: '';flex: 1;height: 1px;background: #000;
}.hr::before {margin-right: 10px;
}.hr::after {margin-left: 10px;
}<div class="hr">分隔线</div>

  以下仅fieldsetlegend两元素,宽度自适应,浏览器兼容性良好,IE7及以下不兼容。

fieldset {padding: 0;margin: 0;border: none;border-top: 1px solid #000;
}legend {margin: auto;padding: 0 10px;
}<fieldset><legend>分割线</legend>
</fieldset>

文字环绕

  由四个fieldset定位叠加形成,貌似除了炫酷点实际没啥用处。

.container {position: relative;width: 300px;height: 300px;
}fieldset {position: absolute;top: 0;left: 0;width: 100%;height: 100%;border: none;border-top: 10px solid #000;box-sizing: border-box;
}legend {font-size: 24px;line-height: 10px;font-weight: bold;padding: 0 10px;animation: move 2s infinite linear alternate;
}fieldset:nth-of-type(2) {transform: rotate(90deg);
}fieldset:nth-of-type(3),
fieldset:nth-of-type(3) legend {transform: rotate(180deg);
}fieldset:nth-of-type(4) {transform: rotate(-90deg);
}@keyframes move {100% {margin-left: 70px;}
}<div class="container"><fieldset><legend>CSS</legend></fieldset><fieldset><legend>HTML</legend></fieldset><fieldset><legend>JavaScript</legend></fieldset><fieldset><legend>TypeScript</legend></fieldset>
</div>

HTML5 之 Fieldset 标签相关推荐

  1. html5语义化规范,html5语义化标签使用规范

    Html5添加了很多语义化标签,一个典型的html5页面结构可以如下安排 一.使用案例 1. 头部--header和nav标签 header头部,body下的直接子元素header一般用于放页面的介绍 ...

  2. fieldset标签、font标签

    文献种类:专题技术文献: <fieldset>标签.<font>标签 开发工具与关键技术:VS/HTML 作者:吴泽锋 撰写时间:2019年6月28日 6.<fields ...

  3. html 隐藏整个fieldset,HTML: fieldset 标签

    在线示例 对表单中的相关元素进行分组: 示例html> HTML5 fieldset标签的使用(基础教程网 nhooo.com) 客户资料(nhooo.com) 名称: 地址: 电话号码: 测试 ...

  4. HTML fieldset 标签 -- 表单分组

    如果一个页面的表单项太多,我们最好把它们分组显示,就像使用p标签分开段落一样,可以使用fieldset与legend标签对表单内容分组. fieldset 标签 -- 对表单进行分组 fieldset ...

  5. lable、ul、ol、dl和table、fieldset标签

    lable标签 有时候,我们希望点击文件的时候,鼠标的光标自动跳到输出框中.这需要使用lable功能 <div><label for="name2">姓名: ...

  6. HTML5语义化标签综合基础案例,HTML5语义化标签综合案例

    HTML 标签 声明必须是 HTML 文档的第一行,位于 标签之前. 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 请始终向 HTML 文档添加 ...

  7. php video标签使用方法,HTML_HTML5 video标签(播放器)学习笔记(一):使用入门,近有在学习html5中video标签(播 - phpStudy...

    HTML5 video标签(播放器)学习笔记(一):使用入门 近有在学习html5中video标签(播放器)的使用,这里做一些学习笔记,方便自己查阅和记录,本文是第一篇,将介绍的是使用该标签初始化该做 ...

  8. 移动前端html5 head 头标签

    移动前端不得不了解的html5 head 头标签 2015-01-11 01:04 7965人阅读 评论(2) 收藏 举报 目录(?)[+] 本文主要内容来自一丝的常用的 HTML 头部标签和百度FE ...

  9. html5语义化布局分割代码,HTML5语义化标签布局的兼容性.html

    html5语义化标签布局兼容性调整 header, section, footer, aside, nav, main, article, figure { display: block; } bod ...

最新文章

  1. vs2005 下的发邮件代码
  2. 使用 Flex 布局与其他普通布局的简单对比
  3. 利用ISCSI存储技术构建IP存储网络(安全篇)
  4. 数据结构——图-最短路径长度中最大的一个
  5. rabbitmq direct 多个消费者_RabbitMQ实战应用技巧
  6. 使用Q-Vision软件Kvaser硬件产品,支持ADAS测试,实现对总线网络的分析
  7. 精品手机看片神器电影网址导航网站
  8. 数据库课程设计报告——书店管理系统
  9. springboot项目控制层的接口注入报错
  10. PL(Procedural Language)/SQL程序设计语言
  11. 没有鸿蒙HarmonyOS,用这个软件也可以实现华为的多屏协助互动!
  12. 前端学起来特别吃力,新人入前端怎么学?
  13. 中兴oltc320用户手册_中兴OLT常用命令
  14. 资深猎头:面试前要做十四件事
  15. 家庭版Windows10/Windows11不支持远程桌面的解决办法
  16. MySQL整理-基础知识篇1
  17. 人工智能学习培训哪家好
  18. git 删除远程仓库中的文件(夹)
  19. Python入门之基础知识(三)
  20. oracle中带有in查询的子查询绑定变量方式

热门文章

  1. Siri:赋予机器和米老鼠唐老鸭一样的个性化魅力
  2. 学3D建模需要掌握的基础
  3. 微信小游戏-飞机游戏玩法改造系列(一)
  4. Codeforces Round #552 (Div. 3) C题
  5. 【酷熊科技】工作积累 ----------- Unity3D button 回调事件
  6. KMP算法(Q仔总结易懂版)
  7. iTunes,iTunes Store和App Store区别
  8. 单片机c语言除法运算,针对小容量单片机程序优化方式--乘除法篇
  9. Qt每天一个小技巧之setProperty 设置属性功能
  10. 我的苹果开发学习笔记