导入字体以使用Webpack和样式化组件来响应项目

but夫

我正在尝试从我的使用Webpack和样式化组件的react项目中的本地资源导入字体。我有一个带有以下代码的字体文件夹:

import { css } from 'styled-components';
import { fontWeight } from './vars';

export const fontFaces = css`
  @font-face {
    font-family: 'OurFont';
    src: url('/resources/fonts/OurFont-Bold.woff2') format('woff2');
    font-weight: ${fontWeight.bold};
    font-style: normal;
  }
`;

然后我有一个全局样式文件:

import { createGlobalStyle } from 'styled-components';
import { fontFaces } from './fonts';

export const GlobalStyles = createGlobalStyle`
  ${fontFaces}
`;

在我的应用程序组件中,我从类似样式的组件中使用ThemeProvider(为简洁起见,此处省略了一些不相关的代码):

import { ThemeProvider } from 'styled-components';

class App extends React.Component {
render() {
  return (
    <ThemeProvider theme={{ theme }}>
      <GlobalStyles />
      <AppHeader />
      <AppNavigator />       
    </ThemeProvider>
  );
}}

以及来自webpack的相关代码:

module: {
  rules: [
    {
      test: /\.jsx?$/,
      exclude: /node_modules/,
      use: ['babel-loader'],
    },
    {
      test: /\.(eot|svg|ttf|woff|woff2|otf)$/,
      use: [
        {
          loader: 'file-loader',
          options: {
            name: '[name].[ext]',
            limit: 10000,
            mimetype: 'application/font-woff',
          },
        },
      ],
    },

我尝试遵循线程的建议,但对我来说似乎不起作用,因为在控制台中出现错误,提示GET http:// localhost:5001 / resources / fonts / OurFont-Bold.woff2 net :: ERR_ABORTED 404 (未找到)。

有人知道我在做什么错吗,或者还有其他方法吗?谢谢!

喇叭

您可以通过在JS中导入字体并将其传递给样式化的组件CSS模板标签来解决此问题:

import { css } from 'styled-components';
import { fontWeight } from './vars';

import myFontURL from '../../mypath/fonts/OurFont-Bold.woff2';

export const fontFaces = css`
  @font-face {
    font-family: 'OurFont';
    src: url(${myFontURL}) format('woff2');
    font-weight: ${fontWeight.bold};
    font-style: normal;
  }
`;

确保不使用/resources/fonts/OurFont-Bold.woff2,而使用当前文件目录的相对路径。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在样式化组件ReactJS上导入字体

在内部使用道具来响应样式化的组件

如何使用样式化组件来全局样式化动态响应数据(dangerouslySetInnerHTML)?

使用样式化组件来设置滑块的样式

对导入的样式化组件进行样式化

如何使用样式化组件设置全局字体系列

导入时流类型和样式化组件错误

如何在带有样式化组件的Reactjs中导入本地字体?

Antd:我正在尝试使用样式化的组件来更改Antd复选框的默认样式,以使复选框变大并将颜色更改为黑色

尝试使用样式化组件时出现Webpack错误

使用 CSS 响应组件样式

组件文件未导入Webpack react项目?

使用Webpack导入Vue组件

我可以使用传入组件的变量来设置标准样式的CSS属性值吗

PrimeReact和样式化组件

Google 字体导入不适用于 NuxtJS 组件样式

考虑到性能和广告显示,如何使用React和样式化组件在2个响应式标题(移动和桌面)之间切换?

如何使用Typescript和样式化组件创建引用

避免使用样式化组件和打字稿传递道具

使用字体框架来实现页面上的每种文本样式和性能?

将样式组件与 react 和 storybook 结合使用时,字体未加载

使用样式化组件扩展样式无效

如何添加样式(如边距)来响应组件?

使用样式化的组件样式化嵌套的组件

Qt项目(QTL样式)和C ++项目(STL样式)都可以使用如何制作c ++代码

使用 Typescript 响应样式组件,类型错误

我可以使用循环来最小化 ES6 导入语句吗?

样式化组件项目结构和多个index.js文件

如何在带有响应的样式化组件中使用网格模板区域?