css - SVG 线性渐变填充适用于桌面视图,但不适用于移动设备。我怎样才能解决这个问题?
问题描述
所以我有一个使用 React 和 Express 制作的网站的徽标。SVG 路径是从在桌面和移动组件中调用的函数返回的。这是我的 default.css(代表默认样式,适用于移动设备和桌面设备,我只是在这里更改颜色内容。
svg {
fill: url(#logo-gradient);
}
#logo-gradient {
--color-stop-1: rgba(242, 68, 132, 1);
--color-stop-2: rgba(237, 136, 173, 1);
--color-stop-3: #fbbed4;
}
不适用于移动设备:
但是,如果我fill: red;
按预期在移动设备上使用它,当然会显示为红色:
我不知道可能出了什么问题,它应该可以工作。任何帮助,将不胜感激!
编辑:响应“somethinghere”,我认为包含 svg 代码是无关紧要的,因为它是由函数返回的,并且在移动和桌面组件上都调用了相同的函数......但这里是:
getLogo = () => {
return (
<svg
viewBox="0 0 250 50"
width="250"
height="50"
version="1.1"
id="svg3785">
<defs>
<linearGradient id="logo-gradient">
<stop offset="0%" stop-color="var(--color-stop-1)" />
<stop offset="77%" stop-color="var(--color-stop-2)" />
<stop offset="100%" stop-color="var(--color-stop-3)" />
</linearGradient>
</defs>
<path d="M 17.699219 8.7597656 ... really long path"/>
</svg>
)
}
在组件中(仅包括父 div):
<div className="logo-container">
{this.getLogo()}
</div>
对于手机:
<div className="nav-resp-logo-container">
{this.getLogo()}
</div>
解决方案
我已尝试将您的代码简化为可测试的代码,并且这一切似乎在我的终端上都可以正常工作:
:root {
--g1: red;
--g2: green;
--g3: blue;
}
#definitions {
position: fixed;
top: 0;
left: 0;
transform: translate(-100%,-100%);
opacity: 0;
pointer-events: none;
}
#logo text {
fill: url(#logo-gradient);
}
<svg
viewBox="0 0 250 50"
width="250"
height="50"
id="definitions"
xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="logo-gradient">
<stop offset="0%" stop-color="var(--g1)" />
<stop offset="77%" stop-color="var(--g2)" />
<stop offset="100%" stop-color="var(--g3)" />
</linearGradient>
</defs>
</svg>
<svg
id="logo"
viewBox="0 0 250 50"
width="250"
height="50"
xmlns="http://www.w3.org/2000/svg">
<text x="0" y="40" style="font-size: 40px; font-weight: bold;">Hello World</text>
</svg>
这意味着您的问题可能不在您向我们展示的代码中。也许徽标不小心隐藏在手机上?你在什么浏览器上测试这个?哪些设备?
我能给你的唯一建议是确保你有一个已定义XMLNS
的或 XML 命名空间。如果你不这样做,某些浏览器上可能会发生一些奇怪的事情——主要是较旧的浏览器。因此,请确保您的<svg>
标签至少包含以下内容:
xmlns="http://www.w3.org/2000/svg"
推荐阅读
- reactjs - TypeError:result.data.umdHub.articles.forEach 不是函数
- asynchronous - Light Gulp 4 任务仍然抛出“异步完成”错误
- java - Spring Data Rest 的 url 格式为 /foo/{id}/bar
- xml - 如何处理变量未定义问题
- python - 更改对象的类
- angular - 在 onChanges 之前,异步管道似乎没有监听 Subject
- xcode - 如何诊断 Xcode 代码签名失败?
- regex - 为什么这种消极的前瞻不起作用?
- html - HTML 输入必须包含特定字符串
- python-3.x - python中的矩形连通分量提取