似乎这个问题已经以多种不同的方式提出和回答,但我看到的答案要么不适用于情感,要么与情感相关的答案对我不起作用。我在 @emtion/core@10.0.28 和 @emtion/styled@10.0.27。
本质上,我想在父组件悬停/活动/聚焦时将样式应用到子组件。父级是一个按钮,子级是一个可选图标。以下样式通过语法添加到(父)按钮styled。
const iconWrapperStyles = (props) => {
return css`
${props.IconWrapper} {
width: ${iconSizeMedium};
height: ${iconSizeMedium};
margin-left: ${spacingSizeSmall};
color: ${textColor};
fill: ${textColor};
background: ${backgroundColor};
border-color: ${borderColor};
}
&:hover:not(:disabled),
&:focus:not(:disabled),
&:active:not(:disabled) ${props.IconWrapper} {
outline: none;
color: ${textColorHover};
fill: ${textColorHover};
background: ${backgroundColorHover};
border-color: ${borderColorHover};
}
`;
};
Run Code Online (Sandbox Code Playgroud)
第一个样式块已成功应用。因此,乍一看,按钮和子图标的样式看起来正确。但是,当您悬停/聚焦/激活按钮时,图标不会更改。我已经尝试了上面的实现,... + ${IconWrapper}以及... & ${IconWrapper}; 这三个对我来说都失败了。官方文档表明应该&可以工作。
无论哪种 JS 框架,以下内容都应该始终有效。
button {
background: darkblue;
color: white;
border: none;
padding: 5px;
}
button:hover i {
color: red;
}Run Code Online (Sandbox Code Playgroud)
<link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet">
<button>
<i class='icon-edit'></i> Click to edit
</button>Run Code Online (Sandbox Code Playgroud)
在你的情况下,这变成
${props.IconWrapper} {
width: ${iconSizeMedium};
height: ${iconSizeMedium};
margin-left: ${spacingSizeSmall};
color: ${textColor};
fill: ${textColor};
background: ${backgroundColor};
border-color: ${borderColor};
}
&:hover:not(:disabled) ${props.IconWrapper},
&:focus:not(:disabled) ${props.IconWrapper},
&:active:not(:disabled) ${props.IconWrapper} {
outline: none;
color: ${textColorHover};
fill: ${textColorHover};
background: ${backgroundColorHover};
border-color: ${borderColorHover};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6529 次 |
| 最近记录: |