HTML contenteditable 全局属性

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

* 此特性的某些部分可能存在不同级别的支持。

contenteditable 全局属性是一个枚举属性,用于指示元素是否应由用户编辑。如果可以编辑,浏览器将修改其小部件以允许编辑。

试一试

<blockquote contenteditable="true">
  <p>Edit this content to add your own quote</p>
</blockquote>

<cite contenteditable="true">-- Write your own name here</cite>
blockquote {
  background: #eeeeee;
  border-radius: 5px;
  margin: 16px 0;
}

blockquote p {
  padding: 15px;
}

cite {
  margin: 16px 32px;
  font-weight: bold;
}

blockquote p::before {
  content: "\201C";
}

blockquote p::after {
  content: "\201D";
}

[contenteditable="true"] {
  caret-color: red;
}

该属性必须取以下值之一:

  • true空字符串,表示元素是可编辑的。
  • false,表示元素不可编辑。
  • plaintext-only,表示元素的纯文本可编辑,但富文本格式被禁用。

如果属性未赋值,例如 <label contenteditable>Example Label</label>,则其值被视为空字符串。

如果此属性缺失或其值无效,则其值将从其父元素继承:因此,如果父元素可编辑,则该元素也可编辑。

请注意,尽管其允许的值包括 truefalse,但此属性是一个枚举属性,而不是布尔属性。

您可以使用 CSS caret-color 属性来设置用于绘制文本插入插入符的颜色。

通过使用 contenteditable 属性而变得可编辑(因此具有交互性)的元素可以获得焦点。它们参与顺序键盘导航。但是,嵌套在其他 contenteditable 元素中的带有 contenteditable 属性的元素默认不会添加到制表符序列中。您可以通过指定 tabindex 值(tabindex="0")将嵌套的 contenteditable 元素添加到键盘导航序列中。

如果内容被粘贴到 contenteditable="true" 的元素中,则所有格式都会保留。如果内容被粘贴到 contenteditable="plaintext-only" 的元素中,则所有格式都会被移除。

示例

将内容粘贴到 contenteditable 中

此示例有两个带有 contenteditable<div> 元素,第一个值为 true,第二个值为 plaintext-only。复制下面的内容并粘贴到每个 div 中,以查看其效果。

HTML

html
<h2>Pasting areas</h2>
<section class="pasting">
  <div class="wrapper">
    <h3>contenteditable="true"</h3>
    <div contenteditable="true"></div>
  </div>
  <div class="wrapper">
    <h3>contenteditable="plaintext-only"</h3>
    <div contenteditable="plaintext-only"></div>
  </div>
</section>

规范

规范
HTML
# attr-contenteditable

浏览器兼容性

另见