成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

改善CSS的10種優(yōu)秀做法

開(kāi)發(fā) 前端
CSS可能看起來(lái)是一門相當(dāng)簡(jiǎn)單的語(yǔ)言,在這門語(yǔ)言上很難出錯(cuò)。你只需添加你的規(guī)則來(lái)設(shè)計(jì)你的網(wǎng)站就完成了,對(duì)于只需要幾個(gè)CSS文件的小型站點(diǎn),可能是這樣的。但在大型應(yīng)用程序中,樣式可能會(huì)迅速失控。你如何讓他們處于可控狀態(tài)?

 CSS可能看起來(lái)是一門相當(dāng)簡(jiǎn)單的語(yǔ)言,在這門語(yǔ)言上很難出錯(cuò)。你只需添加你的規(guī)則來(lái)設(shè)計(jì)你的網(wǎng)站就完成了,對(duì)于只需要幾個(gè)CSS文件的小型站點(diǎn),可能是這樣的。但在大型應(yīng)用程序中,樣式可能會(huì)迅速失控。你如何讓他們處于可控狀態(tài)?

[[326391]]

事實(shí)是,就像其他任何語(yǔ)言一樣,CSS可能會(huì)影響或破壞你的設(shè)計(jì)。這是CSS的10條技巧——優(yōu)秀實(shí)踐,可以幫助你從樣式中獲得很大的收益。

1.你真的需要一個(gè)框架嗎?

首先,確定你是否真的需要使用CSS框架。現(xiàn)在,有許多輕量級(jí)且健壯的替代框架。通常,你不會(huì)使用框架中的每個(gè)選擇器,因此你的軟件包將包含無(wú)效代碼。

如果你只在按鈕上使用樣式,那就把它們外包到自己的CSS文件中去,其他的就不用管了。另外,你可以使用DevTools中的代碼覆蓋率來(lái)識(shí)別未使用的CSS規(guī)則。

 

改善CSS的10種最佳做法

 

要打開(kāi)它,請(qǐng)?jiān)?ldquo;工具”面板中搜索Coverage,您可以通過(guò)單擊 Ctrl + Shift + P 打開(kāi)“工具”面板。

 

改善CSS的10種最佳做法

 

打開(kāi)后,單擊重新加載圖標(biāo)開(kāi)始錄制。紅色顯示的所有內(nèi)容均未使用。

你可以看到,在上面的例子中,它說(shuō)98%的CSS沒(méi)有被應(yīng)用。注意,實(shí)際上并不是這樣的——有些CSS樣式是在用戶與網(wǎng)站交互后才應(yīng)用的。移動(dòng)設(shè)備的樣式也被標(biāo)記為未使用的字節(jié)。因此,在刪除所有內(nèi)容之前,請(qǐng)確認(rèn)是否確實(shí)沒(méi)有在任何地方使用過(guò)。

2.首選使用CSS方法論

考慮為你的項(xiàng)目使用CSS方法論。CSS方法論是用來(lái)在你的CSS文件中創(chuàng)建一致性,它們有助于縮放和維護(hù)你的項(xiàng)目。以下是我可以推薦的一些流行的CSS方法論。

/ BEM /

BEM(塊,元素,修飾符)是比較流行的CSS方法論之一。它是命名約定的集合,可用于輕松制作可重復(fù)使用的組件。命名約定遵循以下模式:

 

  1. .block { ... } 
  2. .block__element { ... } 
  3. .block--modifier { ... } 
  • block——塊,代表一個(gè)組件。它們是獨(dú)立的實(shí)體,對(duì)自己有意義。
  • block__element——這些是 .block 的一部分。它們沒(méi)有獨(dú)立的含義,必須綁定到一個(gè)塊上。
  • block--modifier——這些用作塊或元素上的標(biāo)志。我們可以使用它們來(lái)更改元素的外觀,行為或狀態(tài)。例如,要使用隱藏標(biāo)志,我們可以說(shuō) .block--hidden。

/ ITCSS /

Inverted Triangle CSS 的縮寫,意思是“倒三角CSS”,通過(guò)將不同的圖層引入不同的特性來(lái)幫助您更好地組織文件。越深入,越具體。

 

改善CSS的10種最佳做法

 

/ OOCSS /

Object-oriented CSS,或者OOCSS,有兩個(gè)主要原則。

1.分離結(jié)構(gòu)和表皮

這意味著你要與結(jié)構(gòu)代碼分開(kāi)定義視覺(jué)效果。什么意思?

 

  1. /* 而不是 */ 
  2. .box { 
  3.     width: 250px; 
  4.     height: 250px; 
  5.     padding: 10px; 
  6.     border: 1px solid #CCC; 
  7.     box-shadow: 1px 2px 5px #CCC; 
  8.     border-radius: 5px; 
  9.  
  10. /* 這樣 */ 
  11. .box { 
  12.     width: 250px; 
  13.     height: 250px; 
  14.     padding: 10px; 
  15.  
  16. .elevated { 
  17.     border: 1px solid #CCC; 
  18.     box-shadow: 1px 2px 5px #CCC; 
  19.     border-radius: 5px; 

2.分隔容器和內(nèi)容

這意味著你不希望任何元素依賴于它的位置。相同的元素?zé)o論在頁(yè)面上的什么位置,都應(yīng)看起來(lái)相同。

 

  1. /* 而不是 */ 
  2. .main span.breadcumb { ... } 
  3.  
  4. /* 這樣 */ 
  5. .breadcrumb { ... } 

3.設(shè)置預(yù)處理器

設(shè)置預(yù)處理器可以使你受益匪淺。預(yù)處理器是一種工具,可讓你使用CSS中不存在的高級(jí)功能,這些可能是循環(huán)變量甚至函數(shù)之類的東西。

有很多預(yù)處理器,可能最著名的三個(gè)是Sass,Less和Stylus。我建議使用Sass,因?yàn)樗纳鐓^(qū)非常繁榮,并且可以在網(wǎng)絡(luò)上找到大量的文檔。

那么,預(yù)處理器如何為你提供幫助?

/ 更好地組織你的樣式 /

他們具有將你的文件分解為較小的可重用文件的能力,這些文件可以相互導(dǎo)入,或者以后單獨(dú)導(dǎo)入到你的應(yīng)用程序中。

 

  1. // 將不同的模塊導(dǎo)入到一個(gè)SCSS文件中 
  2. @import 'settings'
  3. @import 'tools'
  4. @import 'generic'
  5. @import 'elements'
  6. @import 'objects'
  7. @import 'components'
  8. @import 'trumps'

/ 嵌套你的選擇器 /

增強(qiáng)可讀性的另一種好方法是嵌套選擇器,這是CSS缺少的一個(gè)簡(jiǎn)單而強(qiáng)大的功能。

 

  1. .wrapper { 
  2.   .sidebar { 
  3.     &.collapsed { 
  4.       display: none; 
  5.     } 
  6.  
  7.     .list { 
  8.       .list-item { 
  9.         ... 
  10.  
  11.         &.list-item--active { 
  12.           ... 
  13.         } 
  14.       } 
  15.     } 
  16.   } 

層次化的結(jié)構(gòu)使得不同元素之間的聯(lián)系更加直觀。

/ 自動(dòng)為你的規(guī)則添加前綴 /

CSS中有一些非標(biāo)準(zhǔn)或?qū)嶒?yàn)性功能的前綴,不同的瀏覽器為其使用不同的前綴,例如:

  • webkit-:適用于基于WebKit的瀏覽器,例如Chrome,Safari或Opera的較新版本。
  • moz-:Firefox
  • o-:更舊的Opera版本
  • ms-:IE 和 Edge

為了支持所有主流瀏覽器,我們必須多次定義某些屬性。

 

  1. .gradient { 
  2.   background: rgb(30,87,153); 
  3.   background: -moz-linear-gradient(top, rgba(30,87,153,1) 0%, rgba(41,137,216,1) 50%, rgba(32,124,202,1) 51%, rgba(125,185,232,1) 100%); 
  4.   background: -webkit-linear-gradient(top, rgba(30,87,153,1) 0%, rgba(41,137,216,1) 50%, rgba(32,124,202,1) 51%, rgba(125,185,232,1) 100%); 
  5.   background: linear-gradient(to bottom, rgba(30,87,153,1) 0%, rgba(41,137,216,1) 50%, rgba(32,124,202,1) 51%, rgba(125,185,232,1) 100%); 
  6.   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1e5799', endColorstr='#7db9e8', GradientType=0); 

預(yù)處理程序可以幫助我們使用混合函數(shù)來(lái)解決這個(gè)問(wèn)題,混合函數(shù)可以代替硬編碼的值使用。

 

  1. @mixin gradient() { 
  2.   background: rgb(30,87,153); 
  3.   background: -moz-linear-gradient(top, rgba(30,87,153,1) 0%, rgba(41,137,216,1) 50%, rgba(32,124,202,1) 51%, rgba(125,185,232,1) 100%); 
  4.   background: -webkit-linear-gradient(top, rgba(30,87,153,1) 0%, rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%, rgba(125,185,232,1) 100%); 
  5.   background: linear-gradient(to bottom, rgba(30,87,153,1) 0%, rgba(41,137,216,1) 50%,rgba(32,124,202,1) 51%, rgba(125,185,232,1) 100%); 
  6.   filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#1e5799', endColorstr='#7db9e8', GradientType=0); 
  7.  
  8. .gradient { 
  9.   @include gradient(); 

不必一遍又一遍地寫出相同的內(nèi)容,而只需在需要時(shí)包含 mixin。

/ 使用后處理器 /

更好的選擇是后處理器。一旦CSS由預(yù)處理器生成,則后處理器可以運(yùn)行其他優(yōu)化步驟。比較受歡迎的后處理器之一是PostCSS。

可以使用PostCSS自動(dòng)為CSS規(guī)則添加前綴,因此不必?fù)?dān)心會(huì)遺漏主要的瀏覽器。

另一個(gè)很棒的后處理器是autoprefixer。使用autoprefixer,當(dāng)你想要支持最新的四個(gè)版本時(shí),無(wú)需在CSS文件中寫入任何供應(yīng)商前綴就可以完成所有工作!

 

  1. const autoprefixer = require('autoprefixer')({ 
  2.   browsers: [ 
  3.     'last 4 versions'
  4.     'not ie < 9' 
  5.   ] 
  6. }); 

/ 使用配置進(jìn)行一致的設(shè)計(jì) /

除了 mixins 之外,你還可以選擇使用變量。與燒結(jié)機(jī)配合使用,你可以執(zhí)行設(shè)計(jì)規(guī)則。與linter配合使用,你可以執(zhí)行設(shè)計(jì)規(guī)則。

 

  1. // Font definitions 
  2. $font-12: 12px; 
  3. $font-21: 21px; 
  4.  
  5. // Color definitions 
  6. $color-white: #FAFAFA; 
  7. $color-black: #212121; 

4.使用標(biāo)記代替CSS

現(xiàn)在,讓我們繼續(xù)討論實(shí)際的CSS。這經(jīng)常被忽略,通常,你可以通過(guò)簡(jiǎn)單地使用正確的HTML元素來(lái)減小CSS包的大小。假設(shè)你的標(biāo)題包含以下規(guī)則:

 

  1. span.heading { 
  2.   display: block; 
  3.   font-size: 1.2em; 
  4.   margin-top: 1em; 
  5.   margin-bottom: 1em;  

你正在使用一個(gè) span 元素作為標(biāo)題,你可以覆蓋默認(rèn)的顯示、間距或字體樣式。可以通過(guò)使用 h1,h2 或 h3 來(lái)避免這種情況。默認(rèn)情況下,它們具有你要與其他元素一起實(shí)現(xiàn)的樣式,你可以立即擺脫四個(gè)不必要的規(guī)則,而且也更符合語(yǔ)義。

5.使用短屬性

為了進(jìn)一步減少規(guī)則數(shù)量,請(qǐng)始終嘗試使用簡(jiǎn)寫屬性。對(duì)于上面的示例,我們可以說(shuō):

 

  1. .heading { 
  2.   margin: 1em 0; 

對(duì)于其他屬性,例如 padding,border 或 background 也是如此。

 

改善CSS的10種最佳做法

 

6.減少冗余

這與上一點(diǎn)緊密相關(guān)。有時(shí)很難發(fā)現(xiàn)冗余,尤其是當(dāng)重復(fù)規(guī)則在兩個(gè)選擇器中沒(méi)有遵循相同的順序時(shí)。但如果你的class只在一兩個(gè)規(guī)則上有差異,最好把這些規(guī)則外包出去,作為一個(gè)額外的class使用。而不是這樣的。

  1. <style> 
  2. .warning { 
  3.   width: 100%; 
  4.   height: 50px; 
  5.   background: yellow; 
  6.   border-radius: 5px; 
  7.  
  8. .elevated-warning { 
  9.   width: 100%; 
  10.   height: 50px; 
  11.   font-size: 150%; 
  12.   background: yellow; 
  13.   box-shadow: 1px 2px 5px #CCC; 
  14.   border-radius: 5px; 
  15. </style> 
  16.  
  17. <div class="warning">⚠️</div> 
  18. <div class="elevated-warning"></div> 

 

嘗試使用類似的方法:

  1. <style> 
  2. .warning { 
  3.   width: 100%; 
  4.   height: 50px; 
  5.   background: yellow; 
  6.   border-radius: 5px; 
  7.  
  8. .warning--elevated { 
  9.   font-size: 150%; 
  10.   box-shadow: 1px 2px 5px #CCC; 
  11. </style> 
  12.  
  13. <div class="warning">⚠️</div> 
  14. <div class="warning warning--elevated"></div> 

 

7.避免使用復(fù)雜的選擇器

使用復(fù)雜的選擇器有兩個(gè)主要問(wèn)題。首先,提高的權(quán)重不僅會(huì)使以后更難重寫現(xiàn)有規(guī)則,而且會(huì)增加瀏覽器匹配選擇器的時(shí)間。

/ 匹配選擇器 /

當(dāng)瀏覽器試圖解釋選擇器并確定匹配的元素時(shí),它們從右到左。就性能而言,這比其他方法要快。讓我們以下面的選擇器為例。

 

  1. .deeply .nested .selector span { 
  2.   ... 

你的瀏覽器將首先從 span 開(kāi)始。它將會(huì)匹配所有的 span標(biāo)簽,然后轉(zhuǎn)到下一個(gè)。它將過(guò)濾掉 .selector內(nèi)的 span,以此類推。

/ 理解選擇器 /

機(jī)器不僅解析困難,而且人類也難以理解。以以下為例:

 

  1. [type="checkbox"]:checked + [class$="-confirmation"]::after { 
  2.   ... 

你認(rèn)為上面的規(guī)則什么時(shí)候可以應(yīng)用?這個(gè)可以通過(guò)制作一個(gè)自定義類,用JavaScript進(jìn)行切換來(lái)簡(jiǎn)化。

8.不要?jiǎng)h除輪廓(Outline)

這是開(kāi)發(fā)人員在編寫CSS時(shí)最常犯的錯(cuò)誤之一。雖然你可能認(rèn)為刪除輪廓?jiǎng)?chuàng)建的高亮顯示并沒(méi)有什么不妥,但事實(shí)上,你正在使網(wǎng)站無(wú)法訪問(wèn)。通常的做法是在你的CSS中添加這個(gè)規(guī)則作為重設(shè)。

 

  1. :focus { 
  2.   outline: none; 

不過(guò),這樣一來(lái),只有鍵盤導(dǎo)航的用戶就不知道他們?cè)谀愕木W(wǎng)站上關(guān)注什么了。

 

改善CSS的10種最佳做法

 

如果默認(rèn)樣式對(duì)您的品牌不利,請(qǐng)創(chuàng)建自定義輪廓,只要確保在聚焦元素方面有某種指示即可。

9.移動(dòng)優(yōu)先

當(dāng)您必須處理媒體查詢時(shí),請(qǐng)始終使用移動(dòng)優(yōu)先。以移動(dòng)設(shè)備為先的方法意味著您首先要開(kāi)始為小屏幕設(shè)備編寫CSS并從那里開(kāi)始構(gòu)建。這也稱為漸進(jìn)增強(qiáng)。

這將確保你大部分時(shí)間里添加額外的規(guī)則來(lái)滿足大屏幕設(shè)備的需求,而不是重寫現(xiàn)有的CSS規(guī)則。這可以減少你最終的規(guī)則數(shù)量。

如何判斷你是否使用了移動(dòng)優(yōu)先?如果你的媒體查詢使用的是 min-width,那么你就走對(duì)了。

 

  1. /* 移動(dòng)優(yōu)先的媒體查詢,高于600像素的所有內(nèi)容都會(huì)獲得以下樣式 */ 
  2. @media (min-width: 600px) { 
  3.   /* your CSS rules */ 
  4.  
  5. /* 非移動(dòng)優(yōu)先的媒體查詢,600px以下的都會(huì)得到以下樣式。 */ 
  6. @media (max-width: 600px) { 
  7.   /* your CSS rules */ 

10.壓縮

最后,壓縮捆綁包以減小其尺寸。壓縮刪除注釋和空白,你的捆綁軟件需要較少的帶寬來(lái)獲取數(shù)據(jù)。

 

改善CSS的10種最佳做法

 

如果你還沒(méi)有,在服務(wù)器端也啟用壓縮功能。

進(jìn)一步減少CSS和標(biāo)記大小的另一種好方法是混淆類名。

 

改善CSS的10種最佳做法

 

為此,可以根據(jù)項(xiàng)目設(shè)置選擇幾個(gè)選項(xiàng):

  • Webpack:對(duì)于Webpack,可以使用 css-loader 模塊。
  • Gulp:對(duì)于Gulp,您可以使用 gulp-minify-cssnames 插件。
  • 創(chuàng)建你自己的實(shí)現(xiàn):如果你沒(méi)有用于項(xiàng)目設(shè)置的專用軟件包,那么我會(huì)提供一個(gè)教程,向你展示如何創(chuàng)建自己的實(shí)現(xiàn)。

 

 

責(zé)任編輯:華軒 來(lái)源: 今日頭條
相關(guān)推薦

2020-03-16 08:35:11

vue開(kāi)發(fā)組件

2021-01-25 22:11:38

加密貨幣區(qū)塊鏈貨幣

2021-01-04 08:04:51

JS 變量JavaScript

2019-12-12 10:27:50

數(shù)據(jù)保護(hù)隱私保護(hù)網(wǎng)絡(luò)安全

2010-08-31 11:13:12

CSS框架

2015-05-19 11:46:45

IT管理應(yīng)用云應(yīng)用開(kāi)發(fā)

2021-06-06 22:37:40

數(shù)據(jù)存儲(chǔ)圖像存儲(chǔ)

2020-04-28 15:28:48

云計(jì)算混合云網(wǎng)絡(luò)

2020-11-15 23:40:37

疫情企業(yè)溝通CIO

2021-01-10 11:19:04

數(shù)據(jù)科學(xué)工具技術(shù)

2021-12-21 06:34:47

云安全混合云云計(jì)算

2017-08-16 08:49:27

私有云自助服務(wù)

2021-11-29 18:00:12

云計(jì)算端點(diǎn)安全云安全

2020-11-15 23:46:28

安全運(yùn)營(yíng)中心SOC網(wǎng)絡(luò)安全

2019-12-10 09:28:52

安全威脅漏洞網(wǎng)絡(luò)安全

2020-05-03 12:49:02

SSL證書加密數(shù)據(jù)安全

2021-06-27 17:18:23

網(wǎng)絡(luò)可觀察性網(wǎng)絡(luò)網(wǎng)絡(luò)運(yùn)營(yíng)

2019-12-02 09:46:02

編程語(yǔ)言JavaJavaScript

2020-05-29 09:41:26

微服務(wù)數(shù)據(jù)工具

2017-03-23 09:58:47

HTMLCSSJavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美一级艳情片免费观看 | 免费毛片在线 | 91九色网站 | 欧美一级欧美三级在线观看 | 国产欧美在线一区二区 | 国产乱性 | 在线观看成年人视频 | m豆传媒在线链接观看 | 亚洲一区二区精品 | 亚洲一区二区三区免费视频 | 色综合久久久久 | 国产目拍亚洲精品99久久精品 | 九九九精品视频 | 免费一区二区 | 韩国av影院 | 日韩久久久久 | 麻豆久久久久 | 日韩欧美视频 | 91精品国产色综合久久不卡98 | 国产欧美一区二区久久性色99 | 91视频一区二区三区 | 日日噜噜夜夜爽爽狠狠 | 欧美一区免费 | 99热这里都是精品 | 成人免费观看男女羞羞视频 | 久久久性色精品国产免费观看 | 亚洲三级av| 久热精品视频 | 欧美性受xxxx | 午夜男人天堂 | av黄色免费 | 91免费福利视频 | 久久av一区二区三区 | 久久亚洲国产精品日日av夜夜 | 欧美精品一区在线发布 | 一区二区三区高清 | 国产精品国产三级国产aⅴ无密码 | 久久99成人 | 国产精品毛片久久久久久 | 亚洲视频国产视频 | 91色综合 |