成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

「翻譯」逐步替換Sass

explorer_ddf / 657人閱讀

摘要:本文來自心譚博客譯文逐步替換,最新文章請(qǐng)見導(dǎo)航頁,歡迎交流翻譯說明這是一篇介紹現(xiàn)代核心特性的文章,并且借助進(jìn)行橫向?qū)Ρ?,充分體現(xiàn)了作為一門設(shè)計(jì)語言的快速發(fā)展以及新特性為我們開發(fā)者帶來的強(qiáng)大生產(chǎn)力。

本文來自心譚博客·「譯文」逐步替換Sass,最新文章請(qǐng)見導(dǎo)航頁,歡迎交流??ヽ(°▽°)ノ?
翻譯說明

這是一篇介紹現(xiàn)代 css 核心特性的文章,并且借助 sass 進(jìn)行橫向?qū)Ρ龋浞煮w現(xiàn)了 css 作為一門設(shè)計(jì)語言的快速發(fā)展以及新特性為我們開發(fā)者帶來的強(qiáng)大生產(chǎn)力。

第一次嘗試翻譯技術(shù)文,為了讓文章更通俗易懂,很多地方結(jié)合了文章本意和自己的說話風(fēng)格。另外,時(shí)間有限水平有限,難免有些失誤或者翻譯不恰當(dāng)?shù)牡胤?,歡迎指出討論。

英文原文地址:https://cathydutton.co.uk/posts/why-i-stopped-using-sass/

正文開始

我每年都要重新搭建和設(shè)計(jì)我的網(wǎng)站,這是一個(gè)非常不錯(cuò)的方式去跟進(jìn) HTML/CSS 的最新進(jìn)展、開發(fā)模式和網(wǎng)站生成器。在上個(gè)月,我發(fā)布了新版本:從 Jekyll 和 GithubPages 遷移到 Eleventy 和 Netlify。

一開始,我并沒有移除代碼中所有的 sass 代碼。這本不是我計(jì)劃中的事情,但隨著我不斷查看 sass 代碼,我一直在思考:它們是否給網(wǎng)站帶來了價(jià)值,還是僅僅增加了復(fù)雜度和依賴性(特指對(duì):scss)?隨著這年 css 的發(fā)展,曾經(jīng)讓我使用 sass 的原因似乎不那么重要了。

其中一個(gè)例子就是我已經(jīng)移除了媒體查詢。當(dāng)我了解到 CSS 的一些新的特性,那些針對(duì)特定屏幕大小的代碼(媒體查詢)沒有必要,因此被移除了。

Sass 解決了什么問題?

大概 5、6 年前,我第一次了解到 sass 的時(shí)候,我是有些換衣的。隨著我搭建越來越多的響應(yīng)式 web 應(yīng)用,我才意識(shí)到借助 sass 的 ?functions? 和 ?mixins? 可以大大提高代碼復(fù)用。顯而易見的是,隨著設(shè)備、視圖窗口和主題等場(chǎng)景的變化,使用(sass 的)變量讓代碼遷移的成本更低。

下面是我用 sass 做的事情:

布局

變量

Typography

1) 布局

布局一直是 css 中讓人困惑的地方。而響應(yīng)式布局正是我最初決定使用 Sass 去創(chuàng)建 css 布局的重要原因。

使用 sass

我一直記得我第一次嘗試用 css 創(chuàng)建一個(gè)響應(yīng)式網(wǎng)格布局的時(shí)候,那要為每列創(chuàng)建一個(gè)對(duì)應(yīng)的類名,然后再用語義化不強(qiáng)的類名(比如 ?col-span-1? 和 ?col-span-4?)來標(biāo)記它。

.col-span-3 {
  float: left;
  width: 24%;
  margin-left: 1%;
}

.col-span-4 {
  float: left;
  width: 32.3%;
  margin-left: 1%;
}

.col-span-5 {
  float: left;
  width: 40.6%;
  margin-left: 1%;
}

借助 sass 的 ?mixin? 和變量,能夠不再編寫像上面那樣的類名。并且能夠通過改變 ?$gridColumns? 變量,來創(chuàng)造更靈活的布局。

下面是我寫的第一個(gè)基于 ?mixin? 的網(wǎng)格布局:

@mixin grid($colSpan, $gridColumns: 12, $margin: 1%) {
  $unitWidth: $gridColumns / $colSpan;
  float: left;
  width: (100 - $unitWidth * $margin) / $unitWidth;
  margin: 0 $margin/2;
}

引入方法如下:

.sidebar {
  @include grid(3);
}

.main-content {
  @include grid(9);
}

@media only screen and (max-width: 480px) {
  .sidebar {
    @include grid(12);
  }

  .main-content {
    @include grid(12);
  }
}
CSS 網(wǎng)格布局

通過 css 的 ?grid? 的介紹,我們不再需要用語義化不強(qiáng)的類名或者 sass 或者其他預(yù)處理器,來完成網(wǎng)格布局這項(xiàng)功能。Rachel Andrew 說這種方法是最好的:

你不再需要一種工具來幫助你創(chuàng)建網(wǎng)格布局,因?yàn)槟悻F(xiàn)在就擁有它。

下面的的代碼基于內(nèi)容的寬度范圍,創(chuàng)建了一個(gè)響應(yīng)式布局,并且不再需要預(yù)設(shè)和計(jì)算設(shè)備的大小。

.project {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(12em, 1fr));
  grid-gap: 1em;
}

從 sass 創(chuàng)建網(wǎng)格布局轉(zhuǎn)變?yōu)?css 原生網(wǎng)格布局,是一個(gè)“無痛”體驗(yàn)。它不僅僅能夠減少對(duì) sass 的依賴,還可以讓我編寫更靈活的代碼,激發(fā)更多的設(shè)計(jì)思路以及不再使用媒體查詢?cè)O(shè)計(jì)網(wǎng)站。

但是最明顯的不足是瀏覽器的兼容性。Grid 是目前只在最新瀏覽器中被支持,包括 IE11、IE10。對(duì) ?auto-fill? 和 ?auto-fit? 屬性的支持更少,但可以通過查詢規(guī)范支持來提前規(guī)避。

2) 變量

變量就是一個(gè)可能變化的值,我一直不知道 css 中有這個(gè)功能。今天我的大多數(shù)項(xiàng)目都遵循 ?ITCSS methodology?,并且創(chuàng)建一個(gè)配置文件專門用來存放變量定義。通常,我會(huì)為字體樣式、顏色和媒體查詢?cè)O(shè)置變量。

之前 sass 的做法:

/* COLORS */
$colors: (
  "black": #2a2a2a,
  "white": #fff,
  "grey-light": #ccc7c3,
  "grey-dark": #2a2a2a,
  "accent": #ffa600,
  "off-white": #f3f3f3,
  "sky-blue": #ccf2ff
);

/* BREAKPOINTS */
$breakpoints: (
  "break-mobile": 290px,
  "break-phablet": 480px,
  "break-tablet": 768px,
  "break-desktop": 1020px,
  "break-wide": 1280px
);

/* TYPOGRAPHY */
$font-stack: (
  decorative: #{"oswald",
  Helvetica,
  sans-serif},
  general: #{"Helvetica Neue",
  Helvetica,
  Arial,
  sans-serif}
);

使用變量或者映射讓我的網(wǎng)站能夠快速和簡(jiǎn)單地應(yīng)對(duì)大的改動(dòng)。它也預(yù)防了在大型代碼項(xiàng)目中過分堆積復(fù)雜的外形、顏色變量,特別是 hover 懸浮的動(dòng)畫、引用、邊框等等。

例如下面場(chǎng)景:

.button {
  background-color: #4caf50; /* Green */
}

.button:hover {
  background-color: #3f8c42; /* Dark Green */
}

.button:active {
  background-color: #266528; /* Darker Green */
}

能夠被 sass 的變量和顏色相關(guān)的內(nèi)置函數(shù)重寫:

$button-colour: #4caf50;

.button {
  background-color: $button-colour;
}

.button:hover {
  background-color: darken($button-colour, 20%);
}

.button:active {
  background-color: darken($button-colour, 50%);
}
到底有什么不同?

css 自帶的變量能做的事情更多,不僅僅是替換靜態(tài)字面量,它可以實(shí)時(shí)動(dòng)態(tài)計(jì)算(而不僅僅是編譯構(gòu)建的時(shí)候靜態(tài)替換)。它允許被 js 修改,并且不需要在代碼外面再包裹一層 ?mixins? 和 ?funtions?。

:root {
  --button-color: #4caf50;
}

.button {
  background-color: var(--button-color);
}

header .button {
  --button-color: #000000;
  background-color: var(--button-color);
}

當(dāng)然,sass 中對(duì)顏色的一些內(nèi)置函數(shù)在 css 中也可以使用:

:root {
  --button-color: #4caf50;
}

.button:hover {
  color: color-mod(var(--button-color) tint(50%));
}

不幸的是,這(顏色相關(guān)內(nèi)置函數(shù))一直在處在提案階段。我決定還是手動(dòng)定義顏色變量來替換它(提案中的方案)。

.button {
  background: var(--colour-dark);
}

.button:hover {
  background: var(--colour-bright);
  text-decoration: underline;
}

如果你執(zhí)意使用他們,那么這個(gè)包含了很多 css 顏色函數(shù)功能的 ?PostCSS? 項(xiàng)目能夠幫助到你。

3) 網(wǎng)頁排版

最后,對(duì)于排版,在之前的代碼中,我是用 sass 去創(chuàng)建響應(yīng)式排版和布局。下面展示的 ?mixin? 的用法讓我能輕易地處理不同大小的屏幕與設(shè)備:

@mixin typography($size) {
  font-size: $size;

  @include mq(break-desktop) {
    font-size: $size * 1.2;
  }
}

現(xiàn)在,我用原生的 css 的功能來進(jìn)行這些計(jì)算:

:root {
  --font-size: calc(18px + 0.25vw);
}

body {
  font-size: var(--font-size);
}
展望

CSS 正在朝向更具內(nèi)涵的規(guī)范發(fā)展,在 css 的 ?grid? 特性中,有 ?flexbox? 以及 ?min-content?、?max-content?、?fit-content? 這些屬性,而在 Css Grid Layout Module Level2 中也準(zhǔn)備加入的新布局:?Subgrid?。

這些新的特性都讓原生的 css 更有吸引力!

更多文章

?Star Github / Read Blog?

《前端系列文章》

JavaScript 基礎(chǔ)知識(shí)梳理(下)

前端面試中常考的源碼實(shí)現(xiàn)

ES6 篇

ES6 重難點(diǎn)整理

談?wù)?promise/async/await 的執(zhí)行順序與 V8 引擎的 BUG

HTML5 篇

websocket 學(xué)習(xí)和群聊實(shí)現(xiàn)

ServiceWorker 離線緩存實(shí)戰(zhàn)

原生拖拽事件

《設(shè)計(jì)模式手冊(cè)》

單例模式

訂閱-發(fā)布模式

橋接模式

備忘錄模式

模板模式

抽象工廠模式

......

《Webpack4系列》

(十二):處理第三方 JavaScript 庫

(十三):自動(dòng)生成 HTML 文件

(十四):Clean Plugin and Watch Mode

(十五):開發(fā)模式與 webpack-dev-server

(十六):開發(fā)模式和生產(chǎn)模式·實(shí)戰(zhàn)

?Star Github / Read Blog?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/114845.html

相關(guān)文章

  • 細(xì)談sass和less中的變量及其作用域

    摘要:如果存在一個(gè)同名的全局變量,這個(gè)全局變量也不會(huì)被重寫,除非同名的局部變量被聲明時(shí)使用關(guān)鍵字。 博客原文地址:Claiyre的個(gè)人博客 https://claiyre.github.io/博客園地址:http://www.cnblogs.com/nuannuan7362/如需轉(zhuǎn)載,請(qǐng)?jiān)谖恼麻_頭注明原文地址------------------------------------------...

    wslongchen 評(píng)論0 收藏0
  • 翻譯 Meteor React 制作 Todos - 02 - 組件

    摘要:用定義視圖組件在中,視圖組件是被使用定義的。你的組件可以有任何你想要的方法。組件可以接收來自于父組件通過屬性傳過來的數(shù)據(jù)。因?yàn)楸窘坛虒W⒂诤?,所以你可以拷貝下面的代碼到文件中。嘿嘿,來添加上吧只要把改名成就好了 在 React 組件中定義視圖 在開始編寫React視圖庫之前,要先添加react包,這個(gè)包囊括了你在Meteor應(yīng)用中開始運(yùn)行React所需要所有東西。這個(gè)React庫自己可...

    wuyangnju 評(píng)論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶體驗(yàn)設(shè)計(jì),簡(jiǎn)稱,騰訊設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站騰訊用戶研究與體驗(yàn)設(shè)計(jì)部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無限可能凹凸實(shí)驗(yàn)室京東用戶體驗(yàn)設(shè)計(jì)部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    zxhaaa 評(píng)論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶體驗(yàn)設(shè)計(jì),簡(jiǎn)稱,騰訊設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站騰訊用戶研究與體驗(yàn)設(shè)計(jì)部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無限可能凹凸實(shí)驗(yàn)室京東用戶體驗(yàn)設(shè)計(jì)部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    JouyPub 評(píng)論0 收藏0
  • 前端資源分享-只為更好前端

    摘要:一團(tuán)隊(duì)組織網(wǎng)站說明騰訊團(tuán)隊(duì)騰訊前端團(tuán)隊(duì),代表作品,致力于前端技術(shù)的研究騰訊社交用戶體驗(yàn)設(shè)計(jì),簡(jiǎn)稱,騰訊設(shè)計(jì)團(tuán)隊(duì)網(wǎng)站騰訊用戶研究與體驗(yàn)設(shè)計(jì)部百度前端研發(fā)部出品淘寶前端團(tuán)隊(duì)用技術(shù)為體驗(yàn)提供無限可能凹凸實(shí)驗(yàn)室京東用戶體驗(yàn)設(shè)計(jì)部出品奇舞團(tuán)奇虎旗下前 一、團(tuán)隊(duì)組織 網(wǎng)站 說明 騰訊 AlloyTeam 團(tuán)隊(duì) 騰訊Web前端團(tuán)隊(duì),代表作品WebQQ,致力于前端技術(shù)的研究 ISUX 騰...

    vslam 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<