国产精品视频久久久久_手机看片久久_免费看的黄色大片_成人春色激情网_在线观看91精品国产入口_在线观看的日韩av_日韩电影免费_国产馆在线观看

中閥傳媒-官方網站

CSS進階:提高你前端水平的4個技巧

2017/11/3 17:22:29 技術文章

      隨著 Node.js 、react-native 等技術的不斷出現,和互聯網行業的創業的層出不窮,了解些前端知識,成為全棧攻城師,快速的產出原型,展示你的創意,對程序員,尤其是在創業的程序員來說,越來越重要,下面我們就跟隨著名國外開發者網站上的熱推文章《Leveling up in CSS》,從提升你的CSS技巧開始。 

 

 

      CSS 在剛開始學習的時候看起來非常簡單。畢竟,它僅僅就是些樣式而已,事實上是這樣嗎?

 

      但是,隨著你的不斷了解。很快,你會發現 CSS 沒你想象的那么簡單,它復雜且有深度。

 

      做好這四件事情,能讓你在大規模使用 CSS 的時候保證代碼的健壯性:使用適當的語義,模塊化,采用統一的命名規范,遵循單一功能原則。

 

使用適當的語義

 

      在 HTML 和 CSS 編程中有語義標注的概念。語義是指單詞的含義和他們間的關系。在 HTML 編程中,意味著你需要使用一個合適的標簽名字來標記。下面是一個經典的例子。

 

      <!-- bad -->  <div class=”footer”></div>  <!-- good -->  <footer></footer>  

 

      富有語義的 HTML 是非常簡單明確的。另一方面,富有語義的 CSS 則是更抽象和主觀的。編寫富有語義的 CSS 意味著在選擇類型的時候,類名要傳達出結構和功能信息。類名要很容易被理解。確保它們不要太具體、太特殊。這樣,你就可以復用它了。

 

 

      為了闡述什么是一個良好的類名,請看這個簡化了的 Medium 網站的 CSS 例子。

 

      <div class="stream">    <div class="streamItem">      <article class="postArticle">        <div class="postArticle-content">          <!-- content -->        </div>      </article>    </div>  </div>  

 

      通過這些代碼,你可以立即識別出它們的結構、功能和含義。父節點的類名是 stream ,內容是一個文章列表。它的子節點的類名是 streamItem ,內容是文章列表中的一篇具體的文章。這使我們很容易的了解到父節點和子節點之間的關系。并且,這些類可以在每一個有文章功能的頁面中使用。

 

      你可以像閱讀一本書一樣讀 HTML 和 CSS。它會給你講一個故事。通過故事你可以了解故事中的每一個角色和他們之間的關系。語義豐富的 CSS 代碼容易理解,更便于維護。

 

      若果你想進一步了解語義相關的內容,看看 《怎么富有語義的為類命名》、《CSS 命名不簡單》 和 《富有語義和容易識別(的代碼命名)》,再看 《關于 HTML 命名和前端架構》。

 

模塊化

 

      在這個充滿了組件庫(以 React 為例)的時代,模塊化就是王者。組件就是由已經解構了的接口創建的可組合的模塊。下面是一個Product Hunt(一種發布好的創業項目的網站)前端頁面。作為練習,讓我們將這個頁面分解成一系列的組件。

 

 

      每種顏色框代表一個組件,stream 節點下分為好多個 stream item 子節點。

 

      <div class="stream">    <div class="streamItem">      <!-- product info -->    </div>  </div>  

 

      大多數組件都可以分解為更小的組件。

 

 

      每一個 stream item 組件都有一個縮略圖和一個特色的產品信息。

 

      <!-- STREAM COMPONENT -->  <div class="stream">    <div class="streamItem">      <!-- POST COMPONENT -->      <div class="post">        <img src="thumbnail.png" class="postThumbnail"/>        <div class="content">          <!-- product info -->        </div>      </div>    </div>  </div>  

 

      由于 stream 組件和它的子控件是完全獨立的,你可以很容易的調整或者更換 post 組件,并且這不會對 stream 組件產生任何影響。

 

      使用組件的思想將會使你的代碼解耦。解耦的代碼越多,你的類之間的依賴就越低。這會讓你的代碼更容易修改,并且使你的代碼更長時間的工作下去而不用修改它。

 

 

組件驅動設計

 

      模塊化你的 CSS 時,首先將你的設計分解成多個組件。你可以使用紙和筆,也可以使用類似 Illustrator 或者 Sketch 這類的軟件。確定你將要如何命名這些組件,同時理清各個組件之間的關系。

 

      閱讀更多關于 CSS 組件驅動的文章,詳見《CSS 建構:可擴展和模塊化處理》、《使用 Sass 編寫模塊化的 CSS》和《模塊化你的前端代碼——編寫高可維護和條理清晰的代碼》。

 

      采用統一的命名規范

 

      目前有幾十個不同版本的 CSS 命名規范。有些人對他們選擇的命名規范極其篤定,認為他們的比別人的更好。事實上,不同的人喜歡不同的命名規范。我聽到的最好的建議是:選擇你覺得最合適的命名規范。

 

      下面簡單列舉一下常用的命名規范:

 

      Object oriented CSS OOCSS Block element modifier (BEM) Scalable and modular architecture for CSS (SMACSS) Atomic

 

      我最喜歡的命名規范是 BEM。BEM 代表塊(block)、元素(element)和修飾符(modifier)。Yandex,在俄羅斯的相當于谷歌的搜索引擎,為了解決他們 CSS 代碼庫中的縮放問題而提出了它(它指BEM)。

 

 

      BEM 是一個極其簡單——又極其嚴格——的命名規范。

 

      .block {}  .block__element {}  .block--modifier {}  

 

      塊(Blocks)代表高級別的類。元素(Elements)是塊的子模塊。修飾符(modifiers)代表不同的狀態。

 

 

      <div class="search">    <input type="search__btn search__btn--active" />  </div>  

 

      在上面的示例中, search 是塊(block),search button是它的元素(element)。如果你想要更改按鈕的狀態,我們可以為按鈕增加一個修飾符,例如 active 。

 

      關于命名規范要記住的一件事是,無論你喜歡哪種命名規范,你會經常繼承或者工作在不同標準的代碼庫上。請敞開心扉去學習新的標準,用不同的思維去思考 CSS 。

 

      你可以在《深入學習 BEM 語法》、《BEM 101》和《BEM 簡介》上看到更多關于 BEM 的信息。想要了解不同的命名規范,參見《OOCSS、ACSS、BEM、SMACSS:這些是什么?我該用哪個?》。

 

遵循單一功能原則

 

      單一功能原則規定每個模塊和類都應該有一個單一的功能,并且該功能應該由這個類完全封裝起來。

 

      在 CSS 中,單一功能原則代表每一段代碼、類和模塊只做一件事。當我們提交 CSS 文件時,這意味著每個獨立的組件(例如輪播效果和導航欄)都應該有自己的 CSS 文件。

 

      /components    |- carousel    |- |- carousel.css    |- |- carousel.partial.html    |- |- carousel.js    |- nav    |- |- nav.css    |- |- nav.partial.html    |- |- nav.js  

 

      另外一個常見的組織文件的方式是按照功能將文件分組。舉個栗子,如上面所示,所有和輪播效果組件有關的文件都被分類到了一起。采用這種方式可以讓你更容易的找到相關文件。

 

      除了對組件的樣式進行分離之外,最好利用單一功能原則對全局樣式也進行分離。

 

      /base  |- application.css  |- typography.css  |- colors.css  |- grid.css  

 

      在這個例子中,每個相關的樣式被分離到自己的樣式文件中。這樣,如果你想要修改樣式中的顏色,那么你將會很容易的找到它。

 

      無論你使用哪種方式組織文件結構,盡量在決定的時候參考單一功能原則。一旦有某個文件開始變的臃腫,那么考慮按照邏輯功能將它分成多個部分。

 

      更多有關組織文件結構和 CSS 架構的文章,詳見《Sass 審美 1:架構和組織樣式文件》和《可擴展和可維護的 CSS 架構》。

 

      當單一功能原則應用于你的每一個 CSS 類選擇器中時,這意味著每一個類選擇器都有著唯一的功能。換句話說,要根據不同關注點將樣式分離到不同的類選擇器中。下面是個經典的例子:

 

      .splash {    background: #f2f2f2;    color: #fffff;    margin: 20px;    padding: 30px;    border-radius: 4px;    position: absolute;    top: 0;    right: 0;    bottom: 0;    left: 0;  }  

 

      在上面的例子中,我們將關注點耦合了。splash 這個類不但包含了本身的樣式和邏輯,同時也包含了它的子節點的。為了解決這個問題,我們可以將這段代碼分離為兩個新的類。

 

      .splash {    position: absolute;    top: 0;    right: 0;    bottom: 0;    left: 0;  }  

 

      現在我們有 splash 和 splash content 兩個類。我們可以將 splash 作為一個一般的全屏類,它可以擁有任何子節點。所有子節點關注的屬性,都在 splash content 中,與父節點的屬性是完全解耦的。

 

簡單勝過復雜

 

      如果你問任何一個成功的前端開發工程師或者 CSS 架構師,他們會告訴你,他們從來沒有對自己的代碼完全滿意。寫好 CSS 是一個不斷迭代的過程。從簡單開始,遵循基本的 CSS 規則和樣式指南,然后不斷迭代。

精品51国产黑色丝袜高跟鞋| 久久99国产精品自在自在app| 受虐m奴xxx在线观看| 国模吧视频一区| 欧美黄色高清视频| 风间由美中文字幕在线看视频国产欧美| 亚洲欧洲黄色网| 精品国产一区二区三区四区阿崩| 亚州av中文字幕在线免费观看| 成人av网站在线观看免费| 在线丝袜欧美日韩制服| 亚洲成人va| 国产精品12345| 丝袜美腿亚洲色图| 中文字幕人妻无码系列第三区| 亚洲资源在线| 国产精品香蕉视屏| 精品三级久久| 日本韩国精品在线| 性高潮视频在线观看| 国产成都精品91一区二区三| www.色欧美| 国产午夜精品理论片a级大结局 | 久久久伊人欧美| yjizz视频网站在线播放| 久久久午夜视频| 国产精品久久久久久久久久辛辛 | 91网站最新网址| 亚洲成人一二三区| 免费在线日韩av| 三年片大全在线观看大全有哪些| 久久久久网址| 亚洲一区在线看| 日本dvd播放| 亚洲视频一区二区在线| 国产精品色综合| 亚洲欧美国产另类| 哥也色在线视频| 亚洲精品乱码久久久久久9色| 日韩极品在线| 国产视频一区二区视频| 韩国毛片一区二区三区| 青青操夜夜操| 特色特色大片在线| 成人激情自拍| 看免费黄色录像| 日韩成人在线观看| 日本在线成人| 国产精品视频在线观看| 久久精品一区二区三区资源网 | 天堂社区在线视频| 欧美日韩亚洲成人| 91欧美极品| 亚洲成人在线电影| 99精品视频一区二区| 国产 欧美 自拍| 精品国产百合女同互慰| 天天操天天干天天插| 清纯唯美亚洲综合| 亚洲精品激情| 亚洲自拍偷拍图| 99久久精品国产一区| 91久久精品国产91性色69| 欧美成人蜜桃| 国产大陆a不卡| 男人的天堂av社区在线| 国产精品一区二区三区免费| 国产精品99久久精品| 波多野在线播放| 北条麻妃国产九九精品视频| 亚洲大胆精品| 青青草原成人网| 91精品福利观看| 亚洲一区三区视频在线观看| 一区二区三区在线播| 男人的天堂久久| http://嫩草影院| 永久久久久久久| 视频一区视频二区视频| 精品国产成人av| 欧美片第一页| 国产精品乱码一区二区视频| 国产91在线播放精品91| 久久国产三级精品| 欧美日韩不卡中文字幕在线| 国产精品久久久久久中文字| 亚洲精品男同| 美女福利视频一区二区| 成人亚洲欧美一区二区三区| 福利视频网站导航| 成人xvideos免费视频| 亚洲日产国产精品| 黄色一级影院| 91视频 - 88av| 精品国产乱码久久久久久浪潮| 欧美永久精品| 日本国产在线观看| 国产精品久在线观看| 国产乱码精品一区二区三区av | 一区二区三区久久网| 国产性做久久久久久| 另类图片亚洲色图| 国产美女精品久久| 91精品国产成人| 99re在线视频这里只有精品| 国产一线二线在线观看| 男人添女人下面高潮视频| 欧美丝袜第一区| 岛国精品一区| av三级影院| 久久久国产免费| jjzz黄色片| 久久日韩精品| 日韩欧美国产午夜精品| 国产乱码精品一区二区亚洲| 亚洲 欧美 激情 另类| 高清不卡日本v二区在线| 91小视频免费看| 91精选在线| aa一级黄色片| 一本一本久久a久久精品综合小说| 国产精品99久久免费观看| 中文字幕jux大岛优香| 在线视频 日韩| 91亚洲精品一区二区| 久久综合色综合88| 电影一区二区三区| 黑人巨大精品欧美一区二区小视频| 一区二区三区在线免费观看| 欧美91视频| 国产精品美女毛片真酒店| 亚洲精品女av网站| 亚洲欧美日韩国产中文| 免费在线观看一区二区三区| 欧美日韩尤物久久| 国产综合色区在线观看| 极品在线视频| 黄页网站在线观看免费| 欧美日韩欧美| 美女的诞生在线观看高清免费完整版中文 | 老司机精品视频一区二区三区| 久久天堂电影| 亚洲精品国产精品国自| 91香蕉电影院| 欧美日韩免费观看中文| 久久亚洲国产| 成人福利一区| 一区二区三区在线资源| 在线人成动漫视频在线观看| 国产精品视频26uuu| 欧美性猛交xxxx偷拍洗澡| 久久久综合视频| 久久精品亚洲人成影院| 天天综合在线视频| 永久久久久久久| 青青草精品视频在线| 99re在线国产| 亚洲最大成人免费视频| 91在线看网站| 国产成人精品免费视频| 在线色欧美三级视频| 91九色02白丝porn| 美女国产一区二区三区| 老司机精品视频网站| 国产成a人亚洲| 日韩高清不卡一区| 日韩精品成人一区二区三区| 日韩国产欧美| 写真福利精品福利在线观看| 黄色在线播放网站| 69欧美性猛交| 日韩中文字幕免费在线观看| 麻豆成人在线视频| 网站免费在线观看| 爱福利视频一区二区| 一区二区三区av| 亚洲影院高清在线| 精品国产sm最大网站免费看| 久久美女艺术照精彩视频福利播放| 精品av导航| 2021中文字幕在线| jizz欧美大全| 全国男人的天堂天堂网| 草久视频在线观看| 国产亚洲无码精品| 久久性爱视频网站| www.精品在线| 亚洲人一区二区| 久久99国产精品一区| 成熟了的熟妇毛茸茸| 精品乱码一区| 蜜桃av色综合| 91精品久久久久久久久久久| 开心色怡人综合网站| 91九色国产视频| 午夜精品久久久久久久99热 | 免费av片风间由美在线| 国产成+人+亚洲+欧美+综合| 永久免费在线| 香蕉视频在线免费看|