扩展/继承
继承对于了解css 的同学来说一点都不陌生,先来看一张图
在Sass 中也具有继承一说,也就是继承类中的样式代码块,在Sass中时通过关键词“@extend”来
继承已经存在的类样式块,从而实现代码的继承。
//SCSS
.btn{
border:1px solid #ccc;
padding:6px 10px;
font-size:14px;
}
.btn-primarg{
background-color:#f36;
color:#fff;
@extend .btn;
}
.btn-second{
background-color:organge;
color:#fff;
@extend .btn;
}
编译出来之后:
//css
.btn, .btn-primary, .btn-second {
border:1px solid #ccc;
padding:6px 10px;
font-size:14px;
}
.btn-primary{
background-color:#f36;
color:#fff;
}
.btn-second{
background-color:orange;
color:#fff;
}
在 Sass 中的继承,可以继承类样式块中所有样式代码,而且编译出来的 CSS 会将选择器合并在一起,形成组合选择器:
.btn, .btn-primary, .btn-second {
border: 1px solid #ccc;
padding: 6px 10px;
font-size: 14px;
}
占位符%placeholder
Sass中的占位符%placeholder 功能是一个很强大,很实用的一个功能,可以取代以前的css中的基类造成的
代码冗余的情形,因为%placeholder 声明的代码,如果不被@extend 调用的话,不会产生任何代码。
%mt5{
margin-top:5px;
}
%pt5{
padding-top:5px;
}
.btn{
@extend %mt5;
@extend %pt5;
}
.block{
@extend %mt5;
span{
@extend %pt5;
}
}
编译出来的css
//css
.btn, .block{
margin-top:5px;
}
.btn, .block span{
padding-top:5px;
}
通过 @extend 调用的占位符,编译出来的代码会将相同的代码合并在一起。这也是我们希望看到的效果,也让你的代码变得更为干净。
混合
混合宏vs继承vs占位符
a Sass中的混合宏使用
//SCSS中混合宏使用
@mixin mt($var){
margin-top:$var;
}
.block{
@include mt(5px);
span{
display:block;
@include mt(5px);
}
}
.header{
color:orange;
@include mt(5px);
span{
dispay:block;
@include mt(5px);
}
}
编译结果:
.block span {
display: block;
}
.header {
color: orange;
}
.header span {
display: block;
}
.block, .block span, .header, .header span {
margin-top: 5px;
}
建议:如果你的代码块中涉及到变量,建议使用混合宏来创建相同的代码块。
b)Sass中继承
同样的,将上面代码中的混合宏,使用类名来表示,然后通过继承来调用。
.mt{
margin-top:5px;
}
.block {
@extend .mt;
span{
display:block;
@extend .mt;
}
}
.header{
color:orange;
@extend .mt;
}
编译结果:
.block span {
display: block;
}
.header {
color: orange;
}
.header span {
display: block;
}
.block, .block span, .header, .header span {
margin-top: 5px;
}
建议:如果你的代码块不需要专任何变量参数,而且有一个基类已在文件中存在,那么建议使用Sass的继承。
c)占位符
最后来看占位符,将上面的代码中的基类.mt 换成Sass的占位符格式
//SCSS中占位符的使用
%mt{
margin-top:5px;
}
.block{
@extend %mt;
span{
display:block;
@extend %mt;
}
}
.header{
color:orange;
@extend %mt;
span{
display:block;
@extend %mt;
}
}
编译结果:
.block span {
display: block;
}
.header {
color: orange;
}
.header span {
display: block;
}
编译出来的 CSS 代码和使用继承基本上是相同,只是不会在代码中生成占位符 mt 的选择器。那么占位符和继承的主要区别的,“占位符是独立定义,
不调用的时候是不会在 CSS 中产生任何代码;继承是首先有一个基类存在,不管调用与不调用,基类的样式都将会出现在编译出来的 CSS 代码中。”
差值#{}
使用css 预处理器语言的一个主要原因是想使用Sass 获得一个更好的结构体系,比如说你想写更干净的,搞笑的和面向对象的
css. Sass 中的差值(Interpolation)就是重要的一部分,让我们看一下下面的例子。
$properties:(margin ,padding);
@mixin set-value($side,$value){
@each $prop in $properties{
#{$prop}-#{$side}:$value;
}
}
.login-box{
@include set-value(top,14px);
}
代码编译成css
.login-box{
margin-top:14px;
padding-top:14px;
}
当你想设置属性值的时候你可以使用字符串插入进来,另一个使用的用法是构建一个选择器。
@mixin generate-sizes($class,$small,$medium,$big)

公眾號網頁更新緩存,這玩意兒,說簡單也簡單,說複雜也夠你喝一壺的。你辛辛苦苦更新了公眾號文章,結果用戶打開還是老版本,這滋味,誰受得了?這篇文章,咱就來扒一扒這背後的彎彎繞繞,以及如何優雅地解決這個問題。讀完之後,你就能輕鬆應對各種緩存難題,讓你的用戶始終體驗到最新鮮的內容。先說點基礎的。網頁緩存,說白了就是瀏覽器或者服務器為了提高訪問速度,把一些靜態資源(比如圖片、CSS、JS)或者頁面內容存儲起來。下次訪問時,直接從緩存裡取,不用再重新下載,速度自然快。但這玩意兒,也是個雙刃劍。新版本上線,

本文討論了使用HTML5表單驗證屬性,例如必需的,圖案,最小,最大和長度限制,以直接在瀏覽器中驗證用戶輸入。

本文展示了使用CSS為網頁中添加有效的PNG邊框。 它認為,與JavaScript或庫相比,CSS提供了出色的性能,詳細介紹瞭如何調整邊界寬度,樣式和顏色以獲得微妙或突出的效果

本文討論了html< datalist>元素,通過提供自動完整建議,改善用戶體驗並減少錯誤來增強表格。Character計數:159

本文討論了HTML< Progress>元素,其目的,樣式和與< meter>元素。主要重點是使用< progress>為了完成任務和LT;儀表>對於stati

本文解釋了HTML5< time>語義日期/時間表示的元素。 它強調了DateTime屬性對機器可讀性(ISO 8601格式)的重要性,並在人類可讀文本旁邊,增強Accessibilit

本文討論了HTML< meter>元素,用於在一個範圍內顯示標量或分數值及其在Web開發中的常見應用。它區分了< meter>從< progress>和前


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),