欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

無法從CSS Create React應(yīng)用程序中的公共文件夾導(dǎo)入

林雅南1年前9瀏覽0評論

在用Create React App引導(dǎo)的項(xiàng)目中,在我的公共文件夾中,我有一個(gè)包含文件logo512.jpg的assets文件夾。

當(dāng)我像這樣在組件中引用文件時(shí)

<div>
    <img src='/assets/logo512.jpg'/>
</div>

一切都很完美。然而,當(dāng)我在一個(gè)CSS文件中為同一個(gè)組件引用同一個(gè)文件時(shí),比如:

background {
    background-image: url('assets/logo512.jpg');
}

則錯(cuò)誤無法解析目錄_ OF _ COMPONENT/assets/logo512.jpg中的“/assets/logo 512 . jpg”

請注意,DIRECTORY_OF_COMPONENT不是公共文件夾,而是CSS文件所在的文件夾。如何使url引用公共文件夾?

下面是完整的代碼和我的文件結(jié)構(gòu):

// HomePage.js

import React from 'react';
import 'tachyons';
import './HomePage.css';

function HomePage() {
    return (
        <div className="background tc">
            <div>
                <img src='/assets/logo512.jpg'/> //this works 
            </div>
        </div>
    );
}

export default HomePage;



// HomePage.css
.background {
    height: 100%;
    display: flex;
    align-content: center;
    justify-content: center;
    background: url('/assets/logo512.jpg'); //this does not work
}

File Structure

更新:

案例1:

如果您的圖像在公共文件夾中。如果您使用的是public文件夾中的assets文件夾,那么代碼應(yīng)該可以工作。

所有三種情況的Codesandbox演示:https://codesandbox.io/s/images-not-loaded-hkzq1

案例二:

如果您想使用public文件夾以外的圖像,您需要首先將圖像導(dǎo)入React項(xiàng)目。(確保路徑正確和您的圖像)。

import MyImage from "./assets/logo512.jpg"

然后在src屬性中使用。

<img src={MyImage}/>

案例3:當(dāng)使用CSS在塊級元素上設(shè)置圖像時(shí):

.background  {
  height:200px; /* Make sure height of the div is given for image to be within*/
  background-image: url("assets/logo512.jpg");
}

這應(yīng)該可以正常工作(假設(shè)你的CSS文件的相對路徑是正確的)

注意:對于SVG圖像,React提出了一種基于組件的方法,我們通過使用ReactComponent導(dǎo)入我們的SVG來使用。

import { ReactComponent as Logo } from './logo.svg';

return(<Logo/>)

我自己也有這個(gè)問題,但發(fā)現(xiàn)另一個(gè)答案太模糊了。

需要明確的是:CSS中的資產(chǎn)對應(yīng)于項(xiàng)目中的src/assets目錄。

這是我在CSS中使用的靜態(tài)資產(chǎn):

@font-face {
  font-family: "ITC Clearface";
  src: url("assets/ClearfaceStd-Regular.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
}

但是您也可以從編譯器顯示的錯(cuò)誤中診斷出為什么您的路徑不起作用,例如:

找不到模塊:錯(cuò)誤:無法解析“/home/Mike/Code/myapp/website/src”中的“assets/somefile”

通過運(yùn)行(bash或powershell)來查看該文件是否存在

ls /home/mike/Code/myapp/website/src/assets/somefile

如果這不起作用,那么該文件不存在-您可能在名稱中有一個(gè)打字錯(cuò)誤!在我的例子中,我在CSS中使用的字體文件有一個(gè)小的拼寫錯(cuò)誤。

我是這樣做的,而且效果很好:有兩種方法:

我從public導(dǎo)入圖像,并在tsx組件中這樣做: const myBg = '。/images/BG . png '; //然后在我需要的地方使用這個(gè)變量,就像這樣:

//記住設(shè)置div寬度和高度,以便在里面顯示圖像 通過對完整路徑進(jìn)行硬編碼,將它從public直接導(dǎo)入到css中:

。my_bg{ 背景圖像:url('../../../public/images/bg.png') /*這是從css/sass到public的完整路徑*/ //其余的css,比如高度、寬度、背景尺寸和位置等

}