css中選擇器的優先級,學習web前端開發?
謝謝邀請!
相對來說,入門Web前端開發還是比較容易的,但是僅僅是入門容易,越往后學習內容就越多,所以學習Web前端開發要有一個心里準備,那就是前端開發內容多且更新快。
通常來說,學習Web前端開發需要的基礎知識并不多,簡單的說需要了解操作系統、計算機網絡以及Web的相關知識,由于Web開發本身需要接觸更多的網絡知識,所以學習Web開發之前可以先了解一下基本的網絡連接請求處理過程。
學習Web前端開發可以先從互聯網整體結構開始了解,互聯網簡單的說就是網絡的集合,通過交換機、路由器等網絡設備把全世界的網絡連接到一起,看一個圖:
互聯網把各種各樣的計算機設備連接到了一起的目的是為了能夠共同協作,而共同協作的基礎就是能夠進行數據交換,而數據交換的前提是要有一套完整的通信協議,通訊協議就是制定一個統一的交流標準。
這些基礎條件都具備了以后,下一步就是在互聯網中設置網絡服務,而Web服務則是最為常見的一種網絡服務,看一個簡單的Web服務過程的圖示:
這個圖描述了一個非常簡單的Web請求處理過程,圍繞這個處理過程有幾個關鍵的角色,分別是作為請求端的瀏覽器、作為服務端的HTML資源、請求對象和回應對象,下面做一個簡單的描述。
瀏覽器是Web前端開發的呈現基礎,對于用戶來說,瀏覽器就是一個打開Web服務的窗戶,所有的Web服務都通過瀏覽器呈現給用戶。對于前端開發者來說,瀏覽器就是前端開發內容的運行環境(容器)。
存放在服務端的HTML頁面資源就是前端開發人員要開發的主要內容,前端開發就是編寫基于HTML的一系列代碼,包括CSS、JavaScript等。這部分內容編寫好以后要存儲在服務器端,然后等待用戶的請求。
請求對象就是客戶在瀏覽器端向服務器端發出的服務請求,然后服務器把對應的資源(HTML等)封裝成回應對象發送給客戶端,然后客戶端的瀏覽器把服務端返回來的資源(HTML)呈現出來,一個請求處理過程就完成了。
這是一個非常簡單的描述過程,隨著Web前端開發的發展,目前前端開發的方式也產生了較大的變革,前端技術也越來越豐富,框架也越來越多,而且前端開發后端化也是一個趨勢,因此前端開發需要一個系統的學習過程。
我做軟件開發多年,目前也在帶軟件開發團隊,我會陸續在頭條寫一些關于軟件開發方面的文章,感興趣的朋友可以關注我,相信一定會有所收獲。
如果有軟件開發方面的問題,也可以咨詢我。
謝謝!
CSS選擇器權重如何計算?
很古老的話題了
id=100
class=10
tag(標簽)=1
按照這個規律去計算,比如
#qietu div{}
100+1 = 101
.qietu .box{}
10+10=20
可以得出第一個的權重要比第二個要高。另外關于權重的擴展知識面,我推薦了解下BEM命名規則,這個觀念很好,可以從側面杜絕權重問題的產生,還有一個就是提高權重的方法 !important;
postcss和cssmodule是什么?
postcss是什么?
根據官網的解釋,它是一種javascript編寫的工具,用來轉化css的。可以認為它是處理css的插件集合,需要配合諸如webpack、gulp等編譯工具才能展現它強大的能力。
目前社區提供了非常多的插件,比較有名的如下:
autoprefixer 可以為css的屬性配置兼容性的前綴,不需要手動添加postcss-preset-env 允許你使用更加現代的css特性stylelint 檢查css語法錯誤cssnano css的壓縮器等等postcss的原理如果大家了解babel的原理,那就應該聽說過AST即抽象語法樹。編譯器將字符串進行詞法分析、語法分析,再做轉換,最終達到預期的結果。postcss也是同樣的原理,這個包已經為使用者提供了解析的方法parse,并且也提供了很多轉化的API,利用這些就可以自己開發一款postcss插件了。
css Module是什么?先前呢,我們使用css選擇器,它是對整個頁面是有效的,也就是全局的,當你每次迭代需求的時候,需要考慮每次添加新的css是否會影響到其他地方,所以我們有時選擇為樣式表添加命名空間。css Module為我們提供了另外一種開發方式,它可以使css具有局部作用域。
用法如下:
用法是如此的簡單,基本一看就會,css-loader為我們提供了css Module的開關,只要為css-loader添加參數選項modules就可以開啟。注意:它必須放在less或者sass的loader之前。
那它如何做到局部作用域的呢?
打開element面板可以發現,它把class變成了md5戳,對應每個組件,保持唯一。
vue的scoped由此我們聯想到vue的scoped,它也解決了css局部作用域的問題!
它在dom上生成了一個data屬性,并且給class選擇器添加了屬性選擇器,類似于之前的md5戳。不過由于添加了屬性選擇器,使得選擇器的優先級變高了,想在組件外面覆蓋css屬性就變得不那么容易了!
喜歡我的回答就關注我吧,有問題可以發表評論,我們一起學習,共同成長!
css和style有什么區別?
css是外部樣式style是行內樣式
兩都的區別css對于后期的修改比較靈活。
有效執行順序,如果內部寫了style樣式的話,style為最終執行樣式,意思就是style的優先級高于css。
css的流行也在于它很好的做到了結構和樣式分離,使得開發者能就通過改變CSS樣式來達到改變頁面效果的目的。而Style是內嵌入頁面的,維護起來不方便。所以一般的采用引入方式。