【发布时间】:2021-07-22 00:19:03
【问题描述】:
我在 SCSS 文件中有以下内容,用于通过 create-react-app 创建的 React 应用程序:
div.letterCaret {
content: "";
display: block;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
border: css-min(10px, 1.3vh) solid transparent;
width: 10px;
height: 10px;
border-top-color: inherit;
}
div.stringUnderscore {
height: css-clamp(0.3rem, 15%, 1rem);
border: $underScoreBorderWidth solid;
border-top: none;
position: absolute;
left: 50%;
transform: translateX(-50%);
transition: left 400ms $easeOutCirc, width 400ms $easeOutCirc, border-color 400ms $easeOutCirc;
}
当我运行 npm run build 时,它会编译为:
div.letterCaret {
content: "";
display: block;
top: 0;
border: solid transparent;
width: 10px;
height: 10px;
border-top-color: inherit
}
div.letterCaret, div.stringUnderscore {
position: absolute;
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%)
}
div.stringUnderscore {
height: clamp(.3rem, 15%, 1rem);
border: .2rem solid;
border-top: none;
transition: left .4s cubic-bezier(0, .55, .45, 1), width .4s cubic-bezier(0, .55, .45, 1), border-color .4s cubic-bezier(0, .55, .45, 1)
}
在 div.letterCaret 上,border: css-min(10px, 1.3vh) solid transparent; 变为 border: solid transparent;。这只发生在构建中,而不是npm run start(即开发),它可以正常工作。尽管明确调用 css 函数,我似乎无法修复它,我做错了什么?
尝试了其他解决方案:
- 创建一个
overrides.css文件,直接在index.html头中调用;这行得通,但感觉很hacky,我想知道为什么上面的内容不能理解如何正确修复它 - 在
scss文件之后直接将overrides.css导入index.js,但它被忽略了 - 使用大写的 Max/Min/Clamp 绕过 SASS nativ max/min/clamp 问题
- 使用自定义函数,例如css-max 显式使用 CSS 函数(当前设置); 这似乎适用于其他用途,而不是专门用于边框
【问题讨论】:
标签: css reactjs sass build create-react-app