javascript - 如何使用 shadow-dom web 组件实现一致的焦点轮廓颜色?

标签 javascript css shadow-dom lit-element

我正在使用网络组件,主要是用 lit-elementlit-html 编写的,它们使用 Shadow DOM。

一些组件有按钮和其他具有默认焦点轮廓的交互部分。

当我构建应用程序时,我喜欢设置一个页面范围的规则,将焦点轮廓更改为与页面背景颜色明显不同的颜色。

*:focus {
  outline: 2px solid lime;
}

我原以为它会越过阴影边界进入 Web 组件,类似于 colorfont-size,但事实并非如此

考虑到 outline 没有跨越阴影边界——我有什么选择来实现一致的焦点轮廓颜色?

最佳答案

在您的应用中标准化 CSS 变量 --focus-outline

应用层:

* {
  --focus-outline: 2px solid lime;
}

*:focus {
  outline: var(--focus-outline);
}

示例组件用法:

*:focus {
  outline: var(--focus-outline, 2px solid #0af);
}

必须重构每个组件以接受此变量

每个组件都必须定义自己的回退,如 2px solid #0af(不幸的是,目前还没有任何标准化的 default-focus-outline css 值)

关于javascript - 如何使用 shadow-dom web 组件实现一致的焦点轮廓颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55739721/

相关文章:

javascript - Webpack 和 Javascript 变量范围,在所有模块中使用 var = 可以吗?

javascript - 如何使用 asp.net 页面提供 javascript?

javascript - Polymer - 获取位于 Shadow dom 中的 div 位置

html - 单独的影子根中是否允许重复 ID?

javascript - 什么应该在TypeScript中抛出新的Error()输出?

html - 导航相对间距

html - 将 "+/-"添加到 Bootstrap Accordion 面板作为切换指示器

css - 时间字段的 webkit css 伪元素

javascript - 带有阴影的自定义元素未渲染

javascript - 在按钮 jquery 中更改和改回文本