HTML5 之 Fieldset 标签
概述
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;
}
兼容IE9
、IE10
。
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
绑定form
的id
属性,实现表单控件在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>
以下仅fieldset
和legend
两元素,宽度自适应,浏览器兼容性良好,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 标签相关推荐
- html5语义化规范,html5语义化标签使用规范
Html5添加了很多语义化标签,一个典型的html5页面结构可以如下安排 一.使用案例 1. 头部--header和nav标签 header头部,body下的直接子元素header一般用于放页面的介绍 ...
- fieldset标签、font标签
文献种类:专题技术文献: <fieldset>标签.<font>标签 开发工具与关键技术:VS/HTML 作者:吴泽锋 撰写时间:2019年6月28日 6.<fields ...
- html 隐藏整个fieldset,HTML: fieldset 标签
在线示例 对表单中的相关元素进行分组: 示例html> HTML5 fieldset标签的使用(基础教程网 nhooo.com) 客户资料(nhooo.com) 名称: 地址: 电话号码: 测试 ...
- HTML fieldset 标签 -- 表单分组
如果一个页面的表单项太多,我们最好把它们分组显示,就像使用p标签分开段落一样,可以使用fieldset与legend标签对表单内容分组. fieldset 标签 -- 对表单进行分组 fieldset ...
- lable、ul、ol、dl和table、fieldset标签
lable标签 有时候,我们希望点击文件的时候,鼠标的光标自动跳到输出框中.这需要使用lable功能 <div><label for="name2">姓名: ...
- HTML5语义化标签综合基础案例,HTML5语义化标签综合案例
HTML 标签 声明必须是 HTML 文档的第一行,位于 标签之前. 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 请始终向 HTML 文档添加 ...
- php video标签使用方法,HTML_HTML5 video标签(播放器)学习笔记(一):使用入门,近有在学习html5中video标签(播 - phpStudy...
HTML5 video标签(播放器)学习笔记(一):使用入门 近有在学习html5中video标签(播放器)的使用,这里做一些学习笔记,方便自己查阅和记录,本文是第一篇,将介绍的是使用该标签初始化该做 ...
- 移动前端html5 head 头标签
移动前端不得不了解的html5 head 头标签 2015-01-11 01:04 7965人阅读 评论(2) 收藏 举报 目录(?)[+] 本文主要内容来自一丝的常用的 HTML 头部标签和百度FE ...
- html5语义化布局分割代码,HTML5语义化标签布局的兼容性.html
html5语义化标签布局兼容性调整 header, section, footer, aside, nav, main, article, figure { display: block; } bod ...
最新文章
- vs2005 下的发邮件代码
- 使用 Flex 布局与其他普通布局的简单对比
- 利用ISCSI存储技术构建IP存储网络(安全篇)
- 数据结构——图-最短路径长度中最大的一个
- rabbitmq direct 多个消费者_RabbitMQ实战应用技巧
- 使用Q-Vision软件Kvaser硬件产品,支持ADAS测试,实现对总线网络的分析
- 精品手机看片神器电影网址导航网站
- 数据库课程设计报告——书店管理系统
- springboot项目控制层的接口注入报错
- PL(Procedural Language)/SQL程序设计语言
- 没有鸿蒙HarmonyOS,用这个软件也可以实现华为的多屏协助互动!
- 前端学起来特别吃力,新人入前端怎么学?
- 中兴oltc320用户手册_中兴OLT常用命令
- 资深猎头:面试前要做十四件事
- 家庭版Windows10/Windows11不支持远程桌面的解决办法
- MySQL整理-基础知识篇1
- 人工智能学习培训哪家好
- git 删除远程仓库中的文件(夹)
- Python入门之基础知识(三)
- oracle中带有in查询的子查询绑定变量方式
热门文章
Html5添加了很多语义化标签,一个典型的html5页面结构可以如下安排 一.使用案例 1. 头部--header和nav标签 header头部,body下的直接子元素header一般用于放页面的介绍 ...
文献种类:专题技术文献: <fieldset>标签.<font>标签 开发工具与关键技术:VS/HTML 作者:吴泽锋 撰写时间:2019年6月28日 6.<fields ...
在线示例 对表单中的相关元素进行分组: 示例html> HTML5 fieldset标签的使用(基础教程网 nhooo.com) 客户资料(nhooo.com) 名称: 地址: 电话号码: 测试 ...
如果一个页面的表单项太多,我们最好把它们分组显示,就像使用p标签分开段落一样,可以使用fieldset与legend标签对表单内容分组. fieldset 标签 -- 对表单进行分组 fieldset ...
lable标签 有时候,我们希望点击文件的时候,鼠标的光标自动跳到输出框中.这需要使用lable功能 <div><label for="name2">姓名: ...
HTML 标签 声明必须是 HTML 文档的第一行,位于 标签之前. 声明不是 HTML 标签:它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令. 请始终向 HTML 文档添加 ...
HTML5 video标签(播放器)学习笔记(一):使用入门 近有在学习html5中video标签(播放器)的使用,这里做一些学习笔记,方便自己查阅和记录,本文是第一篇,将介绍的是使用该标签初始化该做 ...
移动前端不得不了解的html5 head 头标签 2015-01-11 01:04 7965人阅读 评论(2) 收藏 举报 目录(?)[+] 本文主要内容来自一丝的常用的 HTML 头部标签和百度FE ...
html5语义化标签布局兼容性调整 header, section, footer, aside, nav, main, article, figure { display: block; } bod ...