Scoped CSS規範草案

2021-09-07 08:23:02 字數 1580 閱讀 5529

問:什麼是scoped css規範?

scoped css規範是web元件產生不汙染其他元件,也不被其他元件汙染的css規範。

面對元件化的普及,元件的復用很普遍的需求,然而css相互汙染是經常遇見的問題,建立規範讓開發者放心使用各種元件,甚至跨生態的元件是很有必要的一件事情。

一段hash + 元件名,這個可能兼顧了辨識度 + 命名汙染的問題。

方案二:

用webpack和scss,less寫成模組化css就可以一定程度避免css汙染,不能完全避免

方案三:樣式規範上,使用與元件同名的巢狀命名空間

如果只用自己的生態可以這麼搞,但是有的時候會引入第三方生態,第三方和自己的命名空間一樣還是很有可能,比如scroller外掛程式,社群裡也有很多scroller外掛程式loading uplader外掛程式等等。

這裡還是會有汙染的情況,因為:

所以得出:

用意念或者規範約定不然注入程式自動化避免衝突

好處:

如果把這個過程放在構建過程就是工程問題。但是元件單獨抽離出來給第三方用,其實就是元件本身的問題。總之要保證:

;(function () ]+)(,(?=[^}]*

if (g1.match(/:scope/)) else

});}

g1 = g1.replace(/^(\s*)/, "$1" + prefix + " ");

return g1 + g2;

});addstyle(css,id+"-style");

return id;

}function generateid() else

}var isie = (function () ());

function addstyle(csstext, id) else

}window.scoper = scoper;

})();

var id = scoper("h1 \

\/* h2 */");

scoper返回的id,在元件的js裡面賦給包裹的dom便可以。這裡詳細說下生成id的過程:

function generateid() else 

}

通過math.random得到隨機數並經過處理,然後通過document.getelementbyid去查詢頁面上有沒有同名id,有的話則繼續重新生成,沒有的話就使用當前id。這裡需要特別注意的是,比如一些彈出層外掛程式,display hide的時候有的元件是直接從body裡面移除,所以這就帶來了css碰撞的可能性,所以這裡scoped css 規範強行約定:後插入的html,一定要經過scoper過程重新生成唯一id。

最後,scoped css規範已經在alloytouch外掛程式裡開始實施,並打算推廣開來。

你有什麼好的想法可以讓跨生態跨專案跨技術棧的元件復用更加愜意,可以交流交流。

Loop作業系統設計草案

我在windows linux下開發了各種各樣的程式,呼叫api,跑各種庫,各種編譯錯誤,各種套娃依賴。程式設計時,api太過於複雜,各種跑網路查方法,結構。有時候解決環境問題的成本遠大於解決實際問題的成本,也可能是我的個人能力不足吧,但是我真的很煩這種事情。在開發程式的時候,呼叫乙個api,就能實...

FSF再次公布GPL 3草案

自由軟體 會表示,在進行公開版本的程式之前,有一些議題必須被充份討論,其中包括 novell 與微軟的授權協議。已延宕許久的第三版 gpl 通用公共授權書 預計幾個月前公布的再版草案,由自由軟體 會 fsf free software foundation 即將公布,草案內容並將考慮到去年微軟與 n...

《新空氣工作室章程 草案》

新空氣工作室章程 草案 工作室名 新空氣 成立時間 2009年1 月1日 理念 奮鬥,優秀,成功 第一章工作室的奮鬥目標 相互促進,相互鼓勵,讓每一天都激情高昂!讓優秀成為一種習慣,微笑的面對新的開始,面對新的生活,迎接新的明天,迎接新的未來!認真的對待自己的抉擇,努力實現自己理想,一生為了這個理想...