下面是一段普通的代碼:
css:
復(fù)制代碼 代碼如下:
.box{
border:1px solid #ccc;
font-size:12px;
background:#f1f1f1;
padding:10px;
}
html:
復(fù)制代碼 代碼如下:
div class="box">this is a gray box/div>
但是這個(gè)時(shí)候需求增加了,在頁(yè)面中不僅要有一個(gè)灰色的盒子可能還有藍(lán)色的盒子,可能還有綠色,通常我們會(huì)說(shuō)用集成嘛,好我們就做如下更改
css:
復(fù)制代碼 代碼如下:
.box-gray,
.box-green{
border:1px solid #ccc;
font-size:12px;
padding:10px;
}
.box-gray{background:#f1f1f1}
.box-green{background:#66ff66}
Html:
復(fù)制代碼 代碼如下:
div class="box-gray">this is a gray box/div>
div class="box-green">this is a green box/div>
但是這個(gè)時(shí)候需求又有變化了,根與應(yīng)用的不同,盒子中有些要用到12號(hào)字,有些要用到14號(hào)字,有些要變局10px有些要20px,估計(jì)這個(gè)時(shí)候你就要頭大了,如果要用用繼承css代碼就會(huì)變得異常的復(fù)雜,那我們就來(lái)試驗(yàn)一下用組合的方式看能不能解決。
css:
復(fù)制代碼 代碼如下:
.fs-12{font-size:12px}
.fs-14{font-size:14px}
.pd-10{padding:10px}
.pd-20{padding:20px}
.box{
border:1px solid #ccc;
}
.box.gray{background:#f1f1f1}
.box.green{background:#66ff66}
Html
復(fù)制代碼 代碼如下:
div class="box gray fs-12 pd-20">this a gray fontsize12px padding20px box/div>
div class="box green fs-14 pd-10">this a gray fontsize14px padding10px box/div>
….
我們看一些雖然在class上引用了幾個(gè),但是代碼和邏輯都非常清晰,而且非常容易維護(hù),隨意組合隨意擴(kuò)展。從上面可以看到“組合”的方式是不言而喻的,但是也不是十全十美的,再拆分組合的時(shí)候一定不要過(guò)度,不然效果可能適得其反,只有把組合+繼承運(yùn)用的恰到好處才能讓我們的代碼更加優(yōu)雅和藝術(shù)。
您可能感興趣的文章:- js中繼承的幾種用法總結(jié)(apply,call,prototype)
- 不錯(cuò)的一篇關(guān)于javascript-prototype繼承
- C++中的三種繼承public,protected,private詳細(xì)解析
- 實(shí)現(xiàn)JavaScript中繼承的三種方式
- javascript prototype的深度探索不是原型繼承那么簡(jiǎn)單
- 深入了解javascript中的prototype與繼承
- Javascript 繼承機(jī)制的實(shí)現(xiàn)
- C++中virtual繼承的深入理解
- javascript的函數(shù)、創(chuàng)建對(duì)象、封裝、屬性和方法、繼承
- C++ 繼承詳解及實(shí)例代碼