【发布时间】:2021-02-10 05:51:20
【问题描述】:
我想在 React 组件中做相当于 style="background-image: url(foo.jpg); background-image: -webkit-image-set(url(foo_1x.jpg) 1x, url(foo_2x.jpg) 2x)" 的操作。
React 要求我提供样式对象,而不是字符串。但是一个 JS 对象不能有两次相同的属性。
如何获得两个background-image 属性?此外,顺序很重要——图像集必须放在最后。
它必须是内联样式。 (因为 URL 是从 DB 检索到的动态内插值。)
【问题讨论】:
-
你试过背景图片列表吗?
style="background-image: url(foo.jpg),-webkit-image-set(url(foo_1x.jpg) 1x, url(foo_2x.jpg) 2x)"或者你是在问如何使用 React 的style属性来做到这一点?我有点不确定你在问什么。 -
@DrewReese 啊,如果我不清楚,对不起。是的,询问如何使用 React 的 style 道具,这需要我传递一个对象而不是字符串。我尝试过传递数组(
style={ backgroundImage: [ … ] }(运气不好)并按照您描述的方式将两者都包含在一个background-image属性中。后者几乎可以工作,但是WebKit 中的非图像集URL“获胜”或者有根据我选择的顺序,在非 WebKit(例如 Firefox)中根本没有图像。 -
@HenrikN 你能分享一下使用两个背景图像的用例吗?也许可以找到解决方法。使用对象不是解决方案。
-
@VinaySharma 我想在支持 (-webkit-)image-set 以平衡带宽/分辨率的浏览器中智能地获取 1x 或 2x 图像,并为 Firefox 等其他浏览器提供 1x 后备。我正在考虑将其设置为 not-a-bg-image 作为一种解决方法——但仍然很高兴知道如何在 React 中实现这一点。
-
它是否绝对需要是内联样式的道具对象?如果你可以做 CSS-in-JS 并编写你的 CSS as CSS 并将 props 传递给它,像 styled-components 这样的东西可以为你工作吗?