通用组件的通用DOM标准属性
名称 |
描述 |
建议或更多 |
accesskey |
定义元素功能快捷键的方式: chrome/windows 环境: Alt + [key] , <button accesskey="s"></button> => 快捷键 Alt + s |
会有很多问题,不建议使用 |
aria-* |
无障碍富网络应用 ARIA 属性 |
autocapitalize |
一个枚举属性, 用于控制用户输入、编辑文本输入文本是否自动大写医技大写的方式 |
物理键盘输入以及有type 属性的input 不生效 |
className |
Element.className 获取或设置元素class 属性的值 |
Element.className="contianer" let elClass = Element.className |
contenteditable |
枚举属性,描述元素的内容是否可编辑, contenteditable="true/false" |
如可编辑浏览器将元素变为用户可输入,但修改事件无法使用onChange 监听 |
data-* |
自定义全局属性 |
|
dir |
定义文本输入方向: auto :自定义,ltr :从左往右书写的,如中国:“国之根本” , rtl : 从右往左输入的,如阿拉伯等 |
|
draggable |
是否允许浏览器使用原生的拖拽Api |
只支持链接、图片、选中的文字的拖拽,其他拖拽需通过onDragStart 等事件监听 |
enterKeyHint |
指定虚拟键盘上的 entry 键的操作方式 |
示例讲解 |
htmlFor |
<label>和<output> 的属性, 等同于原生的<label for=""> 的 for 属性 |
|
hidden |
[boolean] :隐藏元素 |
浏览器源码: {display: none !important;} |
id |
不能包含空格,制表符等空白字符 |
标注元素的唯一值, 18.x可以用 useId 生成唯一值 例如 :r0: :r1: 等 |
is |
自定义元素的类属性 |
chrome v67+ 示例讲解 |
inputMode |
指定输入时,弹出键盘的类型 |
目前各浏览器兼容性较差 |
itemProp |
可给 HTML 元素添加属性以 键值对[name]:[value:string|url] 的形式 |
|
lang |
可给 HTML 元素添加语言类型属性 依据 BCP47 |
优先级低于 xml:lang |
属性值 |
描述 |
建议或更多 |
enter |
插入一个新的行,回车键常用功能 |
enterKeyHint="enter" |
done |
input 操作已完成 |
enterKeyHint="done" |
go |
跳转到当前输入的地址 |
enterKeyHint="go" |
next |
跳转到下一个表单 |
enterKeyHint="next" |
previous |
跳转到上一个表单 |
enterKeyHint="previous" |
search |
搜索当前输入的内容 |
enterKeyHint="search" |
send |
发送当前输入的内容到目标 |
<a href="..." enterKeyHint="send">发送</a> |
// enter
const el = document.getElementById('container-1')
el.enterKeyHint = "enter"
// html
...
<div contenteditable="">
<p>这里开始输入</p>
<p is="word-count" style="background-color: lightblue;height: 60px;color:black;"></p>
</div>
// js
// HTMLParagraphElement : Element 的api 用于定义 <p>元素的类
class WordCount extends HTMLParagraphElement {
constructor() {
super();
// 获取父节点中词的个数
const wcParent = this.parentNode;
function countWords(node){
const text = node.innerText || node.textContent;
return text.trim().split(/\s+/g).filter(a => a.trim().length > 0).length;
}
const count = `Words: ${countWords(wcParent)}`;
// 创建一个 shadowRoot 详见 **[shadowRoot](#https://developer.mozilla.org/zh-CN/docs/Web/API/ShadowRoot)**
const shadow = this.attachShadow({mode: 'open'});
const text = document.createElement('span');
text.textContent = count;
// 将包含个数的元素插入shadow
shadow.appendChild(text);
// 当父节点的字发生变化时重新计算词的个数
setInterval(function() {
const count = `Words: ${countWords(wcParent)}`;
text.textContent = count;
}, 200);
}
}
// 将类与 is 关联 'word-count' <=> WordCount
customElements.define('word-count', WordCount, { extends: 'p' });