【发布时间】:2017-10-12 10:14:12
【问题描述】:
我一直在研究将值从 React 组件共享/导入到 Sass/CSS 文件的方法的一些不同选项。在接收到包含图像路径(来自 API)的道具后,我设置了组件的 background 属性。这被设置为内联样式。
我还想为组件图像悬停时添加一个不透明层。这可以通过常规 CSS 轻松完成,但是当鼠标悬停在上面时,我不能简单地将 background 属性覆盖为渐变或颜色。
我还需要获取组件内联样式中使用的图像路径,以便在图像上应用不透明度。
组件:
render() {
const styles = {
background: `url('...somepath.jpeg') no-repeat center`
}
const item = { ...type, ...this.props.metadata };
return (
<section className="card"
onClick={this.props.cb.bind(null, item)}
style={styles}>
</section>
);
}
样式:
.card:hover {
cursor: pointer;
background: linear-gradient(rgba(20,20,20, .5), rgba(20,20,20, .5)) !important;
// without the path to build the url, this just deletes the image
}
基本上,我希望在悬停时应用的样式如下所示:
linear-gradient(rgba(20,20,20, .5), rgba(20,20,20, .5)), url('...somepath.jpeg') no-repeat center
有没有一种有效的方法来完成这样的事情?我只能考虑向组件添加 mouseover/mouseout 事件侦听器以添加“悬停”内联样式......但我想避免过多地使用内联。
【问题讨论】:
-
为什么不能使用
css? -
@guest271314 图像的路径来自 API 调用,该 API 调用的响应作为道具传递给此卡片组件。我找不到将该路径导入 CSS 文件的方法。内联样式也不支持伪选择器。
-
您可以在现有的
CSSStyleSheet中设置css规则或将css文本附加到document中的<style>元素。
标签: javascript css reactjs