㈠ 《HTML5權威指南弗里曼》pdf下載在線閱讀全文,求百度網盤雲資源
《HTML5權威指南弗里曼》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1gGGWHguiqG9D3uYfMex0Vg
㈡ Css權威指南(4th,第四版中文翻譯)-8.Padding,Borders,Outlines,Margins
在上一章節,我們討論了元素顯示的基本特點。而在這一章,我們將看到css屬性是如果改變元素顯示外觀的,這包括了padding,border,margin。
眾所周知,所有的document元素都會生成一個長方形的box來布局,稱為元素box,而且這個box是具有排他性的,同一個區域是不允許有多個box交疊的。這就是前端最熟悉的盒模型:
一般來說,這里說的寬度和高度指的都是上面圖中inner edge的寬和高。而這兩個屬性最重要的一點就是它們不作用於inline的不可替代元素。舉例來說,
如果你給鏈接設置了寬高,那麼瀏覽器就會忽略這些聲明:
在盒模型中,從里到外的第2層就是padding:
該屬性接受任何的長度值,包括百分比。例如:
從上圖中我們發現,padding也是在背景的覆蓋范圍的。
默認來說,元素是沒有padding的。但一般情況下我們還是希望有padding的,不然border有時候看起來就離內容太近了:
另外padding是由方向的設置順序的,來看下:
而且每個方向上,你所用的長度單位都可以是不一樣的,舉個列子:
有時候你會碰到相同的padding數值,例如
這可以簡化為:
這是怎麼實現的呢?其實在CSS內部定義了一套規則:
換句話說,如果只給了三個值,那麼第四個left就會拷貝right的值。如果只給定2個值,那麼第三個拷貝第一個,第4個拷貝第二個。如果只給了一個值,那麼所有值都從它身上拷貝。
這個屬於大家非常熟悉的部分了:
百分比的計算核心在於標準的確定,在padding中,其標准就是父元素的內容區域的寬度。舉個例子:
設置百分比的padding存在一個問題,就是當父元素未設置寬度,而且隨著瀏覽器會變化寬度的情況,那麼這個padding的寬度也會跟著一起變動。
如果對一個inline元素施加padding是不會改變元素的高度的,例如:
這是因為對於不可見的背景情況下,padding是被設置為透明的,所以上面的聲明不會改變行高。但如果設置了背景,情況就不一樣了:
上面我們看到了處理padding top和bottom的情況,但是left和right的padding有點不同。如果對inline元素設置了left和right的padding是有效果的:
那如果inline元素跨行了會怎麼樣呢?
很自然的,left作用於開頭,而right作用於結尾。
我們還是拿圖片來舉例,試著為圖片添加padding:
不管可替換元素是block的還是inline的,這一padding都會加上,如下圖所示:
在padding外面一層的為border,默認來說,background的顏色的邊界就是在border這層。而每個border都有三部分組成:寬度,厚度和樣式。對於寬度來說,默認值為medium,一般來說是2px。但有沒有發現平常我們很少注意到,每個元素的border寬度已經設置好了?那是因為border的樣式默認設置為none,所以我們壓根看不到。最後來說說border默認的顏色,就是它的前景色(foreground color)。
另外剛說了背景區域到border位置,但是到border的內邊界還是外邊界沒說。其實按照CSS的標準定義,這個需要擴展到外邊界,因為有些border是dotted的。
border的樣式是最重要的,因為你不設置,它就壓根不出來。
CSS中定義了10中不同的樣式,包括默認的none,列舉如下:
其中最難搞得就是double,border樣式為兩行,而其中的空白的寬度就是border-width的寬度。而且CSS標准中並沒有規定兩條線的粗細的標准,都依賴瀏覽器去實現。
下面來看看另外需要顏色的border類型:inset,outset,groove,ridge
默認來說,border的顏色是基於元素的顏色。但是顏色的變化又得完全依賴瀏覽器去實現,來看看不同的實現:
在border-style屬性中是允許同時定義多種border的:
這樣設置的結果是什麼呢?那就是top border為solid,right border為dashed, bottom border為dotted ,left border為solid。就像之前定義的padding一樣。
來看個具體的例子:
如果想要設置單側的樣式,可以使用下列的一系列屬性:
來看個具體的例子,設置h1三邊包圍:
上面需要注意的是,針對第二種方案,必須將border-left-style樣式放在後面,不然就會被後者替換。
設置完style後,接下來就需要設置寬度width:
對應的單側的設置為:
總共有4種方式來設置border的寬度,可以是像4px這樣的數值,也可以是另外3個關鍵詞(thin,medium,thick)。但要注意這三個關鍵詞沒有對應具體的數值,按照CSS標准,只要層層加厚就可以,依賴於瀏覽器實現。
我們假定一個段落p有個背景色和border style
border的width默認為medium,我們將其修改下:
來玩個極限的,將寬度設置為50px:
當然也可以設置單側的寬度:
想要去掉border非常簡單:
哪怕設置了寬度,如果style被設置為了none,那麼border也不會顯示,那這是為什麼呢?這是因為如果將style設置為none,那麼CSS就會將其視為是不存在的,然後自動將其寬度設置為0,無論你自己定義了什麼。就像一個杯子已經空了,那麼再來描述他是半滿的是沒有任何意義的。
這一點為什麼重要呢,因為很多人容易忘記來聲明一個border的樣式。例如:
來看個顏色的示例:
當然也可以為不同的side設置不同的顏色:
如果沒有設置顏色,那麼就會獲取當前元素的前景色:
當然也可以設置單側的border顏色:
就像我們上面提到的,如果border沒有style,那麼久沒有寬度。那如果碰到需要設置寬度但是border又不可見的情況怎麼辦?答案是將顏色設置為transparent。例如:
試想下這種情況,如果要針對某一邊添加widith,style和color。如果單獨設置的話其實還是蠻麻煩的:
但如果可以簡化的話,那就方便很多了:
針對每個side屬性的簡化順序為:
完全可以按照上面的定義來設置更復雜的border設置:
而且這些值得順序也是不用擔心的,下面的規則和上面的是一樣的:
另外值得注意的是,在簡化版中避免重復的類型值,比如兩個width等:
這會導致瀏覽器直接忽略這條規則。
現在我們回到border屬性本身:
來看看怎麼用的吧:
這個會自動應用到每個方向上:
inline元素之前已經講了很多了,現在主要簡單講幾個需要注意的點。
首先就是不論border設置的width多厚,inline元素的line height都不會改變:
top和bottom的border是不可以的,但是left和right都是可以的:
而對於可替換元素來說,border是會影響行高的:
為了支持圓角的邊框,border引入了border-radius屬性來設置:
如果想要實現邊角的圓角過渡,可以如下設置:
如果給定的是一個百分比值,那麼結果很可能就是一個橢圓,因為長寬的基準值不一樣:
另外,跟其他元素一樣,border-radius也可以設置多個值,位置從左上沿順時針到底部左側。
而參數個數為3個的時候也是一樣的,第4個參考第2個:
而在上圖中重點到不是邊角,而在於內容區域的右下角也發生了圓滑過渡,這是因為內容區域的背景和padding的背景不同所致,我們將在後面一章中詳細討論。
border-radius在原理上修改的是border和background的渲染,而不是盒子模型本身,來具體看下:
剛剛我們看到了設置單個值得情況,那如果設置2個值會怎麼樣呢?如果我們想要在水平方向設置3英寸,而在垂直高度設置1英寸。我們不能直接這樣寫:
因為這樣我們會將左上,右下對角線一個寬度,而右上和左下對角線有一個寬度。而是應該使用:
而這相當於下面的表達式:
下面是一個簡單的例子:
接下來來個更復雜的:
不同的顏色和樣式在角的位置的渲染效果是不同的:
上面第一個是簡單的圓角,第二個在厚度上出現了變化。第三個顏色和厚度是一樣的,但是角的曲線從solid變成了double。而且樣式間的過渡被阻斷了。第四個我們把厚度和樣式做了改變。第5第6個開始出現顏色的變化,但是都是直接的改變而沒有漸變。而第七種情況則是厚度相同,顏色發生漸變,但是可以看到,只有外側發生了變化,而內側還是直角,示例如下:
值得注意的是,這次是不同在水平和垂直方向加/的,來看下:
上面兩個是一樣的。
如果你想要使用一張圖片來作為border,那麼可以使用border-image-source:
讓我們使用一張單個圓點的圖片作為border背景:
這里需要注意幾個地方,如果沒有定義border:25px solid; 按照之前的說法,沒有style,border其實默認是不顯示的。另外就是border-width其實就是後面border圖片的寬度。
那令人奇怪的是,為什麼圖片只出現在角落裡,邊上為什麼沒有,而這就需要用到下面這個屬性了:
slice也是接收4個值,完全遵從top,right,bottom, right的CSS默認賦值流程,而且數值也是基於百分比的值。
我們就以3 x 3 的網格圖為例來看下效果:
注意到中間的一塊空了,這是因為css中自動把中間的內容設置為empty,具體會在後面講解原理。
slice屬性的不同百分比對應不同的邊緣裁切效果:
這就是我們為什麼選取3 x 3網格圖的原因,可以清晰的看到裁剪後的邊框效果。除了上面的百分比,我們也可以使用數字,一般對於柵格圖來說就是像素值,來看個例子:
回到之前的中心空白問題,這其實可以通過fill來填充回來:
而且從效果上來說會覆蓋到其他的背景元素之上,因此可以作為背景的替代。
同時之前我們看到的寬度都是相同的,而其實可以為border的4個方向設置不同的寬度,然後border-image會自動匹配到對應寬度:
如果想要自己來設置border圖片的寬度,可以使用border-image-width:
border-image-width其實和border-image-slice差不多,而不同的是前者就是border box本身。為了更好理解這個意思,我們假定寬度設置為1em:
其示意圖如下:
邊框都是1em寬,那麼如果來填充呢,這里涉及多個屬性,由border-image-slice生成的圖片要經過border-image-repeat的處理,然後顯示在border-image-width定義的盒子裡面。
㈢ html5與css3權威指南 第三版 pdf帶源碼有下載嗎
這就是html5與css3權威指南,希望對您有幫助,
㈣ 《html5權威指南上冊+下冊全》pdf下載在線閱讀全文,求百度網盤雲資源
《html5權威指南上冊+下冊全》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1160OJJ_geXdKup4P38fzfQ
㈤ 《css權威指南》pdf下載在線閱讀全文,求百度網盤雲資源
《css權威指南》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1bEzYQk2yh6KE922uxB1QDA