1. 程式人生 > >Vue webpack打包後,css樣式發生改變或不起作用

Vue webpack打包後,css樣式發生改變或不起作用

用run dev build打包後,發現樣式改變了,最終發現addAdress.vue和myAdress.vue中的有個類名是相同的,但是想著

<style  scoped>
</style>

在style標籤上新增scoped屬性,就表示它的樣式作用於當下的模組,樣式私有化的目的就不會相互汙染啊!為什麼打包後會出現這樣的結果呢!不太理解!

一.css樣式發生改變

<style scoped>的scoped屬性:

1)加了scoped屬性的元件,可以維護當前元件樣式不受其它元件影響

2)加了scoped屬性的父級元件,不能修改子元件元素樣式(無路子元件加沒屬性scoped,因為scoped只能維護當前元件元素)

3)不加scoped屬性的父級元件,可以修改子元件樣式

4)加了scoped屬性的父級元件,也可以強行控制加了scoped屬性的子元件,方法是:.a >>> .b或者css預處理中的 .a /deep/

二.css樣式不起作用

原因:

1.使用了webpack2的語法規則不正確; webpack2要求必須寫-loader;

2.可能是隻寫了css-loader,沒有寫style-loader;

3.順序反了,必須寫成 style-loader!css-loader;

沒寫style-loader則build檔案會生成,但你會發現頁面中js不起作用;

沒寫css-loader則會直接報錯:’You may need an appropriate loader to handle this file type.’ 

style-loader只是沒起作用而不報錯就意味著它的作用是將樣式插入到DOM元素中;結合網上的答案以及觀察預覽頁面發現:style-loader會在頁面的header標籤裡生成內部的<style></style>

css-loader 會報錯,是因為它影響到webpack的build的過程了。結合網上分享以及’You may need an appropriate loader to handle this file type.’報錯資訊,意味著css-loader的存在使得在js中通過require

或者import引入css成功;通過css-loader,可以實現在js檔案中通過require的方式,來引入css。