面试题答案
一键面试语法差异
- SASS/SCSS:
- 定义混合:使用
@mixin
关键字,例如:
@mixin border-radius($radius) { -webkit - border - radius: $radius; -moz - border - radius: $radius; border - radius: $radius; }
- 使用混合:使用
@include
关键字,例如:
div { @include border - radius(5px); }
- 定义混合:使用
- LESS:
- 定义混合:通过普通的类样式语法定义,例如:
.border - radius(@radius) { -webkit - border - radius: @radius; -moz - border - radius: @radius; border - radius: @radius; }
- 使用混合:直接像调用类一样使用,例如:
div { .border - radius(5px); }
选择依据及项目场景
- SASS/SCSS:
- 选择依据:
- 当项目代码结构较为复杂,需要更严格的语法规范和强大的功能时,SASS/SCSS更合适。它支持嵌套规则、复杂的运算和控制指令等。
- 若团队成员对传统编程语言语法更熟悉,SASS/SCSS的
@mixin
和@include
语法可能更容易理解和维护。
- 项目场景:大型前端项目,如企业级Web应用。以一个电商网站为例,网站中有大量的组件样式需要复用,如按钮样式。按钮可能有不同的尺寸、圆角半径等变化。可以定义一个
@mixin
来处理按钮的基础样式和不同状态(如hover、active)的样式复用。例如:
@mixin button - style($bg - color, $text - color, $radius) { background - color: $bg - color; color: $text - color; border - radius: $radius; &:hover { background - color: darken($bg - color, 10%); } &:active { background - color: lighten($bg - color, 10%); } } .primary - button { @include button - style(#007BFF, #fff, 3px); } .secondary - button { @include button - style(#6C757D, #fff, 5px); }
- 选择依据:
- LESS:
- 选择依据:
- 对于简单的项目或对语法简洁性要求较高,不太需要复杂功能的场景,LESS更具优势。它的语法接近CSS,学习成本低。
- 若团队成员对CSS熟悉,而对新的关键字语法接受度较低,LESS的类样式调用混合方式更易上手。
- 项目场景:小型网站或简单的前端页面。比如一个个人博客网站,样式复用场景相对简单。以文章标题样式为例,不同层级的标题可能有不同的字体大小、颜色和下划线样式。可以这样定义和使用LESS混合:
.title - style(@font - size, @color, @underline) { font - size: @font - size; color: @color; @if (@underline = true) { text - decoration: underline; } } h1 { .title - style(2em, #333, true); } h2 { .title - style(1.5em, #666, false); }
- 选择依据: