linear-gradient над Gatsby-Background-Image

У меня есть изображение, на которое я ссылаюсь с запросом Graphql в своем коде. На этом изображении я хочу иметь линейный градиент, который находится в моем модуле css. Как я могу сделать это без использования css, написанного в моем файле javascript?

Наличие линейного градиента, записанного в файле js, действительно работает, но он помещает мой стиль CSS туда, где мне это не нужно. Как я могу сослаться на свой стиль градиента в модуле css и заставить его работать с Gatsby-Background-Image?

Использование класса heroGradient в файле css-модуля перезаписывает все изображение. Как сохранить изображение в стеке, не перезаписывая его, применяя только градиент сверху?

const {image} = useStaticQuery(graphql`
    query {
      image: file(relativePath: { eq: "filename.jpg" }) {
        childImageSharp {
          fluid(quality: 100) {
            ...GatsbyImageSharpFluid_withWebp
          }
        }
      }
    }
`)
// This works
// const imageDataStack = [image.childImageSharp.fluid, `linear-gradient(270deg, #ffffff27 30%,  #e8d4b450 100%)`].reverse()

// This doesn't work
const imageDataStack = [image.childImageSharp.fluid, heroStyles.heroGradient].reverse()

  return (
    <BackgroundImage 
      Tag="section"
      className={heroStyles.heroContent}
      fluid={imageDataStack}
      >
      <h1 className={heroStyles.heroText}>
        {site.siteMetadata.description}
      </h1>
    </BackgroundImage>
.hero-gradient {
    background: linear-gradient(270deg, #ffffff27 30%,  #e8d4b450 100%);

person bitcasual    schedule 02.03.2021    source источник


Ответы (1)


Как я могу сделать это без использования css, написанного в моем файле javascript?

Вы не можете, так как стили применяются встроенными. Если вы используете свои CSS-модули (или другие стили), встроенные стили всегда будут переопределять ваши CSS-модули, и, кроме того, вам нужна логика JavaScript, которую они применяют к gatsby-image.

Вы можете заставить это переопределить, используя и попробовав !important, но это может привести к некоторым несоответствиям, и ваш фон (компонент <BackgroundImage>) может вести себя странно.

Общий стиль для <section> (<BackgroundImage>) может быть применен с использованием модулей CSS, но когда правила между встроенным стилем и стилем модулей CSS сталкиваются, поэтому я предлагаю применить не конфликтующие правила с использованием модулей CSS и оставить унаследованный встроенный стиль из <BackgroundImage>.

person Ferran Buireu    schedule 02.03.2021