javascript - 如何正确地为 scss 进行嵌套导入?语义 UI 问题?
问题描述
目前我正在尝试将语义 UI 与我的反应应用程序一起使用。它目前正在改变整个应用程序的 css。我查找了一个解决方案来执行嵌套的 scss 导入以将其隔离到一个 div。这样做时,我收到此错误:
./src/components/_EmployeeRES.scss (./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-5-1!./node_modules/postcss-loader/src??postcss!. /node_modules/resolve-url-loader??ref--6-oneOf-5-3!./node_modules/sass-loader/dist/cjs.js??ref--6-oneOf-5-4!./src /components/_EmployeeRES.scss) 未找到模块:无法解析 'C:\Users\silve\desktop\Java_Project\my-app\src\components 中的 './semantic-ui-css/semantic.min.css' '
以下是我正在使用的文件:
_semantic-ui.scss:
.semantic-ui{
@import 'semantic-ui-css/semantic.min.css';
}
_EmployeeRes.scss
.profile-icons{
@import 'semantic-ui';
}
EmployeeRES.js
import React from 'react'
import { AgGridReact } from 'ag-grid-react'
import './_EmployeeRES.scss'
import 'ag-grid-community/dist/styles/ag-grid.css';
import 'ag-grid-community/dist/styles/ag-theme-balham.css';
import Button from '@material-ui/core/Button'
import ClickAwayListener from '@material-ui/core/ClickAwayListener'
import Paper from '@material-ui/core/Paper'
import MenuItem from '@material-ui/core/MenuItem'
import Menu from '@material-ui/core/Menu'
import Modal from 'react-modal'
import { Icon } from 'semantic-ui-react'
import { Link } from '@material-ui/core';
import { withRouter } from 'react-router-dom'
...
export const Profile = ({visible, closeProfile,customStyle}) => (
<Modal
isOpen={visible}
onRequestClose={()=>closeProfile()}
style={customStyle}>
<div className='profile-container'>
<div style={{textAlign:'center' ,fontSize: '16px', fontWeight: 'bold'}}>Profile</div>
<div className='profile-pic-container'></div>
<div style={{textAlign:'center',fontSize:'14px', marginTop: '10px'}}>
<div>{'First Name Last Name'}</div>
<div>{'Position'}</div>
<div>{'City, State'}</div>
</div>
<div className='profile-icons'>
<Icon name='phone' color='green' size='large'/>
</div>
</div>
</Modal>
)
所有这些文件都在同一个目录中。
解决方案
您遇到的第一个问题是因为您没有正确导入语义 UI 库。它应该是:
.semantic-ui{
@import '~semantic-ui-css/semantic.min.css';
}
~
告诉 webpack 在文件夹中查找该文件node_modules
。没有它,SASS parcer 将在您的当前目录中查找,如果在其中找不到它,它将搜索通过--load-path参数 (CLI) 或includePaths (JS API) 定义的目录。
.css
第二个问题是在 SASS 中导入 CSS 文件时应该省略扩展名。如果你不这样做,它们将被翻译成普通的 CSS 导入规则,@import url(...)
这就是你的语义 ui 规则没有嵌套在.profile-icons
类中的原因。尝试:
.semantic-ui{
@import '~semantic-ui-css/semantic.min';
}
由于某些原因,如果您像这样嵌套规则@font-face
,文件中定义的规则将停止工作。semantic.min.css
不确定它是无效的 CSS 还是 webpack 无法确定文件的位置。一个快速的解决方法是在项目的顶层重新定义它们,index.css
可能在内部:
// index.css
@font-face {
font-family: "Icons";
src: url("~semantic-ui-css/themes/default/assets/fonts/icons.woff")
format("woff");
}
推荐阅读
- carousel - 如何在整个页面上缩放轮播的宽度
- python - jupyter notebook:为服务器访问指定IP时出错
- jenkins - Github 企业的 Jenkins 插件:如何获取新的/更改的拉取请求信息
- sql - RoundFunctionSQL 最接近 10
- c# - 'System.Collections.ObjectModel.Collection
' 不包含 'AsQueryable' 的定义 - angular - Angular 2 - 覆盖组件 css 的 sass 库(不禁用封装)
- heroku - Create-react-app 不使用 build 在 heroku 上进行生产
- python - 在Python中的条件下从两个列表中生成间隔
- jquery - 有没有办法选择cheerio中的每一个元素?
- python - Tornado PeriodicCallback execute at once