我目前正在使用带有React的CSS模块进行造型。因此,我的每个组件都在其中导入特定于组件的css文件,如下所示:
import React from 'react';
import styles from './App.css';
const example = () => (
<div className={styles.content}>
Hello World!
</div>
);
export default example;
这样在设计单个组件时效果很好,但是如何应用不是特定于组件的全局样式(html,正文,标题标记,div等)?
答案 0 :(得分:58)
由于您使用的是ES6导入语法,因此您可以使用相同的语法导入样式表
import './App.css'
此外,您可以使用:global
包装您的班级以切换到全局范围(这意味着CSS模块不会对其进行模块化,例如:在其旁边添加随机ID)
:global(.myclass) {
background-color: red;
}
答案 1 :(得分:6)
这可以通过简单地添加:
来完成require('./App.css');
(感谢@elmeister正确回答了这个问题。)
答案 2 :(得分:1)
我发现全局导入样式的唯一方法是添加:
<style dangerouslySetInnerHTML={{__html: `
body { max-width: 100% }
`}} />
返回render
方法。
否则,style
标记将添加到<head>
,并且样式将应用于所有下一个路线。
来自https://medium.learnreact.com/the-style-tag-and-react-24d6dd3ca974
也许可以将样式从文件导入为字符串,以使代码更有条理。
答案 3 :(得分:1)
如果你想使用 css 模块,另一种简单的方法是:
<style jsx global>{`
.slick-prev:before,
.slick-next:before {
color: somecolor;
}
`}</style>
答案 4 :(得分:0)
我遇到了同样的问题,发现了以下解决方法,您可以选择最适合自己的方式
示例如下:
static void Main(string[] args)
{
Console.WriteLine("Generator A starting value: ");//put 65
string generatorAValue = Console.ReadLine();
Console.WriteLine(MakeFirstStageCalculations(Convert.ToDecimal(generatorAValue), 16807));
}
public static int MakeFirstStageCalculations(decimal value, decimal coefficient, decimal division = 2147483647)
{
decimal multiplicationValue = value * coefficient;
decimal remainder = MakeRemainder(multiplicationValue, division); //first remainder starting value if value is 65 i posted what values should be returned.
int donein = 0; // how long while loop needed to complete.
#if DEBUG
int goodvalue = 0;
#endif
while (remainder != 0)
{
remainder = MakeRemainder(remainder, division);//PROBLEM IS RIGHT HERE,it should return new remained and overwrite.
Console.WriteLine(remainder);
#if DEBUG
if (goodvalue == 10)
{
break;
}
goodvalue++;
#endif
donein++;
}
/*First 4 remainder values should be:
* 1092455
* 1181022009
* 245556042
* 1744312007
*/
return donein;
}
private static decimal MakeRemainder(decimal multiplicationValue, decimal division)
{
decimal z = multiplicationValue / division;
z = multiplicationValue - z;
return z;
}
// exclude all global styles for css modules
{
test: /\.(less|css)$/,
exclude: path.resolve(__dirname, './src/styles'),
use: [
{
loader: CssExtractPlugin.loader,
options: { hot: is_dev, reloadAll: is_dev }
},
{
loader: "css-loader",
options: {
modules: {
localIdentName: '[local]___[hash:base64:5]'
}
}
},
"postcss-loader",
"less-loader"
]
},
// process global styles without css modules
{
test: /\.(less|css)$/,
include: path.resolve(__dirname, './src/styles'),
use: [
{
loader: CssExtractPlugin.loader,
options: { hot: is_dev, reloadAll: is_dev }
},
"css-loader",
"postcss-loader",
"less-loader"
]
}
如果您将模式定义为全局模式,那么所有包含的css类都不会被哈希名称代替,而是仅将您指定为:local的那些命名为唯一名称。例如:
{
loader: "css-loader",
options: {
modules: {
localIdentName: '[local]___[hash:base64:5]',
mode: 'global',
}
}
},
/* this will remain as is */
.header {
color: blue;
}
:local {
/* this will become something like item_xSH2sa */
.item {
color: yellow;
}
}
答案 5 :(得分:0)
解决方案1:
从reactapp
的起点导入全局样式。
整个react应用都位于{strong> root 组件中的wrapped
中。
它可以是index.js
或app.js
或index.html
解决方案2:
使用scss
并创建main.scss
文件,并在custom scss
main.scss
文件