Câu trả lời:
Sass là một bộ xử lý trước CSS với các tiến bộ cú pháp. Các biểu định kiểu trong cú pháp nâng cao được chương trình xử lý và biến thành các biểu định kiểu CSS thông thường. Tuy nhiên, bản thân chúng không mở rộng tiêu chuẩn CSS.
Các biến CSS được hỗ trợ và có thể được sử dụng nhưng không phải là các biến tiền xử lý.
Đối với sự khác biệt giữa SCSS và Sass, văn bản này trên trang tài liệu Sass sẽ trả lời câu hỏi:
Có hai cú pháp có sẵn cho Sass. Cái đầu tiên, được gọi là SCSS (Sassy CSS) và được sử dụng trong toàn bộ tài liệu tham khảo này, là một phần mở rộng của cú pháp CSS. Điều này có nghĩa là mọi biểu định kiểu CSS hợp lệ là một tệp SCSS hợp lệ có cùng ý nghĩa. Cú pháp này được tăng cường với các tính năng Sass được mô tả dưới đây. Các tệp sử dụng cú pháp này có phần mở rộng .scss .
Cú pháp thứ hai và cũ hơn , được gọi là cú pháp thụt lề (hoặc đôi khi chỉ là Sass mật), cung cấp một cách viết CSS ngắn gọn hơn. Nó sử dụng thụt đầu dòng thay vì dấu ngoặc để biểu thị lồng các bộ chọn và dòng mới thay vì dấu chấm phẩy để phân tách các thuộc tính. Các tệp sử dụng cú pháp này có phần mở rộng .sass .
Tuy nhiên, tất cả điều này chỉ hoạt động với trình biên dịch trước Sass mà cuối cùng tạo ra CSS. Nó không phải là một phần mở rộng cho tiêu chuẩn CSS.
scss
và sass
không chỉ là sở thích cá nhân ngày nay. scss
là nhiều hơn nữa phổ biến - được sử dụng trong khuôn khổ nhất phổ biến CSS như Bootstrap
, Foundation
, Materialize
vv khung UI chính ủng hộ scss
trên sass
theo mặc định - kiễu góc, Phản ứng, Vue. Mọi hướng dẫn hoặc bản demo thường sẽ sử dụng, scss
ví dụ: create-react-app
facebook.github.io/create-react-app/docs/
Tôi là một trong những nhà phát triển đã giúp tạo Sass.
Sự khác biệt là UI. Bên dưới bề ngoài văn bản chúng giống hệt nhau. Đây là lý do tại sao các tệp sass và scss có thể nhập lẫn nhau. Trên thực tế, Sass có bốn trình phân tích cú pháp: scss, sass, CSS và ít hơn. Tất cả những thứ này chuyển đổi một cú pháp khác nhau thành Cây Cú pháp Trừu tượng , được xử lý thêm thành đầu ra CSS hoặc thậm chí vào một trong các định dạng khác thông qua công cụ chuyển đổi sass.
Sử dụng cú pháp bạn thích nhất, cả hai đều được hỗ trợ đầy đủ và bạn có thể thay đổi giữa chúng sau này nếu bạn đổi ý.
Tệp Sass .sass
khác với trực quan .scss
tệp, ví dụ:
$color: red
=my-border($color)
border: 1px solid $color
body
background: $color
+my-border(green)
$color: red;
@mixin my-border($color) {
border: 1px solid $color;
}
body {
background: $color;
@include my-border(green);
}
Bất kỳ tài liệu CSS hợp lệ nào cũng có thể được chuyển đổi thành Sassy CSS (SCSS) chỉ bằng cách thay đổi phần mở rộng từ .css
sang .scss
.
.scss
để .css
giống như .css
đến .scss
?
.css
chỉ là hợp lệ .scss
. Ngay sau khi bạn thêm mã cụ thể scss, việc thay đổi tên tệp trở lại sẽ kết thúc dưới dạng tệp css không hợp lệ. css
là một hình vuông, và scss
là một hình chữ nhật. Tất cả các hình vuông là hình chữ nhật, nhưng không phải hình chữ nhật nào cũng là hình vuông.
Sass ( Syntactally Awesome StyleSheets ) có hai cú pháp:
Vì vậy, cả hai đều là một phần của bộ tiền xử lý Sass với hai cú pháp có thể khác nhau.
Sự khác biệt quan trọng nhất giữa SCSS và Sass gốc :
SCSS :
Cú pháp tương tự như CSS (nhiều đến mức mọi CSS3 hợp lệ thông thường cũng là SCSS hợp lệ , nhưng rõ ràng mối quan hệ theo hướng khác không xảy ra)
Sử dụng niềng răng {}
;
:
@mixin
chỉ thị@include
chỉ thịSass gốc :
=
thay vì:
=
dấu+
dấu hiệuMột số thích Sass , cú pháp ban đầu - trong khi những người khác thích SCSS . Dù bằng cách nào, nhưng điều đáng chú ý là cú pháp thụt lề Sass không được và sẽ không bao giờ bị phản đối .
Chuyển đổi với sass-convert :
# Convert Sass to SCSS
$ sass-convert style.sass style.scss
# Convert SCSS to Sass
$ sass-convert style.scss style.sass
Cú pháp của nó là khác nhau, và đó là pro chính (hoặc con, tùy thuộc vào quan điểm của bạn).
Tôi sẽ cố gắng không lặp lại nhiều điều người khác nói, bạn có thể dễ dàng google điều đó nhưng thay vào đó, tôi muốn nói một vài điều từ kinh nghiệm của tôi khi sử dụng cả hai, đôi khi ngay cả trong cùng một dự án.
SASS pro
.sass
đều dễ dàng hơn nhiều 'và dễ đọc hơn trong .scss
(chủ quan).Nhược điểm
body color: red
như bạn có thể trong .scssbody {color: red}
.scss
các tệp (cùng với .sass
các tệp) trong dự án của bạn hoặc chuyển đổi chúng thành .sass
.Khác với điều này - họ làm cùng một công việc.
Bây giờ, điều tôi muốn làm là viết mixins và các biến .sass
và mã sẽ thực sự biên dịch thành CSS .scss
nếu có thể (ví dụ Visual studio không hỗ trợ.sass
nhưng bất cứ khi nào tôi làm việc trên các dự án Rails, tôi thường kết hợp hai trong số chúng, không phải trong một tập tin ofc).
Gần đây, tôi đang cân nhắc việc tặng bút stylus một cơ hội (cho bộ tiền xử lý CSS toàn thời gian) vì nó cho phép bạn kết hợp hai cú pháp trong một tệp (trong số một số tính năng khác). Đó có thể không phải là một hướng đi tốt cho một đội nhưng khi bạn duy trì nó một mình - không sao cả. Bút stylus thực sự linh hoạt nhất khi cú pháp được đề cập.
Và cuối cùng mixin cho .scss
vs .sass
so sánh cú pháp:
// SCSS
@mixin cover {
$color: red;
@for $i from 1 through 5 {
&.bg-cover#{$i} { background-color: adjust-hue($color, 15deg * $i) }
}
}
.wrapper { @include cover }
// SASS
=cover
$color: red
@for $i from 1 through 5
&.bg-cover#{$i}
background-color: adjust-hue($color, 15deg * $i)
.wrapper
+cover
Sass có hai cú pháp. Cú pháp chính mới (kể từ Sass 3) được biết đến với tên gọi là SCSSv (đối với CSS Sassy CSS , ) và là một siêu cú pháp của cú pháp CSS3. Điều này có nghĩa là mọi biểu định kiểu CSS3 hợp lệ cũng là SCSS hợp lệ. Các tệp SCSS sử dụng phần mở rộng .scss.
Cú pháp thứ hai, cũ hơn được gọi là cú pháp thụt lề (hoặc chỉ là Sass mật). Lấy cảm hứng từ sự căng thẳng của Haml, nó dành cho những người thích sự đồng nhất hơn là sự tương đồng với CSS. Thay vì dấu ngoặc và dấu chấm phẩy, nó sử dụng thụt dòng để chỉ định các khối. Mặc dù không còn là cú pháp chính, cú pháp thụt lề sẽ tiếp tục được hỗ trợ. Các tệp trong cú pháp thụt lề sử dụng phần mở rộng .sass.
SASS là một ngôn ngữ được giải thích tạo ra CSS. Cấu trúc của Sass trông giống như CSS (từ xa), nhưng đối với tôi, phần mô tả có chút sai lệch; nó không phải là sự thay thế cho CSS hay một phần mở rộng. Cuối cùng, nó là một trình thông dịch phát ra CSS, vì vậy Sass vẫn có những hạn chế của CSS thông thường, nhưng nó che giấu chúng bằng mã đơn giản.
Sự khác biệt cơ bản là cú pháp. Mặc dù SASS có cú pháp lỏng lẻo với khoảng trắng và không có dấu chấm phẩy, SCSS giống với CSS hơn.
SASS là viết tắt của Syntactally Awesome StyleSheets. Nó là một phần mở rộng của CSS tăng thêm sức mạnh và sự tao nhã cho ngôn ngữ cơ bản. SASS mới được đặt tên là SCSS với một số trò chuyện, nhưng SASS cũ cũng ở đó. Trước khi bạn sử dụng SCSS hoặc SASS, vui lòng xem sự khác biệt dưới đây.
Một ví dụ về một số cú pháp SCSS và SASS:
SCSS
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
//Mixins
@mixin transform($property) {
-webkit-transform: $property;
-ms-transform: $property;
transform: $property;
}
.box { @include transform(rotate(30deg)); }
SASS
$font-stack: Helvetica, sans-serif
$primary-color: #333
body
font: 100% $font-stack
color: $primary-color
//Mixins
=transform($property)
-webkit-transform: $property
-ms-transform: $property
transform: $property
.box
+transform(rotate(30deg))
Xuất CSS sau khi biên dịch (Tương tự cho cả hai)
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
//Mixins
.box {
-webkit-transform: rotate(30deg);
-ms-transform: rotate(30deg);
transform: rotate(30deg);
}
Để được hướng dẫn thêm, bạn có thể xem trang web chính thức .
Sass là người đầu tiên và cú pháp hơi khác một chút. Ví dụ: bao gồm một mixin:
Sass: +mixinname()
Scss: @include mixinname()
Sass bỏ qua dấu ngoặc nhọn và dấu chấm phẩy và nằm trên lồng, điều mà tôi thấy hữu ích hơn.
Sự khác biệt giữa SASS và SCSS bài viết giải thích sự khác biệt về chi tiết. Đừng nhầm lẫn bởi các tùy chọn SASS và SCSS, mặc dù ban đầu tôi cũng vậy, .scss là Sassy CSS và là thế hệ tiếp theo của .sass.
Nếu điều đó không có ý nghĩa, bạn có thể thấy sự khác biệt trong mã bên dưới.
/* SCSS */
$blue: #3bbfce;
$margin: 16px;
.content-navigation {
border-color: $blue;
color: darken($blue, 9%);
}
.border {
padding: $margin / 2; margin: $margin / 2; border-color: $blue;
}
Trong đoạn mã trên chúng tôi sử dụng; để tách các tờ khai. Tôi thậm chí đã thêm tất cả các khai báo cho .border vào một dòng để minh họa điểm này hơn nữa. Ngược lại, mã SASS bên dưới phải nằm trên các dòng khác nhau với thụt lề và không được sử dụng;
/* SASS */
$blue: #3bbfce
$margin: 16px
.content-navigation
border-color: $blue
color: darken($blue, 9%)
.border
padding: $margin / 2
margin: $margin / 2
border-color: $blue
Bạn có thể thấy từ CSS bên dưới rằng kiểu SCSS giống với CSS thông thường hơn nhiều so với cách tiếp cận SASS cũ.
/* CSS */
.content-navigation {
border-color: #3bbfce;
color: #2b9eab;
}
.border {
padding: 8px;
margin: 8px;
border-color: #3bbfce;
}
Tôi nghĩ rằng hầu hết thời gian những ngày này nếu ai đó đề cập rằng họ đang làm việc với Sass, họ đang đề cập đến việc tác giả trong .scss chứ không phải là cách .sass truyền thống.
Nguyên sass
giống như cú pháp của ruby, tương tự như ruby, ngọc v.v ...
Trong các cú pháp đó, chúng tôi không sử dụng {}
, thay vào đó chúng tôi sử dụng khoảng trắng, cũng không sử dụng;
...
Trong các scss
cú pháp thì giống hơn CSS
, nhưng với việc có nhiều tùy chọn hơn như: lồng nhau, khai báo, v.v., tương tự less
và xử lý trước CSS
...
Đại khái họ làm điều tương tự, nhưng tôi đặt vài dòng của mỗi để thấy sự khác biệt cú pháp, nhìn vào {}
, ;
và spaces
:
SASS:
$width: 100px
$color: green
div
width: $width
background-color: $color
SCSS:
$width: 100px;
$color: green;
div {
width: $width;
background-color: $color;
}
Câu trả lời nhỏ gọn:
SCSS đề cập đến cú pháp chính được hỗ trợ bởi bộ xử lý trước Sass CSS .
.scss
đại diện cho cú pháp tiêu chuẩn được hỗ trợ bởi Sass. SCSS là một siêu bộ CSS..sass
cú pháp "cũ hơn" được Sass hỗ trợ bắt nguồn từ thế giới Ruby.SASS là Bảng định kiểu tuyệt vời về mặt cú pháp và là một phần mở rộng của CSS cung cấp các tính năng của các quy tắc lồng ghép, kế thừa, Mixins trong khi SCSS là Sassy Cascaded Style Sheets tương tự như CSS và lấp đầy các khoảng trống và không tương thích giữa CSS và SASS. Nó đã được cấp phép theo giấy phép MIT. Bài viết này có nhiều hơn về sự khác biệt: https://www.educba.com/sass-vs-scss/