<fieldset>
fieldset 元素通常用来对表单中的控制元素进行分组(也包括 label 元素)
浏览器支持
![]() | ![]() | ![]() | ![]() | ![]() |
所有主流浏览器都支持<fieldset>标签。 | ||||
示例
一个拥有<fieldset>,<legend >和<label>的表单
<form action="test.php" method="post">
<fieldset>
<legend>title</legend>
<input type="radio" id="radio"> <label for="radio">click me</label>
</fieldset>
</form>
标签定义及使用说明
<fieldset>标签可以将表单内的相关元素分组。<fieldset>标签将表单内容的一部分打包,生成一组相关表单的字段。- 当一组表单元素放到
<fieldset>标签内时,浏览器会以特殊方式来显示它们,它们可能有特殊的边界、3D 效果,或者甚至可创建一个子表单来处理这些元素。 <fieldset>标签会在相关表单元素周围绘制边框。<legend>标签为<fieldset>元素定义标题。<fieldset>标签没有必需的或唯一的属性。
| Content categories | 流式内容元素,sectioning root,listed,form-associatedelement,段落内容元素. |
|---|---|
| Permitted content | An optional<legend>element, followed by flow content. |
| Tag omission | 不允许,开始标签和结束标签都不能省略。 |
| 允许的父元素 | 可接受的任何元素flow content. |
| DOM接口 | HTMLFieldSetElement |
注意:与几乎任何其他元素不同,WHATWG HTML Rendering规范建议
作为min-width:min-content默认样式的一部分,并且许多浏览器都实现了这种样式(或者与其类似的东西).<fieldset>
属性
| 属性 | 值 | 描述 |
|---|---|---|
| disabled HTML5新增 | disabled | 规定该组中的相关表单元素应该被禁用。 |
| form HTML5新增 | form_id | 规定 fieldset 所属的一个或多个表单。 |
| name HTML5新增 | text | 规定 fieldset 的名称。 |
HTML 4.01 与 HTML 5 之间的差异
HTML5 中新增了一些<fieldset>的新属性:disabled、form、name,HTML 4.01 中不支持这些属性。
全局属性
<fieldset>标签支持HTML的全局属性。
事件属性
<fieldset>标签支持HTML的事件属性。
实例
对表单中的相关元素进行分组:
<form> <fieldset> <legend>personalia:</legend> name:<input type="text"><br> email:<input type="text"><br> date of birth:<input type="text"> </fieldset> </form>
利用包含radioboxesandtextboxes的 fieldset 模拟一个可编辑的<select>元素。下面的例子只使用了 HTML 和 CSS.
请注意,屏幕朗读和辅助设备不能正确的解析下面的表单,如果不使用正确的元素这个例子是不适合在生产环境中使用.
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>editable [pseudo]select</title>
<style type="text/css">
/* generic form fields */
fieldset.elist, input[type="text"], textarea, select, option, fieldset.elist ul, fieldset.elist > legend, fieldset.elist input[type="text"], fieldset.elist > legend:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="text"] {
padding: 0 20px;
}
textarea {
width: 500px;
height: 200px;
padding: 20px;
}
textarea, input[type="text"], fieldset.elist ul, select, fieldset.elist > legend {
border: 2px #cccccc solid;
border-radius: 10px;
}
input[type="text"], fieldset.elist, select, fieldset.elist > legend {
height: 32px;
font-family: tahoma;
font-size: 14px;
}
input[type="text"]:hover, textarea:hover, select:hover, fieldset.elist:hover > legend {
background-color: #ddddff;
}
select {
padding: 4px 20px;
}
option {
height: 30px;
padding: 5px 4px;
}
option:not(:checked), textarea:focus {
background-color: #ffcccc;
}
fieldset.elist > legend:after, fieldset.elist label {
height: 28px;
}
input[type="text"], fieldset.elist {
width: 316px;
}
input[type="text"]:focus {
background: #ffcccc url("data:image/gif;base64,r0lgodlheaaqanu5apnoxuvr6+uxpdvb2+rq6ri4uo7qxunp6dpt06shv+/rx8vly+nezlo0sbe3t9ksas+qaacev8rkyp2dnf39/qaaak6ursifzhfxcc/qzu3mxyymjexcjnv1dc6mao7u7o+pj2txnoaghtfdpkcdvu3lxm+tcakev9bw1qofvwnjy8kristexnra2nbbobgxsby8vo/mu7kyso9zauzs7msgaiikhf///8zmzp///waaaaaaaaaaaaaaaaaaaaaaach5baeaadkalaaaaaaqabaaaaaxwjxwscwoyzwkmpkkzmoaqdqajdpqaqw2m53nrjlboaarfczomce0c99o8dgnmvm8tm3bbydr9x11dwkzdg5yc2oqjircenx/mxoeetm2q3pxatmlf4mylo17oasdlispmyaioiy0bzmcitmtkbasjgssftmqgxitmjyuotqbbaqhxge0wzcfmtdrmi/qra022nnang1cqqa7") no-repeat 2px center !important;
}
input[type="text"]:focus, textarea:focus, select:focus, fieldset.elist > legend {
border: 2px #ccaaaa solid;
}
fieldset {
border: 2px #af3333 solid;
border-radius: 10px;
}
/* editable [pseudo]select (i.e. fieldsets with [class=elist]) */
fieldset.elist {
display: inline-block;
position: relative;
vertical-align: middle;
overflow: visible;
padding: 0;
margin: 0;
border: none;
}
fieldset.elist ul {
position: absolute;
width: 100%;
max-height: 320px;
padding: 0;
margin: 0;
overflow: hidden;
background-color: transparent;
}
fieldset.elist:hover ul {
background-color: #ffffff;
border: 2px #af3333 solid;
left: 2px;
overflow: auto;
}
fieldset.elist ul > li {
list-style-type: none;
background-color: transparent;
}
fieldset.elist label {
display: none;
width: 100%;
}
fieldset.elist input[type="text"] {
width: 100%;
height: 30px;
line-height: 30px;
border: none;
background-color: transparent;
border-radius: 0;
}
fieldset.elist > legend {
display: block;
margin: 0;
padding: 0 0 0 5px;
position: absolute;
width: 100%;
cursor: default;
background-color: #ccffcc;
line-height: 30px;
font-style: italic;
}
fieldset.elist:hover > legend {
position: relative;
overflow: hidden;
}
fieldset.elist > legend:after {
width: 20px;
content: "2335";
float: right;
text-align: center;
border-left: 2px #cccccc solid;
font-style: normal;
cursor: default;
}
fieldset.elist:hover > legend:after {
background-color: #99ff99;
}
fieldset.elist ul input[type="radio"] {
display: none;
}
fieldset.elist input[type="radio"]:checked ~ label {
display: block;
width: 292px;
background-color: #ffffff;
}
fieldset.elist:hover input[type="radio"]:checked ~ label {
width: 100%;
}
fieldset.elist:hover label {
display: block;
height: 100%;
}
fieldset.elist label:hover {
background-color: #3333ff !important;
}
fieldset.elist:hover input[type="radio"]:checked ~ label {
background-color: #aaaaaa;
}
</style>
</head>
<body>
<form method="get" action="test.php">
<fieldset>
<legend>order a t-shirt</legend>
<p>write your name (simple textbox): <input type="text" /></p>
<p>choose your size (simple select):
<select>
<option value="s">small</option>
<option value="m">medium</option>
<option value="l">large</option>
<option value="xl">extra large</option>
</select></p>
<div>what address do you want to use? (editable pseudoselect)
<fieldset class="elist">
<legend>address…</legend>
<ul>
<li><input type="radio" value="1" id="address-switch_1" checked /><label for="address-switch_1"><input type="text" value="19 quaker ridge rd. bethel ct 06801" /></label></li>
<li><input type="radio" value="2" id="address-switch_2" /><label for="address-switch_2"><input type="text" value="1000 coney island ave. brooklyn ny 11230" /></label></li>
<li><input type="radio" value="3" id="address-switch_3" /><label for="address-switch_3"><input type="text" value="2962 dunedin cv. germantown tn 38138" /></label></li>
<li><input type="radio" value="4" id="address-switch_4" /><label for="address-switch_4"><input type="text" value="915 e 7th st. apt 6l. brooklyn ny 11230" /></label></li>
</ul>
</fieldset>
</div>
<p>write a comment:<br />
<textarea></textarea></p>
<p><input type="reset" value="reset" /> <input type="submit" value="send!" /></p>
</fieldset>
</form>
</body>
</html>





