亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

淺談CSS中的OOCSS編程方式

2024-07-11 09:00:28
字體:
來源:轉載
供稿:網友

   OOCSS即面向對象的CSS,這里對象指的是頁面中的元素對象,與傳統編程中的面向對象不太相同,比如不存在方法這種東西,硬要說的話,附加的一些class可以看作是繼承或者接口之類的東西來實現對象的差異化。比如電商網站中的商品就是一個典型的對象,它們既有許多相同的部分,又有許多差異,寬高、按鈕、圖片、標題等基本布局都是相同的,而邊距、線框、背景顏色、字號等都是差異化的。由此按照OOCSS的指導原則,我們應該寫一個product class,然后為其添加一些border、theme之類的class來差異化它:

  CSS Code復制內容到剪貼板

  .product {

  display: block;

  overflow: hidden;

  float: left;

  width: 200px;

  height: auto;

  }

  .product-head{...}

  .product-body{...}

  .product-foot{...}

  .product-theme-black {

  background: black;

  color: white;

  }

  .product-border {

  border: 1px solid #333;

  }

  這樣在以上兩種附加class的作用下,我們在html中就可以獲得4種不同的product樣式,隨著附加class增加,product的樣式也會呈指數增加,千變萬化。這僅僅是一個簡單的例子,意在點出OOCSS的理念,但并沒有突出它的意義所在。別著急,先來看看OOCSS的兩大原則。

  1. 分離容器與內容

  所謂的容器即包裹對象的元素,比如一個div,我們經常會命名為wrap、container、body等。那么如何才算是分離容器與內容呢?很簡單,一句話,內容在哪都可用。也就是說不應該出現這樣的情況:

  CSS Code復制內容到剪貼板

  .container .product {

  ...

  }

  這樣干的結果就是復用性大大降低,因為只能在這個容器內使用它了。但這并不代表我們應該將所需的樣式全部一股腦的扔進單獨的class中,對于差異化應該單獨放在一個class中,這才是OOCSS的精髓。

  舉個例子,當我們既不想犧牲太多性能,又想來個瀑布流顯擺顯擺的時候,大部分前端都會使用column,類似泳道的設計。你想說哦不,這是偽pinterest,但是誰在乎呢,用戶是不會有閑工夫拖拽瀏覽器的寬度來鑒別它的,在IE下商品多的時候至少不會太卡。哈,別較真,首先分為幾個column,然后按照高度往里填放商品,先來看看下面的代碼吧,我有省略一些樣式避免誤導:

  CSS Code復制內容到剪貼板

  .column {

  height: auto;

  width: 200px;

  }

  .product {

  width: 180px;

  margin-right: 20px;

  margin-bottom: 10px;

  }

  看起來不錯,每列200px寬,商品放入其中,水平間距要大,垂直間距要小些才像column。但是等等,我們總還是需要整齊擺放的商品列表的對不對。也許margin并不是product的必要屬性,至少它應該是可變的。我們抽出它來:

  CSS Code復制內容到剪貼板

  .product {

  width: 180px;

  }

  .vertical-product {

  height: 400px;

  margin-right: 10px;

  margin-bottom: 10px;

  }

  .horizontal-product {

  height: auto;

  margin-right: 20px;

  margin-bottom: 10px;

  }

  這樣便將column或list之類的容器與product分開來毫無關系了,即使以后出現了其他組織形式,只要product的基本結構沒有變都可以直接復用,無非是添加一些附屬樣式到新的xxx-product的class中。另外這樣做還有一個好處,設計邏輯放在了HTML中,CSS更加強大。

  什么是樣式邏輯?商品在瀑布流中不定高,在列表中定高,這就是一種樣式的邏輯,如果用父子選擇器的形式寫在CSS中,那它就失去了自由。而放在HTML通過選擇添加何種附屬class來展現不同形式的product,則非常的自由與靈活。另外值得一說的是,margin-bottom是一樣的,但我們應該各自放在各自的class里面,原因很簡單,它們僅僅是一不小心恰好一樣,在設計邏輯中它們并不是一樣的bottom,這里并不是重復,而是看起來一樣。如果以后需要改變其中的一個bottom,共用則顯得非常別扭。

  2. 分離皮膚與結構

  第二點很容易理解,皮膚(theme)就是視覺效果,即使被剔除網頁也沒有什么影響的就是皮膚;而結構指地并不是像HTML這樣抽象的結構,因為CSS畢竟還是樣式,所以結構只是相對的頁面結構。

  先來看看我們的product吧,添加一些背景色和邊框:

  CSS Code復制內容到剪貼板

  .product {

  width: 200px;

  background: #F6F2F2;

  border: 1px solid #C4A0A0;

  }

  看起來還不錯,不過設計師都是自大狂,精心的調色,完美的搭配,絕對不會讓你僅僅使用這么一次的,頁面的其他模塊、sidebar甚至是header都可能采用相同的背景顏色與邊框,它們甚至可能互相嵌套。好吧,這其實在設計上是為了視覺統一,畢竟沒有幾個設計大師能hold住3,4種以上的顏色。所以我們能做的并不是在每個class中添加這樣的樣式,而是把它提出來成為獨立的class,原因就像我開篇說的那樣,顏色為混沌之源。

  CSS Code復制內容到剪貼板

  .main-bg {

  background: #F6F2F2;

  }

  .main-border {

  border: 1px solid #C4A0A0;

  }

  這樣就可以在頁面中隨時使用主要的設計元素了,而且需要修改時也非常的簡單,不用擔心有什么地方漏掉。另外我將背景與邊框分為了兩個class,原因還是設計邏輯應該放在HTML,背景與邊框并不是一定同時出現的,兩者的關系應該由HTML決定,即使設計上邏輯決定了兩者的綁定,在實現時也有可能因為HTML結構而放在兩個不同的元素上。

  OOCSS強調class,將每組樣式寫成一個class方便HTML中使用,眾多class組合起來能千變萬化組成一個對象。所以如果是想一勞永逸的寫一套UI作為開發時使用的樣式,我建議使用OOCSS來進行開發。但它也有缺點,過多的將設計邏輯放在HTML中,極大的自由化了頁面開發時的選擇,如果寫HTML的開發者不能很好的理解整套CSS的結構,較易在HTML中造成class混亂。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
555www成人网| 欧美另类第一页| 91av在线免费观看视频| 麻豆国产va免费精品高清在线| 久久久久日韩精品久久久男男| 91精品免费久久久久久久久| 日韩国产欧美精品一区二区三区| 国内精品400部情侣激情| 成人综合国产精品| 91精品啪在线观看麻豆免费| 国产精品91一区| 中文字幕久热精品在线视频| 美女性感视频久久久| 亚洲国产精品va在线| 欧美大片欧美激情性色a∨久久| 2019国产精品自在线拍国产不卡| 日韩中文字幕免费| 97碰在线观看| 欧美视频第一页| 91视频国产一区| 亚洲一区二区三区视频| 亚洲男女自偷自拍图片另类| 国产精品中文字幕久久久| 欧美伊久线香蕉线新在线| 国产欧美va欧美va香蕉在线| 国产精品激情自拍| 91久久国产精品91久久性色| 日韩中文字幕在线观看| 成人免费视频网址| 日韩精品免费在线视频| 亚洲aⅴ男人的天堂在线观看| 精品国产一区二区在线| 国产精品久久久久久亚洲影视| 欧美成人在线影院| 国产视频精品自拍| 国产欧美一区二区三区在线| 国产日韩欧美日韩大片| 欧美一区二粉嫩精品国产一线天| 91欧美激情另类亚洲| 在线观看欧美视频| 在线a欧美视频| 人人澡人人澡人人看欧美| 国产91精品网站| 欧美一级大片在线免费观看| 亚洲欧美在线磁力| 亚洲国产精品va在线看黑人| 91精品国产色综合久久不卡98口| 欧美性猛交xxxx久久久| 国产视频在线观看一区二区| 欧美性生交xxxxx久久久| 亚洲成年人在线| 欧美日韩国产精品一区二区不卡中文| 欧美黑人性生活视频| 久久久久久久激情视频| 在线国产精品播放| 久久久999精品免费| 三级精品视频久久久久| 伊是香蕉大人久久| 久久视频在线免费观看| 成人h视频在线观看播放| 欧美精品日韩三级| 日韩va亚洲va欧洲va国产| 国产精品久久久久91| 性色av一区二区咪爱| 欧美亚洲国产视频小说| 日韩精品久久久久| 国产精品午夜国产小视频| 欧美激情18p| 亚洲欧美福利视频| 日韩在线观看免费全集电视剧网站| 在线精品国产成人综合| 97视频在线观看亚洲| 97免费中文视频在线观看| 九九九热精品免费视频观看网站| 国产亚洲精品激情久久| 亚洲欧洲在线看| 亚洲一区二区三区四区视频| 亚洲欧美另类国产| 日韩理论片久久| 7777kkkk成人观看| 国产91在线高潮白浆在线观看| 国产亚洲精品久久久久久| 亚洲国产日韩欧美在线图片| 色999日韩欧美国产| 欧美一级在线播放| 亚洲天堂成人在线视频| 亚洲综合社区网| 久精品免费视频| 亚洲午夜久久久久久久| 久久久久久伊人| 亚洲三级av在线| 国产欧美精品日韩| 国产精品日韩一区| 国产91ⅴ在线精品免费观看| 久久成人亚洲精品| 精品久久久一区| 成人在线激情视频| 久久天天躁夜夜躁狠狠躁2022| 精品国产一区久久久| 成人免费视频网| 亚洲乱码国产乱码精品精| 97精品在线观看| 亚洲天堂视频在线观看| 亚洲精品国精品久久99热| 日韩av不卡在线| 精品国产拍在线观看| 日本欧美国产在线| 黄色一区二区三区| 日韩成人高清在线| 久久久人成影片一区二区三区| 久久精品中文字幕一区| 欧美一级成年大片在线观看| 日韩视频在线观看免费| 国产在线视频一区| 亚洲成色777777在线观看影院| 国产91精品久久久久久久| 日韩成人在线观看| 2019国产精品自在线拍国产不卡| 国产精品美女www| 久久精品国产亚洲精品| 欧美成人免费va影院高清| 亚洲影院在线看| 92裸体在线视频网站| 国内精品久久久久伊人av| 日韩精品在线免费播放| 久久亚洲国产精品成人av秋霞| 亚洲国产成人精品久久| 久久视频在线观看免费| 日韩av在线一区二区| 97色在线视频| 欧美激情欧美激情| 欧美激情精品久久久久久久变态| 日韩**中文字幕毛片| 亚洲午夜久久久影院| 亚洲精品国产suv| 国产精品久久久久久久美男| 精品欧美aⅴ在线网站| 国产欧美精品久久久| 精品久久久久久久久久久久久久| 国产精品久久电影观看| 欧美视频精品一区| 欧美黄色性视频| 亚洲成人精品久久久| 欧美激情第99页| 日韩精品免费电影| 国产69久久精品成人看| 亚洲视频在线观看免费| 国产精品日韩在线| 国产视频自拍一区| 亚洲一二三在线| 一本一本久久a久久精品牛牛影视| 亚洲精品国产suv| 福利精品视频在线| 97国产精品视频人人做人人爱| 欧美一区二区三区免费视| 欧美另类极品videosbest最新版本| 免费99精品国产自在在线| 国产精品久久久久影院日本| 国产精品白丝jk喷水视频一区| 国产精品久久国产精品99gif| 久久综合九色九九| 国产精品亚洲美女av网站| 日韩精品免费在线视频观看| 国产日韩在线播放|