SCSS nesting
- SCSS nesting là cấu trúc viết gọn theo dạng phân cấp, giúp dễ dàng kiểm soát thành phần con thuộc thành phần cha nào rất tiện lợi.
- Ngoài ra còn giúp kiểm soát code của thành phần theo các dạng màn hình khá tốt.
- Đây cũng là cấu trúc được giới thiệu ở bài cú pháp SCSS.
Ví dụ SCSS nesting - theo tag
- Phân cấp cha con, thành phần bên trong sẽ là thành phần con.
SCSS |
CSS |
section {
width: 300px;
h2 {
font-size: 12px;
}
div {
padding: 20px;
}
}
|
section {
width: 300px;
}
section h2 {
font-size: 12px;
}
section div {
padding: 20px;
}
|
#main {
width: 300px;
h2 {
font-size: 12px;
}
.list {
padding: 20px;
li {
background-color: #f1f1f1;
}
}
}
|
#main {
width: 300px;
}
#main h2 {
font-size: 12px;
}
#main .list {
padding: 20px;
}
#main .list li {
background-color: #f1f1f1;
}
|
Ví dụ SCSS nesting - đại diện
- Ký tự
&
sẽ đại diện cho thành phần cha bên ngoài gần nhất.
SCSS |
CSS |
.btn-submit {
width: 100px;
background-color: red;
&:hover {
background-color: blue;
}
}
|
.btn-submit {
width: 100px;
background-color: red;
}
.btn-submit:hover {
background-color: blue;
}
|
.list {
margin-bottom: 20px;
&.list-last {
margin-bottom: 0;
}
}
|
.list {
margin-bottom: 20px;
}
.list.list-last {
margin-bottom: 0;
}
|
.list {
li {
float: left;
margin-right: 10px;
&:last-child {
margin-right: 0;
}
}
}
|
.list li {
float: left;
margin-right: 10px;
}
.list li:last-child {
margin-right: 0;
}
|
Ví dụ SCSS nesting - thuộc tính
- Các thuộc tính có tiền tố giống nhau, có thể được gom chung với nhau.
- Một số thuộc tính có tiền tố giống nhau thường dùng:
font-
margin-
padding-
text-
background-
border-
...
SCSS |
CSS |
section {
width: 300px;
font: {
family: Arial, sans-serif;
size: 16px;
}
h2 {
font-size: 20px;
}
div {
padding: 20px;
}
}
|
section {
width: 300px;
font-family: Arial, sans-serif;
font-size: 16px;
}
section h2 {
font-size: 20px;
}
section div {
padding: 20px;
}
|
Ví dụ SCSS nesting - @media
@media
được sử dụng bên trong thành phần nào thì sẽ sử dụng cho thành phần đó.
SCSS |
CSS |
#main {
width: 300px;
@media only screen and (min-width: 641px) {
width: 200px;
}
}
|
#main {
width: 300px;
}
@media only screen and (min-width: 641px) {
#main {
width: 200px;
}
}
|