在一次這樣的需求中,需要實現滑倒底部時自動請求數據,需要動態創建節點然后追加到某元素中,這期間遇到的問題就是在動態創建節點后,類名也已經加上了 ,但是樣式就是沒有生效,最后發現原因的產生竟然是<style scoped></style>中scoped屬性
該屬性的作用是用來綁定當前樣式不被污染,同時也就意味着在創建新的node后,該node樣式是進入不到style總查找樣式的,bug如下:
新創建的li在插入到節點中時,樣式並沒有生效。
所以我們解決辦法
1.將scoped屬性去掉。
優點:方便快捷
缺點:失去了樣式的保護,我們就需要用原始的方法保護該組件的樣式作用於,可通過后台選擇器等等方式實現樣式的保護,使其不受污染
2.在動態創建Node時,就將樣式類型些微行內樣式,卸載style中。這樣在dom渲染的時候會伴隨着行內樣式一起生效
優點:在不影響樣式作用於的情況下就可以實現
缺點:違背了結構表現相分離,對於代碼的解析速度有很大影響。
bug修復如下:
大家可以了解下vue中的樣式穿透,也是解決樣式問題的常用方式之一。sass/less使用樣式穿透的方式可能回有所不同,
stylus的樣式穿透 使用>>>
外層 >>> 第三方組件
樣式
.wrapper >>> .swiper-pagination-bullet-active
background: #fff
sass和less的樣式穿透 使用/deep/
外層 /deep/ 第三方組件 {
樣式
}
.wrapper /deep/ .swiper-pagination-bullet-active{
background: #fff;
}
需要demo源碼的留言哦。
