【发布时间】:2021-05-10 08:25:52
【问题描述】:
我正在使用 StencilJS 创建一个自定义组件,当用户使用键盘或鼠标导航到组件时,我必须对大纲进行一些更改。
我的组件正在使用 ShadowDOM,我想从 CSS 访问 HTML 标记属性。
标签的属性由what-input (https://github.com/ten1seven/what-input) 生成,用于检测键盘和鼠标事件。
我尝试过使用 [data-whatintent=keyboard] 和 html[data-whatintent=keyboard] 等 CSS 选择器,但没有成功。
这是我要从中访问data-whatintent 属性的 HTML 标记:
<html dir="ltr" lang="en" data-whatinput="keyboard" data-whatintent="mouse">
<my-custom-component></my-custom-component>
</html>
这是我的 CSS:
[data-whatintent=keyboard] *:focus {
outline: solid 2px #1A79C6;
}
我希望我在 ShadowDOM 中的 CSS 可以使用 data-whatintent 属性的值在我的组件上设置样式,以便轮廓符合我的要求。
【问题讨论】:
-
您可以轻松地从组件访问它,例如
document.querySelector('html').getAttribute('data-whatintent'),但是将属性值应用于样式是另一个问题。您到底需要对价值做什么?您是否事先知道有限数量的可能值? -
只有2个可能的值:键盘或鼠标,但我只希望CSS在值为
keyboard时生效。
标签: html css typescript shadow-dom stenciljs