HTML模板不支持LESS/SCSS语法,浏览器原生无法解析,必须通过CLI预编译为CSS后引入;开发中禁用浏览器端实时编译,生产环境严禁部署源文件。
HTML 模板本身不支持变量、嵌套或混合等预处理能力——<style> 标签里写 @variable 或 $color 会直接被浏览器忽略,不是语法错,是根本不认识。
你在 index.html 里写 <link rel="stylesheet" href="main.less">,浏览器只会把它当纯文本下载,不会编译,也不会应用样式。这不是路径问题,也不是版本问题,是能力缺失。
常见错误现象:
main.less 返回 200,但 MIME 类型是 text/plain
.less 内容,但开发者工具的 Styles 面板里查不到对应规则唯一上线可行方案:把 .less 或 .scss 文件用命令行工具转成标准 CSS,再引入。
立即学习“前端免费学习笔记(深入)”;
实操建议:
npm install -g less 或 npm install -g sass
lessc src/style.less dist/style.css,或 sass src/style.scss dist/style.css
index.html 中只引入编译结果:<link rel="stylesheet" href="dist/style.css">
.less/.scss 文件部署到线上服务器——既无用,又暴露项目结构虽然 less.js 可通过 <script src="less.js"> + <style type="text/less"> 实现浏览器端编译,但实际不可靠:
less.js 内部某行,不是你写的 variables.less 第 12 行sass.js 是非官方移植版,体积大、不支持 @use、无 source map如果真不能用任何构建工具(比如纯静态 HTML 演示页),唯一能“用上变量效果”的方式是:手动编译好内容,粘贴进内联 <style>。
例如,你写了:
@primary: #3498db;.header { color: @primary; }
那就先用 lessc 编译出:
.header { color: #3498db; }
再复制进去:
<style>.header { color: #3498db; }</style>
这不是“HTML 使用变量”,只是把编译结果硬编码进去——变量逻辑完全丢失,改颜色就得重编译+重粘贴。
真正关键的分水岭不在语法差异,而在于是否接受「CSS 必须经过一道转换才能运行」这个事实。绕过它,就等于在要求浏览器执行一门它根本没设计去理解的语言。