在Sass中,可以将CSS一层一层的包起来,不但简单直觉能直接和HTML的结构做对应,也不用一层一层重复写
举例来说,正常的CSS是这样写的:
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav ul li {
display: inline-block;
}
nav ul li a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
而在Sass可以直接这样写:
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
li {
display: inline-block;
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
}
}
这种表示方式就称为Nesting,只需要将子元素的样式放在各自的父元素中,这样不但提升了写CSS时的方便性,也提升了程序码的可读性! 如果是第一次使用Sass,相信光这点就能感受到其魅力,用了就回不去了~
最後我们就来做个小练习,来完成一个简单的Card(卡片)组件吧
首先打开在components内的_card.scss,贴上下面的Code:
// _card.scss
// 卡片
.card {
display: block;
padding: $base-padding; // 之前变数的文章有写,不要忘了
margin: $base-margin;
border: 1px solid #ddd;
box-shadow: $base-box-shadow;
border-radius: 20px;
// 卡片标题
.card-title {
font-size: $base-font-size;
padding-bottom: $base-padding;
font-weight: bold;
}
// 卡片内容
.card-body {
font-size: $base-font-size;
a {
text-decoration: underline;
}
}
}
其中我有将阴影和文字大小提成变数,这样之後要调整就只需要改这边就好
所以记得在_variables.scss内多宣告变数
// _variables.scss
// font sizes
$base-font-size: 1rem;
// shadow
$base-box-shadow: 1px 3px 5px rgba(0, 0, 0, .1);
样式都写好之後就来使用看看吧! 在index.html内写上:
<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/main.css">
<title>[Day08] ITHelp Sass</title>
</head>
<body>
<!-- Cards -->
<h2>Cards</h2>
<div class="card">
<h1 class="card-title">This is a title</h1>
<p class="card-body">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Atque id necessitatibus repudiandae
sunt reprehenderit ipsum possimus magni <a href="#">dignissimos quod</a>? Magnam corrupti quaerat doloribus dolore quisquam
aliquid iusto, libero perferendis tempora.</p>
</div>
</body>
</html>
接着将专案跑起来就可以在页面上看到一个精美的卡片了~
<<: Day06 UIKit 05 - 纯代码编写 Code
>>: 【Day21】补上data-test属性及判断Component和按钮及数字是否正确显示(╯✧∇✧)╯
今天我们要来介绍 EBS Type方案比较,那我们开始吧! 在之前的文章中我们有提过,EBS 相对...
开发 .NET 程序之前,需要安装两个东西: IDE: 让我们编写程序与 debug .NET SD...
在 Ruby 里 public,protected 与 private 都是存取限制的方法。 他们的...
.net core web api 可以和任何前端Client端技术或框架(javascript ,...
大家好,我是长风青云。今天是铁人赛第十四天。恭喜你们听到我带点磁性的声音(?) 我要滚去休息了。 ...