整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端程序员不可忽略的 11 个有用的 HTML 属性

TML 是网络的基石。 了解这种标记语言的一些鲜为人知但有用的部分可以让您的前端工作更轻松。 HTML 属性提供了多种功能,可以帮助您充分利用 HTML。 它定义了 HTML 元素的附加特征或属性。在本文中,小编将带您了解 11 个您可能还没有听说过的 HTML 属性。

1. multiple

此属性允许用户输入多个值。 您可以将 multiple 属性与 <input> 标签和 <select> 标签一起使用。 此布尔属性仅对电子邮件或文件输入类型有效。

在 <select> 标签中使用 multiple 属性

<label for="language">Select languages:</label>
<select name="language" id="language" multiple>
<option value="C++">C++</option>
<option value="Python">Python</option>
<option value="JavaScript">JavaScript</option>
<option value="Java">Java</option>
</select>

使用 multiple 属性进行文件输入

通过对文件输入使用 multiple 属性,您可以选择多个文件(通过按住 Shift 或 Ctrl 键)。

<input type="file" multiple>

使用 multiple 属性进行电子邮件输入

通过对电子邮件输入使用 multiple 属性,您可以输入以逗号分隔的电子邮件地址列表。 将从列表中的每个地址中删除所有空格。

<input type="email" multiple>

2.contenteditable

您可以使用 contenteditable 属性使网页上的 HTML 内容可编辑。 这是一个全局属性,即它对所有 HTML 元素都是通用的。

<p contenteditable="true">
在这里您可以编辑您想输入的内容
</p>

3.spellcheck

spellcheck 属性指定是否可以检查元素的拼写错误。 您可以对 <textarea> 元素中的文本、可编辑元素中的文本或输入元素中的文本(密码除外)中的文本进行拼写检查。

<p contenteditable="true" spellcheck="true">
在这里输入您想拼写检查的内容
</p>

4.download

您可以使用下载属性下载资源。 download 属性告诉浏览器下载指定的 URL 而不是导航到它。 您可以将下载属性与 <a> 标签和 <area> 标签一起使用。

注意:下载属性仅适用于同源 URL。 它遵循同源策略的规则。

<a href="xyz.png" download="myImage">下载</a>

5. accept

<input> 标签的 accept 属性指定用户可以上传的文件类型。 您可以指定一个或多个文件类型的逗号分隔列表作为其值。

接受音频文件

<input type="file" id="audioFile" accept="audio/*">

接受视频文件

<input type="file" id="videoFile" accept="video/*">

接受图像文件

<input type="file" id="imageFile" accept="image/*">

接受 Microsoft Word 文件

<input type="file" id="docpicker"
accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document">

接受 PNG 或 JPEG 文件

<input type="file" id="imageFile" accept=".png, .jpg, .jpeg">

接受 PDF 文件

<input type="file" id="pdfFile" accept=".pdf">

6. translate

translate 属性告诉浏览器在页面本地化时该元素是否应该被翻译。 它可以有 2 个值:“是”或“否”。

<p translate="no">
输入您想翻译或者不需要翻译的内容
</p>

7.poster

poster 属性用于在视频下载或用户播放视频之前显示图像。

注意:如果您不指定任何内容,则在第一帧可用之前不会显示任何内容。 当第一帧可用时,它显示为海报帧。

<video controls
src="http://www.示例.com/gtv-videos-bucket/sample/ElephantsDream.mp4"
poster="posterImage.png">
</video>

8.inputmode

inputmode 属性指示浏览器在用户选择任何 input 或 textarea 元素时显示哪个键盘。 此属性接受各种值:

None

<input type="text" inputmode="none" />

Numeric

<input type="text" inputmode="numeric" />

Tel

<input type="text" inputmode="tel" />

Decimal

<input type="text" inputmode="decimal" />

Email

<input type="text" inputmode="email" />

URL

<input type="text" inputmode="url" />

Search

<input type="text" inputmode="search" />

9. pattern

<input> 元素的模式属性允许您指定一个正则表达式,元素的值将根据该正则表达式进行验证。 您可以将模式属性与多种输入类型一起使用,例如文本、日期、搜索、URL、电话、电子邮件和密码。

<form>
<input name="username" id="username" pattern="[A-Za-z0-9]+">
</form>

10.autocomplete

autocomplete 属性指定浏览器是否应根据用户输入自动完成输入。 您可以将 autocomplete 属性用于多种输入类型,例如文本、搜索、URL、电话、电子邮件、密码、日期选择器、范围和颜色。 您可以将此属性与 <input> 元素或 <form> 元素一起使用。

<input name="credit-card-number" id="credit-card-number" autocomplete="off">

11.autofocus

autofocus 属性是一个布尔属性,指示元素应该专注于页面加载。 您可以将此属性与 <button>、<input>、<keygen>、<select> 或 <textarea> 元素一起使用。

在 input 元素中使用 autofocus 属性

<input type="text" autofocus>

在 select 元素中使用 autofocus 属性

select name="languages" id="languages">
<option value="C++">
C++
</option>
<option value="Python">
Python
</option>
<option value="JavaScript">
JavaScript
</option>
<option value="Java">
Java
</option>
</select>

在 textarea 元素中使用 autofocus 属性

<textarea autofocus>
输入您想要显示的内容
</textarea>

使用 JavaScript One-Liners 让您的生活更轻松

单行代码有助于以更少的代码实现更多的目标。 您可以像专业人士一样使用多个 JavaScript 单行代码来编写代码。

只需一行代码,您就可以对数组进行混合、求数组的平均值、检查数组是否为空、生成随机十六进制颜色、生成随机 UUID 等等。

内容是《Web前端开发之Javascript视频》的课件,请配合大师哥《Javascript》视频课程学习。

在HTML中,任何元素都可以被编辑;启用编辑功能:HTML标签设置contenteditable属性,或者在Javascript中设置该元素的contentEditable属性;

<div id="editor" contenteditable>单击编辑</div>
<div id="mydiv">也可编辑</div>
<script>
var mydiv = document.getElementById("mydiv");
mydiv.contentEditable = true;
</script>

元素被设置成可编辑后,除了常规的插入删除等操作外,还可以使用document.execCommand()方法对当前选择的内容进行编辑,比如,设置文本的样式,如加粗、倾斜等;

另外,有些浏览器允许键盘快捷键(如Ctrl+B加粗)来加粗当前选中的文本,Firefox使用Ctrl+B和Ctrl+I;

contenteditable也存在着兼容问题,如,当回车换行时,不同的浏览器有不同有处理,标准浏览器一般会使用div,而IE会使用p来分段,有些会使用br;所以,可以使用一个替代的方案document.execCommand()方法;如:

mydiv.addEventListener("keydown", function(e){
    if(e.keyCode == 13)
        document.execCommand("defaultParagraphSeparator", false, "p");
});

HTMLElement.isContentEditable属性:

只读属性返回一个布尔值:如果当前元素的内容为可编辑状态,则返回true,否则返回false;

var mydiv = document.getElementById("mydiv");
mydiv.contentEditable = true;
console.log(mydiv.isContentEditable);

浏览器有可能为表单控件和具有contenteditable元素支持自动拼写检查;在支持该功能的浏览器中,检查可能默认开启或关闭;为元素添加spellcheck属性来显式开启拼写检查,或设置为false来显式关闭该功能;

designMode属性:

将Document对象的designMode属性设置为”on”使得整个文档可编辑,设置为”off”将恢复为只读文档;designMode属性并没有对应的HTML属性;

window.onload = function(){
    document.designMode = "on";
}

如,使<iframe>内部的文档可编辑;

<iframe id="editor" src="about:blank"></iframe>
<script>
window.onload = function(){
    var editor = document.getElementById("editor");
    editor.contentDocument.designMode = "on";
}
</script>

document.execCommand()方法:

浏览器定义了多个文本编辑命令,但大部分没有键盘快捷键;为了执行这些命令,可以使用Document对象的execCommand()方法;当HTML文档切换到designMode模式或存在可编辑元素或当前选择或给出范围,就可以使用此方法运行命令来操纵内容区域的元素;

语法:bool = document.execCommand(aCommandName, aShowDefaultUI, aValueArgument);

其返回一个Boolean值,如果是false,则表示操作不被支持或未被启用;该方法需要三个参数:aCommandName命令名称,如”bold”、”subscript”、”justifycenter”和”insertimage”等之类的字符串;aShowDefaultUI是个布尔值,表示浏览器要不要提示用户输入所需要值,一般为false;aValueArgument为用户输入的值,默认为null;

<div id="mydiv">Web前端开发</div>
<button id="btnBold">加粗</button>
<button id="btnLink">插入链接</button>
<script>
var mydiv = document.getElementById("mydiv");
mydiv.contentEditable = true;
var btnBold = document.getElementById("btnBold");
btnBold.addEventListener("click",bold, false);
function bold(){
    document.execCommand("bold");
}
var btnLink = document.getElementById("btnLink");
btnLink.addEventListener("click", link, false);
function link(){
    var url = prompt("输入链接URL:");
    if(url)
        document.execCommand("createlink", true,url);
}
</script>

命令列表:

  • 2D-Position:允许通过拖曳移动绝对定位的对象;
  • AbsolutePosition:设定元素的 position 属性为“absolute”(绝对);
  • backColor:修改文档的背景颜色,需要一个<color>类型的字符串值作为参数传入,注:IE浏览器用这个设置文字的背景颜色;
  • BlockDirLTR:目前尚未支持;
  • BlockDirRTL:目前尚未支持;
  • bold:开启或关闭选中文字或插入点的粗体字效果,IE使用 <strong>标签,而不是<b>标签;
  • BrowseMode:目前尚未支持;
  • ClearAuthenticationCache:清除缓存中的所有身份验证凭据;
  • contentReadOnly:通过传入一个布尔参数设置文档内容的可编辑性;(IE浏览器不支持)
  • copy:拷贝当前选中内容到剪贴板;
  • CreateBookmark:创建一个书签锚或获取当前选中区或插入点的书签锚的名称;
  • createLink:将选中内容创建为一个锚链接,该命令需要一个hrefURI字符串作为参数值传入;
  • cut:剪贴当前选中的文字并复制到剪贴板;
  • decreaseFontSize:给选中文字加上<small>标签,或在选中点插入该标签;(IE浏览器不支持)
  • defaultParagraphSeparator:更改在可编辑文本区域中创建新段落时使用的段落分隔符
  • delete:删除选中部分;
  • DirLTR:目前尚未支持;
  • DirRTL:目前尚未支持;
  • EditMode:目前尚未支持;
  • enableAbsolutePositionEditor:启用或禁用允许移动绝对定位元素的抓取器;
  • enableInlineTableEditing:启用或禁用表格行和列插入和删除控件;(IE浏览器不支持)
  • enableObjectResizing:启用或禁用图像和其他对象的大小可调整大小手柄;(IE浏览器不支持)
  • fontName:在插入点或者选中文字部分修改字体名称,需要提供一个字体名称字符串 (例如:"Arial")作为参数;
  • fontSize:在插入点或者选中文字部分修改字体大小,需要提供一个HTML字体尺寸 (1-7) 作为参数;
  • foreColor:在插入点或者选中文字部分修改字体颜色,需要提供一个颜色值字符串作为参数;
  • formatBlock:添加一个HTML块式标签在包含当前选择的行, 如果已经存在了,更换包含该行的块元素 (在 Firefox中, BLOCKQUOTE 是一个例外 -它将包含任何包含块元素);需要提供一个标签名称字符串作为参数;几乎所有的块样式标签都可以使用(例如. "H1", "P", "DL", "BLOCKQUOTE");(IE浏览器仅仅支持标题标签 H1 - H6, ADDRESS, 和 PRE,使用时还必须包含标签分隔符 < >, 例如 "<H1>");
  • forwardDelete:删除光标所在位置的字符,和按下删除键一样;
  • heading:添加一个标题标签在光标处或者所选文字上,需要提供标签名称字符串作为参数 (例如. "H1", "H6"). (IE 和 Safari不支持);
  • hiliteColor:更改选择或插入点的背景颜色,需要一个颜色值字符串作为值参数传递;UseCSS 必须开启此功能。(IE浏览器不支持);
  • increaseFontSize:在选择或插入点周围添加一个BIG标签;(IE浏览器不支持)
  • indent:缩进选择或插入点所在的行,在 Firefox 中, 如果选择多行,但是这些行存在不同级别的缩进, 只有缩进最少的行被缩进;
  • InlineDirLTR:目前尚未支持;
  • InlineDirRTL:目前尚未支持;
  • insertBrOnReturn:控制当按下Enter键时,是插入br标签还是把当前块元素变成两个;(IE浏览器不支持);
  • InsertButton:用按钮控件覆盖当前选中区;
  • InsertFieldset:用方框覆盖当前选中区;
  • insertHorizontalRule:在插入点插入一个水平线(删除选中的部分);
  • insertHTML:在插入点插入一个HTML字符串(删除选中的部分),需要一个个HTML字符串作为参数;(IE浏览器不支持);
  • InsertIFrame:用内嵌框架覆盖当前选中区;
  • insertImage:在插入点插入一张图片(删除选中的部分),需要一个 URL 字符串作为参数,这个 URL 图片地址至少包含一个字符,空白字符也可以(IE会创建一个链接其值为null);
  • InsertInputButton:用按钮控件覆盖当前选中区;
  • InsertInputCheckbox:用复选框控件覆盖当前选中区;
  • InsertInputFileUpload:用文件上载控件覆盖当前选中区;
  • InsertInputHidden:插入隐藏控件覆盖当前选中区;
  • InsertInputImage:用图像控件覆盖当前选中区;
  • InsertInputPassword:用密码控件覆盖当前选中区;
  • InsertInputRadio:用单选钮控件覆盖当前选中区;
  • InsertInputReset:用重置控件覆盖当前选中区;
  • InsertInputSubmit:用提交控件覆盖当前选中区;
  • InsertInputText:用文本控件覆盖当前选中区;
  • InsertMarquee:用空字幕覆盖当前选中区;
  • insertOrderedList:在插入点或者选中文字上创建一个有序列表;
  • insertUnorderedList:在插入点或者选中文字上创建一个无序列表;
  • insertParagraph:在选择或当前行周围插入一个段落;(IE会在插入点插入一个段落并删除选中的部分)
  • InsertSelectDropdown:用下拉框控件覆盖当前选中区;
  • InsertSelectListbox:用列表框控件覆盖当前选中区;
  • InsertTextArea:用多行文本输入控件覆盖当前选中区;
  • insertText:在光标插入位置插入文本内容或者覆盖所选的文本内容;
  • InsertUnorderedList:切换当前选中区是项目符号列表还是常规格式化块;
  • italic:在光标插入点开启或关闭斜体字;(IE使用EM标签,而不是I );
  • justifyCenter:对光标插入位置或者所选内容进行文字居中;
  • justifyFull:对光标插入位置或者所选内容进行文本对齐;
  • justifyLeft:对光标插入位置或者所选内容进行左对齐;
  • justifyRight:对光标插入位置或者所选内容进行右对齐;
  • JustifyNone:目前尚未支持;
  • LiveResize:迫使 MSHTML 编辑器在缩放或移动过程中持续更新元素外观,而不是只在移动或缩放完成后更新;
  • MultipleSelection:允许当用户按住 Shift 或 Ctrl 键时一次选中多于一个站点可选元素;
  • open:打开;
  • outdent:对光标插入行或者所选行内容减少缩进量;
  • OverWrite:切换文本状态的插入和覆盖;
  • paste:在光标位置粘贴剪贴板的内容,如果有被选中的内容,会被替换;剪贴板功能必须在 user.js 配置文件中启用;
  • PlayImage:目前尚未支持
  • Print:打开打印对话框以便用户可以打印当前页;
  • redo:重做被撤销的操作;
  • Refresh:刷新当前文档;
  • removeFormat:对所选内容去除所有格式;
  • RemoveParaFormat:目前尚未支持;
  • SaveAs:将当前 Web 页面保存为文件;
  • selectAll:选中编辑区里的全部内容;
  • SizeToControl:目前尚未支持;
  • SizeToControlHeight:目前尚未支持;
  • SizeToControlWidth:目前尚未支持;
  • Stop:停止;
  • StopImage:目前尚未支持;
  • strikeThrough:在光标插入点开启或关闭删除线;
  • subscript:在光标插入点开启或关闭下角标;
  • superscript:在光标插入点开启或关闭上角标;
  • UnBookmark:从当前选中区中删除全部书签;
  • underline:在光标插入点开启或关闭下划线;
  • undo:撤销最近执行的命令;
  • unlink:去除所选的锚链接<a>标签;
  • Unselect:清除当前选中区的选中状态;
  • useCSS:切换使用HTML tags还是CSS来生成标记,要求一个布尔值true/false作为参数;注: 这个属性是逻辑上的倒退 (例如. use false to use CSS, true to use HTML).(IE不支持);该属性已经废弃,使用 styleWithCSS 代替;
  • styleWithCSS:用这个取代 useCSS 命令,false 生成格式化元素;

不同的浏览器实现不同的编辑命令;只有少部分命令得到了很好的支持,所以在使用之前一定要检测浏览器是否支持该命令;

document.queryCommandSupport(command)方法:传入command命令名,返回一个布尔值,用来查询浏览器是否支持该命令;

var selectAll = document.queryCommandSupported("selectAll");
console.log(selectAll);

doument.queryCommandEnable(command)方法:传入command命令名,返回一个布尔值,查询浏览器中指定的编辑指令是否可用;

mydiv.addEventListener("mouseup",function(e){
    var createLink = document.queryCommandEnabled("createLink");
    console.log(createLink);
},false);

document.queryCommandState(command)方法:用来判定命令的当前状态:有一些命令如”bold”和”italic”有一个布尔值状态,开或关取决于当前选区或光标的位置;这些命令通常用工具栏上的开关按钮表示;

var flag = document.queryCommandState("bold");
console.log(flag);

document.queryCommandValue()方法:查询相关联的值,有些命令如”fontname”有一个相关联的值,字体系列名;

var fontSize = document.queryCommandValue("fontSize");
console.log(fontSize);  // 默认是3
var foreColor = document.queryCommandValue("foreColor");
console.log(foreColor);  // rgb(0,0,0)

document.queryCommandIndeterm(command)方法:返回一个布尔值,用于检测指定的命令是否处于不确定状态;例如,如果当前选取的文本使用了两种不同的字体,使用该方法查询”fontname”的结果是不确定的;

需要注意的是,这些编辑器生成的HTML标记很可能是杂乱无章的;

另外,一旦用户编辑了某元素的内容,就可以使用innerHTML属性得到已经编辑内容的HTML标记;如何处理这些富文本,有多种方式,可以把它存储在隐藏的表单控件中,并通过提交该表单发送到服务器,也可以保存在本地;

示例:一个HTML编辑器:

<head>
    <style>
        *{margin:0;padding:0; box-sizing: border-box;}
        #editor{width:600px;margin:100px auto;}
        #editor #toolBar1,#editor #toolBar2{width:100%;background-color: lightgray;}
        img.intLink{cursor:pointer;border:none;}
        #toolBar1 select{font-size:16px;}
        #textBox{width:100%; height:200px; border:1px solid;padding:10px; overflow:scroll;}
        #textBox #sourceText{margin:0;padding:0; min-width:498px; min-height:200px;}
    </style>
    <script>
        var oDoc, sDefTxt;
        function initDoc(){
            oDoc = document.getElementById("textBox");
            sDefTxt = oDoc.innerHTML;
            if(document.compForm.switchMode.checked)
                setDocMode(true);
        }
        function formatDoc(sCmd, sValue){
            if(validateMode()){
                document.execCommand(sCmd, false, sValue);
                oDoc.focus();
            }
        }
        function validateMode(){
            if(!document.compForm.switchMode.checked)
                return true;
            alert("Uncheck 'Show HTML");
            oDoc.focus();
            return false;
        }
        function setDocMode(bToSource){
            var oContent;
            if(bToSource){
                oContent = document.createTextNode(oDoc.innerHTML);
                oDoc.innerHTML = "";
                var oPre = document.createElement("pre");
                oDoc.contentEditable = false;
                oPre.id = "sourceText";
                oPre.contentEditable = true;
                oPre.appendChild(oContent);
                oDoc.appendChild(oPre);
                document.execCommand("defaultParagraphSeparator", false, "div");
            }else{
                if(document.all)
                    oDoc.innerHTML = oDoc.innerText;
                else{
                    oContent = document.createRange();
                    oContent.selectNodeContents(oDoc.firstChild);
                    oDoc.innerHTML = oContent.toString();
                }
                oDoc.contentEditable = true;
            }
            oDoc.focus();
        }
        function printDoc(){
            if(!validateMode())
                return;
            var oPrintWin = window.open("","_blank","width=450,height=450,left=400,top=100,menubar=yes,toolbar=no,scrollbars=yes");
            oPrintWin.document.open();
            oPrintWin.document.write("<!doctype html><html><head><title>打印<\/title><\/head><body onload='print();'>" + oDoc.innerHTML + "<\/body><\/html>");
            oPrintWin.document.close();
        }
    </script>
</head>
<body onload="initDoc()">
<div id="editor">
<form name="compForm" method="post" action="sample.php" onsubmit="if(validateMode()){this.myDoc.value=oDoc.innerHTML; return true;}return false;">
    <input type="hidden" name="myDoc">
    <div id="toolBar1">
        <select onchange="formatDoc('formatblock',this[this.selectedIndex].value); this.selectedIndex=0;">
            <option selected>-文本格式-</option>
            <option value="h1">标题1 <h1></option>
            <option value="h2">标题2 <h2></option>
            <option value="h3">标题3 <h3></option>
            <option value="h4">标题4 <h4></option>
            <option value="h5">标题5 <h5></option>
            <option value="h6">标题6 <h6></option>
            <option value="p">段落 <p></option>
            <option value="pre">预定义 <pre></option>
        </select>
        <select onchange="formatDoc('fontname', this[this.selectedIndex].value); this.selectedIndex=0;">
            <option class="heading" selected>-字体-</option>
            <option>Arial</option>
            <option>Arial Black</option>
            <option>Courier New</option>
            <option>Times New Roman</option>
        </select>
        <select onchange="formatDoc('fontsize',this[this.selectedIndex].value); this.selectedIndex=0;">
            <option class="heading" selected>-字号-</option>
            <option value="1">非常小</option>
            <option value="2">小</option>
            <option value="3">正常</option>
            <option value="4">中大</option>
            <option value="5">大</option>
            <option value="6">非常大</option>
            <option value="7">最大</option>
        </select>
        <select onchange="formatDoc('forecolor',this[this.selectedIndex].value); this.selectedIndex=0;">
            <option class="heading" selected>-颜色-</option>
            <option value="red">Red</option>
            <option value="blue">Blue</option>
            <option value="green">Green</option>
            <option value="black">Black</option>
        </select>
        <select onchange="formatDoc('backcolor',this[this.selectedIndex].value); this.selectedIndex=0;">
            <option class="heading" selected>-背景颜色-</option>
            <option value="red">Red</option>
            <option value="blue">Blue</option>
            <option value="green">Green</option>
            <option value="black">Black</option>
        </select>
    </div>
    <div id="toolBar2">
    <img class="intLink" src="icons/clean.gif" onclick="if(validateMode()&&confirm('确定清除所有吗?')){oDoc.innerHTML = sDefTxt};" /> 
    <img class="intLink" src="icons/print.png" onclick="printDoc();" /> 
    <img class="intLink" src="icons/undo.gif" onclick="formatDoc('undo');" /> 
    <img class="intLink" src="icons/redo.gif" onclick="formatDoc('redo');" /> 
    <img class="intLink" src="icons/format.png" onclick="formatDoc('removeFormat');" /> 
    <img class="intLink" src="icons/bold.gif" onclick="formatDoc('bold')" /> 
    <img class="intLink" src="icons/italic.gif" onclick="formatDoc('italic')" /> 
    <img class="intLink" src="icons/underline.gif" onclick="formatDoc('underline')" /> 
    <img class="intLink" src="icons/justifyleft.gif" onclick="formatDoc('justifyleft')" /> 
    <img class="intLink" src="icons/justifycenter.gif" onclick="formatDoc('justifycenter')" /> 
    <img class="intLink" src="icons/justifyright.gif" onclick="formatDoc('justifyright')" /> 
    <img class="intLink" src="icons/numberedlist.gif" onclick="formatDoc('insertorderedlist')" /> 
    <img class="intLink" src="icons/dottedlist.gif" onclick="formatDoc('insertunorderedlist')" /> 
    <img class="intLink" src="icons/quote.gif" onclick="formatDoc('formatblock','blockquote')" /> 
    <img class="intLink" src="icons/outdent.gif" onclick="formatDoc('outdent')" /> 
    <img class="intLink" src="icons/indent.gif" onclick="formatDoc('indent')" /> 
    <img class="intLink" src="icons/hyperlink.gif" onclick="var sLnk=prompt('输入链接地址','http:\/\/'); if(sLnk&&sLnk!=''&&sLnk!='http:\/\/'){formatDoc('createlink',sLnk);}" /> 
    <img class="intLink" src="icons/cut.gif" onclick="formatDoc('cut')" /> 
    <img class="intLink" src="icons/copy.gif" onclick="formatDoc('copy')" /> 
    <img class="intLink" src="icons/paste.gif" onclick="formatDoc('paste')" /> 
    </div>
    <div id="textBox" contenteditable="true"><p>富文本编辑器</p></div>
    <p id="editMode">
        <input type="checkbox" name="switchMode" id="switchBox" onchange="setDocMode(this.checked);">
        <label for="switchBox">显示HTML</label>
    </p>
    <p><input type="submit" value="保存" /></p>
</form>
</div>
</body>

这些浏览器内置的编辑功能对用户输入少量的富文本来说,足够使用了;但要解决所有种类的文档的编辑来说,这些API还显得不足;在实际开发中,一般采用的是第三方的类库,比如百度UEditor和layui.layedit和Dojo,它们都包含了编辑器组件;

TML 属性

HTML 标签可以拥有属性。属性提供了有关 HTML 元素的更多的信息。

属性总是以名称/值对的形式出现,比如:name="value"。

属性总是在 HTML 元素的开始标签中规定。

属性实例

HTML 链接由 <a> 标签定义。链接的地址在 href 属性中指定:

[demo]

<html>

<head>

<meta charset="UTF-8">

</head>

<body>

<a href="http://www.w3school.com.cn">

This is a link</a>

</body>

</html>

[/demo]

更多 HTML 属性实例

属性例子 1:

<h1> 定义标题的开始。

<h1 align="center"> 拥有关于对齐方式的附加信息。

[demo]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta charset="UTF-8">

</head>

<body>

<h1 align="center">This is heading 1</h1>

<p>上面的标题在页面中进行了居中排列。上面的标题在页面中进行了居中排列。上面的标题在页面中进行了居中排列。</p>

</body>

</html>

[/demo]

属性例子 2:

<body> 定义 HTML 文档的主体。

<body bgcolor="yellow"> 拥有关于背景颜色的附加信息。

[demo]

<html>

<head>

<meta charset="UTF-8">

<meta http-equiv="Content-Type" content="text/html />

<meta http-equiv="Content-Language" content="zh-cn" />

</head>

<body bgcolor="yellow">

<h2>请看: 改变了颜色的背景。</h2>

</body>

</html>

[/demo]

属性例子 3:

<table> 定义 HTML 表格。(您将在稍后的章节学习到更多有关 HTML 表格的内容)

<table border="1"> 拥有关于表格边框的附加信息。

HTML 提示:使用小写属性

属性和属性值对大小写不敏感。

不过,万维网联盟在其 HTML 4 推荐标准中推荐小写的属性/属性值。

而新版本的 (X)HTML 要求使用小写属性。

始终为属性值加引号

属性值应该始终被包括在引号内。双引号是最常用的,不过使用单引号也没有问题。

在某些个别的情况下,比如属性值本身就含有双引号,那么您必须使用单引号,例如:

name='Bill "HelloWorld" Gates'

下面列出了适用于大多数 HTML 元素的属性:

属性 值 描述

class classname 规定元素的类名(classname)

id id 规定元素的唯一 id

style style_definition 规定元素的行内样式(inline style)

title text 规定元素的额外信息(可在工具提示中显示)

HTML 全局属性

HTML 属性赋予元素意义和语境。

下面的全局属性可用于任何 HTML 元素。

HTML 全局属性

属性 描述

accesskey 规定激活元素的快捷键。

class 规定元素的一个或多个类名(引用样式表中的类)。

contenteditable 规定元素内容是否可编辑。

contextmenu 规定元素的上下文菜单。上下文菜单在用户点击元素时显示。

data-* 用于存储页面或应用程序的私有定制数据。

dir 规定元素中内容的文本方向。

draggable 规定元素是否可拖动。

dropzone 规定在拖动被拖动数据时是否进行复制、移动或链接。

hidden 规定元素仍未或不再相关。

id 规定元素的唯一 id。

lang 规定元素内容的语言。

spellcheck 规定是否对元素进行拼写和语法检查。

style 规定元素的行内 CSS 样式。

tabindex 规定元素的 tab 键次序。

title 规定有关元素的额外信息。

translate 规定是否应该翻译元素内容。

HTML 事件属性

Window 事件属性

针对 window 对象触发的事件(应用到 <body> 标签):

属性 值 描述

onafterprint script 文档打印之后运行的脚本。

onbeforeprint script 文档打印之前运行的脚本。

onbeforeunload script 文档卸载之前运行的脚本。

onerror script 在错误发生时运行的脚本。

onhaschange script 当文档已改变时运行的脚本。

onload script 页面结束加载之后触发。

onmessage script 在消息被触发时运行的脚本。

onoffline script 当文档离线时运行的脚本。

ononline script 当文档上线时运行的脚本。

onpagehide script 当窗口隐藏时运行的脚本。

onpageshow script 当窗口成为可见时运行的脚本。

onpopstate script 当窗口历史记录改变时运行的脚本。

onredo script 当文档执行撤销(redo)时运行的脚本。

onresize script 当浏览器窗口被调整大小时触发。

onstorage script 在 Web Storage 区域更新后运行的脚本。

onundo script 在文档执行 undo 时运行的脚本。

onunload script 一旦页面已下载时触发(或者浏览器窗口已被关闭)。

Form 事件

由 HTML 表单内的动作触发的事件(应用到几乎所有 HTML 元素,但最常用在 form 元素中):

属性 值 描述

onblur script 元素失去焦点时运行的脚本。

onchange script 在元素值被改变时运行的脚本。

oncontextmenu script 当上下文菜单被触发时运行的脚本。

onfocus script 当元素失去焦点时运行的脚本。

onformchange script 在表单改变时运行的脚本。

onforminput script 当表单获得用户输入时运行的脚本。

oninput script 当元素获得用户输入时运行的脚本。

oninvalid script 当元素无效时运行的脚本。

onreset script 当表单中的重置按钮被点击时触发。HTML5 中不支持。

onselect script 在元素中文本被选中后触发。

onsubmit script 在提交表单时触发。

Keyboard 事件

属性 值 描述

onkeydown script 在用户按下按键时触发。

onkeypress script 在用户敲击按钮时触发。

onkeyup script 当用户释放按键时触发。

Mouse 事件

由鼠标或类似用户动作触发的事件:

属性 值 描述

onclick script 元素上发生鼠标点击时触发。

ondblclick script 元素上发生鼠标双击时触发。

ondrag script 元素被拖动时运行的脚本。

ondragend script 在拖动操作末端运行的脚本。

ondragenter script 当元素元素已被拖动到有效拖放区域时运行的脚本。

ondragleave script 当元素离开有效拖放目标时运行的脚本。

ondragover script 当元素在有效拖放目标上正在被拖动时运行的脚本。

ondragstart script 在拖动操作开端运行的脚本。

ondrop script 当被拖元素正在被拖放时运行的脚本。

onmousedown script 当元素上按下鼠标按钮时触发。

onmousemove script 当鼠标指针移动到元素上时触发。

onmouseout script 当鼠标指针移出元素时触发。

onmouseover script 当鼠标指针移动到元素上时触发。

onmouseup script 当在元素上释放鼠标按钮时触发。

onmousewheel script 当鼠标滚轮正在被滚动时运行的脚本。

onscroll script 当元素滚动条被滚动时运行的脚本。

Media 事件

由媒介(比如视频、图像和音频)触发的事件(适用于所有 HTML 元素,但常见于媒介元素中,比如 <audio>、<embed>、<img>、<object> 以及 <video>):

属性 值 描述

onabort script 在退出时运行的脚本。

oncanplay script 当文件就绪可以开始播放时运行的脚本(缓冲已足够开始时)。

oncanplaythrough script 当媒介能够无需因缓冲而停止即可播放至结尾时运行的脚本。

ondurationchange script 当媒介长度改变时运行的脚本。

onemptied script 当发生故障并且文件突然不可用时运行的脚本(比如连接意外断开时)。

onended script 当媒介已到达结尾时运行的脚本(可发送类似“感谢观看”之类的消息)。

onerror script 当在文件加载期间发生错误时运行的脚本。

onloadeddata script 当媒介数据已加载时运行的脚本。

onloadedmetadata script 当元数据(比如分辨率和时长)被加载时运行的脚本。

onloadstart script 在文件开始加载且未实际加载任何数据前运行的脚本。

onpause script 当媒介被用户或程序暂停时运行的脚本。

onplay script 当媒介已就绪可以开始播放时运行的脚本。

onplaying script 当媒介已开始播放时运行的脚本。

onprogress script 当浏览器正在获取媒介数据时运行的脚本。

onratechange script 每当回放速率改变时运行的脚本(比如当用户切换到慢动作或快进模式)。

onreadystatechange script 每当就绪状态改变时运行的脚本(就绪状态监测媒介数据的状态)。

onseeked script 当 seeking 属性设置为 false(指示定位已结束)时运行的脚本。

onseeking script 当 seeking 属性设置为 true(指示定位是活动的)时运行的脚本。

onstalled script 在浏览器不论何种原因未能取回媒介数据时运行的脚本。

onsuspend script 在媒介数据完全加载之前不论何种原因终止取回媒介数据时运行的脚本。

ontimeupdate script 当播放位置改变时(比如当用户快进到媒介中一个不同的位置时)运行的脚本。

onvolumechange script 每当音量改变时(包括将音量设置为静音)时运行的脚本。

onwaiting script 当媒介已停止播放但打算继续播放时(比如当媒介暂停已缓冲更多数据)运行脚本