背景图像未在样式化组件中显示

Posted

技术标签:

【中文标题】背景图像未在样式化组件中显示【英文标题】:Background image is not showing in Styled Components 【发布时间】:2020-12-23 02:54:24 【问题描述】:

我正在开发一个电子商务应用程序。我试图在我商店中的商品上显示叠加层Sold Out。这是我的样式组件

export const PreviewSoldOut = styled.div`
  div 
    grid-area: preview;
    width: auto;
    max-height: 560px;
    object-fit: contain;
    background-position: center;
    background-image: 
   url("http://localhost:8000/media/products/saleordemoproduct_cuschion01.png");

    img 
      width: 100%;
      object-fit: contain;
    
  
`;

这是我的反应组件

<S.PreviewSoldOut>
   <img src=soldOutThumb></img>
</S.PreviewSoldOut>

但它只显示叠加层,而不是显示在产品图片上

但我想要这样 Sold Out 会超过商品图片

【问题讨论】:

【参考方案1】:

(我没有足够的声誉来发表评论,所以我现在会回答。)

测试 1:

您确定soldOutThumb 图像具有透明背景吗?

测试 2:

我认为问题是由于您的样式组件中嵌套了div。试试:

export const PreviewSoldOut = styled.div`
  div       /* <-------- remove this line */
    grid-area: preview;
    width: auto;
    max-height: 560px;
    object-fit: contain;
    background-position: center;
    background-image: url("http://localhost:8000/media/products/saleordemoproduct_cuschion01.png");

    img 
      width: 100%;
      object-fit: contain;
    
          /* <-------- remove this line */
`;

删除嵌套的 div 后,您可能需要稍微调整样式。这对我有用:

import React from "react";
import styled from 'styled-components'
import "./styles.css";

const PreviewSoldOut = styled.div`

    width: auto;
    height: 500px;
    background-image:  url("https://ychef.files.bbci.co.uk/1600x640/p02940bz.jpg");
    background-position: center; /* Center the image */
    background-repeat: no-repeat; /* Do not repeat the image */
    background-size: cover; /* Resize the background image to cover the entire container */

`;

//         
export default function App() 
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <PreviewSoldOut>
        <img src='https://udi.bc.ca/wp-content/uploads/2018/04/Sold-Out-Transparent-300x129.png' />

      </PreviewSoldOut>
    </div>
  );

【讨论】:

谢谢,但soldOutThumb 确实有透明背景。我已经编辑了我的帖子。

以上是关于背景图像未在样式化组件中显示的主要内容,如果未能解决你的问题,请参考以下文章

背景图像仅在重新加载页面后显示

样式化组件未在 Chrome 中显示

自定义字体未在用作背景图像的 SVG 模式中显示

Three.js 小鸟演示未在 Google Chrome 中显示 CSS 背景图像

将图像作为道具传递给 Next.js 中的样式化组件

在 IE 和 Mozilla Firefox 中,背景颜色和背景图像未在打印到 PDF 时显示