有一些需求,如動態切換界面主題,就需要通過js去控制css。
對應的實現方案也有很多,如Less中的modifyVar,這里推薦一種兼容性比較好的做法,使用瀏覽器原生支持的——CSS變量。
https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties
首先在根css文件頭部(如index.css或App.css之類的)聲明變量以及默認值,以雙短橫線--開頭。
:root{ --show-bullet: visible; };
其中show-bullet是我自定義的變量,用於控制彈幕是否展示。:root代表這個是全局的變量,所以你可以在任何地方訪問到這個變量,
如子組件的css中。
比如我在自定義彈幕組件中:
.bullet { visibility: var(--show-bullet); }
var代表訪問變量。因此默認情況下彈幕是可見的。
那么我如果想要做一個按鈕的點擊事件關閉彈幕:
只需要(以下為js代碼):
document.documentElement.style.setProperty('--show-bullet','hidden');
彈幕就會關閉顯示了。其中注意在定義css變量時,無需加引號,而在通過js修改時一定要加引號,確保第二個參數為字符串。
