caret

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

caret 简写 CSS 属性在一个声明中设置插入符的外观和行为。

试一试

caret: red;
caret: block manual;
caret: underscore auto green;
caret: bar manual orange;
<section class="default-example container" id="default-example">
  <div>
    <label for="example-element">Edit text field:</label>
    <input id="example-element" type="text" value="Sample text" />
  </div>
</section>
div {
  text-align: left;
}

#example-element {
  font-size: 1.2rem;
  padding: 8px;
  width: 300px;
}

构成属性

此属性是以下 CSS 属性的简写:

语法

css
/* Individual values */
caret: red; /* caret-color only */
caret: block; /* caret-shape only */
caret: manual; /* caret-animation only */

/* Two values */
caret: red manual; /* caret-color + caret-animation */
caret: block auto; /* caret-shape + caret-animation */
caret: underscore orange; /* caret-shape + caret-color */

/* Three values */
caret: bar manual red; /* caret-shape + caret-animation + caret-color */
caret: block auto #00ff00; /* caret-shape + caret-animation + caret-color */

/* Global values */
caret: inherit;
caret: initial;
caret: revert;
caret: revert-layer;
caret: unset;

caret 属性通过其组成属性的一个、两个或三个值来指定。值可以按任何顺序指定,省略的值将设置为其初始值。

caret-color

设置插入符的颜色。

caret-animation

控制插入符是否闪烁。

caret-shape

设置插入符的视觉形状。

描述

caret 简写属性允许您在一个声明中设置多个插入符属性,方便自定义插入符的完整外观和行为。

值解析

当简写属性中省略值时,它们会重置为初始值

  • caret-color: auto (解析为 currentColor)。
  • caret-animation: auto (插入符闪烁)。
  • caret-shape: auto (浏览器确定的形状)。

顺序独立性

与某些 CSS 简写属性不同,caret 属性接受任何顺序的值。浏览器根据值类型确定哪个值适用于哪个属性

  • <color> 值适用于 caret-color
  • auto/manual 关键字适用于 caret-animation
  • 形状关键字(barblockunderscore)适用于 caret-shape

正式定义

初始值作为简写中的每个属性
应用于接受输入的元素
继承性
计算值作为简写中的每个属性
动画类型作为简写中的每个属性

正式语法

caret = 
<'caret-color'> ||
<'caret-animation'> ||
<'caret-shape'>

<caret-color> =
auto |
<color>

<caret-animation> =
auto |
manual

<caret-shape> =
auto |
bar |
block |
underscore

示例

带有动画插入符的复古终端

此示例使用 caret 简写属性结合多个插入符属性,创建一个复古终端界面,演示了它如何取代旧的基于边框的技术。

caret 简写属性的主要优点是在一个声明中组合多个属性。在这里,我们将形状设置为 block,禁用默认闪烁,并将颜色设置为 green,所有这些都在一行中完成。

HTML

html
<label for="terminal">Enter a command</label>
<div class="old-screen">
  <span>></span>
  <textarea id="terminal" class="terminal-input"></textarea>
</div>

CSS

css
.terminal-input {
  caret: block manual green;
  animation: vintage-caret 2s infinite;
}

@keyframes vintage-caret {
  0%,
  50% {
    caret-color: #00ad00;
  }
  75%,
  100% {
    caret-color: transparent;
  }
}

结果

规范

规范
CSS Basic User Interface Module Level 4
# propdef-caret-shape
CSS Basic User Interface Module Level 4
# propdef-caret-animation
CSS Basic User Interface Module Level 4
# valdef-caret-shape-underscore
CSS Basic User Interface Module Level 4
# valdef-caret-shape-bar
CSS Basic User Interface Module Level 4
# valdef-caret-shape-auto
CSS Basic User Interface Module Level 4
# valdef-caret-animation-manual
CSS Basic User Interface Module Level 4
# caret-color
CSS Basic User Interface Module Level 4
# valdef-caret-animation-auto
CSS Basic User Interface Module Level 4
# valdef-caret-shape-block

浏览器兼容性

另见