gatsby - gatsby-image-plugin,StaticImage 不能覆盖默认的包装样式(gatsby-image-wrapper & gatsby-image-wrapper-constrained style)
问题描述
我将 GatsbyJS 与 TailwindCSS 一起使用,当我尝试将 tailwind 样式从 gatsby-image-plugin 传递到 StaticImage 的包装器时,现有样式不会被覆盖(即 gatsby-image-wrapper 和 gatsby-image-wrapper-constrained 样式)。
<StaticImage src="https://images.pexels.com/photos/189349/pexels-photo-189349.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="just an image" placeholder="blurred" className="absolute z-0" objectFit="cover" />
包装器的位置保持不变(gatsby-image-wrapper & gatsby-image-wrapper-constrained),而传递给组件的一些类被忽略。
有什么方法可以删除默认样式,或者有什么其他方法可以让类通过工作?
解决方案
这是由于在用户 CSS(包括 Tailwind)之后gatsby-plugin-image
输出其样式而导致的错误,这将覆盖所有具有相同 CSS 特异性的类,因为这些类稍后在 DOM 中声明。如果你检查 gatsby 构建的页面,你也会注意到这个顺序:
<style>
.absolute {
position: absolute
}
.test-class-dont-override {
display: "block"
}
</style>
<meta name="generator" content="Gatsby 4.4.0"/>
<style>
.gatsby-image-wrapper {
position: relative;
overflow: hidden
}
.gatsby-image-wrapper picture.object-fit-polyfill {
position: static!important
}
.gatsby-image-wrapper img {
bottom: 0;
height: 100%;
left: 0;
margin: 0;
max-width: none;
padding: 0;
position: absolute;
right: 0;
top: 0;
width: 100%;
object-fit: cover
}
.gatsby-image-wrapper [data-main-image] {
opacity: 0;
transform: translateZ(0);
transition: opacity .25s linear;
will-change: opacity
}
.gatsby-image-wrapper-constrained {
display: inline-block;
vertical-align: top
}
</style>
目前唯一的解决方法(直到盖茨比对此有所作为)是!important
像其他人所说的那样在顺风类前面加上前缀。我已经在 Gatsby 的问题页面上提交了一个错误,希望它很快会得到一些关注。
https://github.com/gatsbyjs/gatsby/issues/34457
编辑:显然,背后的维护者gatsby-plugin-image
无意修复此错误,因为他希望防止用户出于“性能和灯塔”的原因轻易覆盖这些样式。回复链接:
https ://github.com/gatsbyjs/gatsby/issues/34457#issuecomment-1025689173
推荐阅读
- javascript - 将类一一添加到跨度标签组
- java - AOP Java - 为任何子类定义切入点
- r - Switch 语句在 r shiny 中没有被识别为变量
- html - Safari 浏览器没有将页脚推到页面底部以获取大于 100vh 的内容并且具有显示 flex
- flutter - 如何在flutter中创建后台服务
- javascript - 如何通过 id 计算数组对象的长度?
- c - malloc 应该被赋予指针大小或内存大小?
- c# - 嵌套列表 Linq Lambda 表达式上的单个结果
- entity-framework - 事务不适用于 Web API .net core 2.2
- c++ - 在 Xtensa 上使用 TFLite 模型来加速 ML 算法