我正在努力使用 Gatsby-image 来为不同的分辨率提供正确的图像尺寸。我有一个大小为 1920x367(宽 x 高)的图像,当窗口大小很小(例如移动设备)时,问题是可见的,因为 gatsy-image 使用 490x92 的图像来覆盖 437x354 的容器。
GraphQL 查询:
configHowWeWork: file(relativePath: { eq: "howwework/howwework-header.jpg" }) {
childImageSharp {
fluid(maxWidth: 1920, maxHeight: 367) {
...GatsbyImageSharpFluid_withWebp
}
}
}
盖茨比图片:
<div className="intro intro-page intro-container">
{configHowWeWork.childImageSharp.fluid && (
<Img
className="intro-background"
fluid={configHowWeWork.childImageSharp.fluid}
alt="alt"
/>
)}
</div>
相关CSS:
.intro-container {
position: relative;
}
.intro-background {
position: absolute!important;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
left: 0;
top: 0;
z-index: 0;
overflow: hidden;
}
问题:如何避免请求大小为 490x92(相同的初始纵横比)的图像,而是提供一个可以填充 437x354(我想要裁剪或裁剪,但不放大)而不拉伸高度的图像。
我已经尝试过的:
- 我尝试在 gatsby 查询中使用 FILL 来克服纵横比约束,但这并没有成功。
- 使用presentationSize。
谢谢你的回答。
编辑:找到的唯一一种解决方案是创建一个具有尺寸的方形图像max(width, height)
,但在我的情况下始终是宽度。通过这种方式,我可以通过低分辨率和高分辨率(例如移动和桌面)获得良好的质量,但我浪费了太多资源:
- 生成的桌面分辨率图像为 1920x1920,但容器尺寸为 1920x367。
- 移动分辨率不是那么不平衡,但仍然需要更大的高度。
我确信我遗漏了一些东西,因为仅仅创建一个响应式的宽英雄图像并不难。
编辑 2:如果我在 Firefox 中使用响应式设计模式切换到移动分辨率,我无法理解为什么图像质量很好,但是如果我使用与以前的移动设备相当的分辨率但没有响应式设计模式,质量就不好。