Some points worth remembering:css
當設置盒子絕對的高度或者寬度時,內容可能會超出。爲了解決這個問題,有了overflow屬性,下面介紹最多見的3個值。html
背景由背景圖和背景顏色構成。默認下,背景擴展到border的邊緣。這很好,可是有時候有其餘的狀況怎麼辦?look at this。默認下,是用的border-box。其實這裏只是簡單的裁剪。web
background-origin這個屬性定義了,背景圖是相對於什麼哪一個位置來定位的。它有三個值:api
和border差很少,可是它不是box model的一部分。瀏覽器
一個明顯的用途是,若是你想容許一個佈局的寬度是靈活的,經過設置它的外部容器的寬度爲一個百分比,但你也不但願它變得太寬或太窄,由於佈局會開始看起來很差。 這裏的一個選擇是使用響應式網頁設計技術(咱們將在後面介紹),但更簡單的方法多是給佈局一個最大和最小寬度約束:less
body { width: 70%; max-width: 1280px; min-width: 480px; margin: 0 auto; }
0 causes the top and bottom margins to be 0, while auto (in this case) shares the available space between the left and right margins of the container, centering it. The end result is that when the container is within the min and max width constraints, it will fill the entire viewport width. When 1280px width is exceeded, the layout will stay at 1280px wide, and start to be centered inside the available space. When the width goes below 480px, the viewport will become smaller than the container, and you'll have to scroll to see it all.ide
0使頂部和底部邊距爲0,而auto(在這種狀況下)共享容器的左右邊距之間的可用空間,以此爲中心。 最終結果是,當容器在最小和最大寬度約束內時,它將填充整個視口寬度。 當超過1280像素寬度時,佈局將保持在1280像素寬,並開始在可用空間內居中。 當寬度低於480像素時,視口將變得小於容器,您必須滾動才能看到它。函數
我理解的,準確來講,當超過1280px時候,就保持1280px,在480到1280px之間,就會保持寬度70%,若是小於480px時,視口會變得小於容器。必須滾動才能看到它。佈局
Another good use of max-width is to keep media(e.g. images and video) constrained inside a container. For example:flex
img { display: block; margin: 0 auto; width: 100%; }
box-sizing屬性也有三個值
display有不少個值,可是最多見的3個仍是: block、inline、inline-block
For example:
HTML: <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. <span class="inline">Mauris tempus turpis id ante mollis dignissim.</span> Nam sed dolor non tortor lacinia lobortis id dapibus nunc. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. <span class="block">Mauris tempus turpis id ante mollis dignissim.</span> Nam sed dolor non tortor lacinia lobortis id dapibus nunc. </p> <p> Lorem ipsum dolor sit amet, consectetur adipiscing elit. <span class="inline-block">Mauris tempus turpis id ante mollis dignissim.</span> Nam sed dolor non tortor lacinia lobortis id dapibus nunc. </p> CSS: p { padding : 1em; border : 1px solid black; } span { padding : 0.5em; border : 1px solid green; /* That makes the box visible, regardless of its type */ background-color: yellow; } .inline { display: inline; } .block { display: block; } .inline-block { display: inline-block; }
There are many other different properties you can use to manipulate the element's background, some of which we have already seen a number of times in our course already:
幾乎全部地方鬥支持背景顏色,並且背景漸變只有新瀏覽器才支持,所以設置一個背景顏色是很是有必要的有時候。
我以爲沒有什麼多說的。
p { background-image: url(/example.png); }
常見的幾個值:
Generally the property will take two values, seperated by a space, which specify the horizontal(x) and vertical(y) coordinates of the image --- the top left corner of the image, to be exact. Think of the background as a graph, with the x coordinate going across from left to right, and the y coordinate going from top to bottom.
背景位置容許咱們將背景圖像放置在咱們想要的背景內。 一般,屬性將採用兩個值,這兩個值由空格分隔,這兩個值指定圖像的水平(x)和垂直(y)座標,即圖像的左上角。 將背景視爲圖形,x座標從左到右穿過,y座標從上到下。
這個屬性能夠接受不少值,你會用到的大多數值有:
你應該注意,能夠混合和匹配這些值,好比background-position: 99% center。還要注意,若是隻指定一個值,那麼該值將被假定爲水平值,垂直值將默認爲center.
一個linear gradient經過linear-gradient()建立,它做爲background-image屬性的值。至少,函數須要3個值,它們由逗號分開。分別是:漸變應該跨越背景的方向,開始處的顏色,結束處的顏色。舉例來講:
background-image: linear-gradient(to bottom, origin, yellow);
可使用關鍵字來表示方向,好比(to bottom, to right, to bottom right, .etc)或者用角度來表示(0度表示to top, 90度表示to right, 360度表示to top.)
還能夠指定開始漸變的位置,好比說:
background-image: linear-gradient(to bottom, origin 40%, yellow);
它將從高度爲40%的地方纔開始漸變。而高度40%以前是origin顏色。
還能夠指定多個值(除了是百分比以外,還能夠是px阿等等其餘的), 好比說
background-image: linear-gradient(to bottom, yellow, origin 40%, yellow);
固然,咱們還可使用repeating-linear-gradient()還設置重複線性漸變。下面的例子,每40px(必須指定中止點)後就會重複漸變。
background-image: repeating-linear-gradient(top bottom, yellow, origin 40px);
這個屬性是用於指定當內容滾動時它們如何滾動,它有如下的值:
For example:
background: yellow linear-gradient(to bottom, yellow, origin) no-repeat left center scroll;
若是有的屬性沒有被設置值,那麼默認的值會被設置。
IE9後,能夠給一個元素添加多個背景圖片。用逗號分割開。它們的最終效果是這樣的:最前面的值在最上面,而後依次在下面,這裏須要注意。
p { background-color: orange; // 請務必要寫,由於有時候可能會加載不出來圖片或者低版本不支持background-image。 background: url(https://mdn.mozillademos.org/files/13026/fire-ball-icon.png) no-repeat 99% center, linear-gradient(to bottom, yellow, #dddd00 50%, orange); }
IE9如下不支持喲。每一個background-size,須要兩個background-size的值,一個是水平方向上的,另外一個是垂直方向上的. 一樣,px,em,rem,percentages,keywords等都支持。若是隻設置了一個值,那麼第二個值會被設置爲auto。
簡單總結一下:
For example:
// 第一個值表明左上角和右下角;第二個值表明右上角和左下角 border-radius: 20px 10px; // 第一個值表明左上角,第二個值表明右上角和左下角,第三個值表明右下角。 border-radius: 20px 10px 50px; // 第一個值:左上角,第二個值:右上角,第三個值:右下角,第四個值:左下角 border-radius: 20px 30px 40px 50px;
固然,也能夠建立橢圓形角(其中x半徑不一樣於y半徑), 兩個不一樣的半徑由'/'分割指定。
// 第一個值是x半徑,第二個值是y半徑。 border-radius: 100px / 50px; // 前兩個值表示x半徑(其中第一個值表示左上角和右下角的,第二個值表示右上角和左下角的), 後兩個表示y半徑。 border-radius: 100px 50px / 50px 25px;
屬性太多內容,MDN-border-image
IE11+ 以及其餘現代瀏覽器支持。
是將一張圖,分紅9部分,除去中間的一部分,來將其餘8部分做爲盒子的邊框。所以就會用到background-clip: padding-box;來將border部分的背景(主要是背景顏色)給裁掉。
border: 20px solid black; // 低版本瀏覽器 border-clip: padding-box; // 上面介紹了主要是爲了裁掉背景顏色 border-image-source: url(https://mdn.mozillademos.org/files/13060/border-image.png); // 設置邊框背景圖片 border-image-slice: 40; // 以40(多是像素,多是座標,根據是不是矢量圖來判斷的)。指定切片的大小是40.若是是一個值,則應用四個角 border-image-repeat: round; // 設置能夠重複
border-image-slice 能夠有多個值,它和padding與margin差很少:
<table summary="This is a test table"> <caption></caption> <thead> <tr> <th scope="col"></th> <th scope="col"></th> <th scope="col"></th> <th scope="col"></th> </tr> </thead> <tbody> <tr> <td scope="row"></td> <td></td> <td></td> <td></td> </tr> </tbody> <tfoot> <tr> <td scope="row" colspan="2"></td> <td></td> </tr> </tfoot> </table>
簡單的說明:
The first thing we need to is sort out the spacing/layout --- default table styling is so cramped(約束的,狹窄的)!To do this, add the following CSS to your style.css file:
/* spacing */ table { table-layout: fixed; width: 100%; border-collpase: collapse; border: 3px solid red; } thead th:nth-child(1) { width: 30%; } thead th:nth-child(2) { width: 20%; } thead th:nth-child(3) { width: 15%; } thead th:nth-child(4) { width: 35%; } th, td { padding: 20px; }
最重要的部分注意以下:
/* typography */ html { font-family: 'helvetica neue', helvetica, arial, sans-serif; } thead th, tfoot th { font-family: 'Rock Salt', cursive; } th { letter-spacing: 2px; } td { letter-spacing: 1px; } tbody td { text-align: center; } tfoot th { text-align: right; }
thead, tfoot { background: url(leopardskin.jpg); color: white; text-shadow: 1px 1px 1px black; } thead th, tfoot th, tfoot td { background: linear-gradient(to bottom, rgba(0,0,0,0.1), rgba(0,0,0,0.5)); border: 3px solid purple; }
tbody tr:nth-child(even) { background: red; } tbody tr:nth-child(odd) { background: green; } tbody { background: red; /*優雅降級*/ }
caption { font-family: 'Rock Salt', cursive; padding: 20px; font-style: italic; caption-side: bottom; /*設置位置在下面*/ color: #666; text-align: right; letter-spacing: 1px; }
This article acts as a box of tricks, providing an introduction to some of the advanced features available for styling boxes that don't fit into the other categories above — like box shadows, blend modes(混合模式) and filters.
/* HTML */ <article class="simple"> <p><strong>Warning</strong>: The thermostat on the cosmic transcender has reached a critical level.</p> </article> /* CSS */ p { margin: 0; } article { max-width: 500px; padding: 10px; background-color: red; background-image: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.25)); } .simple { box-shadow: 5px 5px 5px rgba(0,0,0,0.7); }
box-shadow接受四個值,分別是水平偏移量,垂直偏移量,模糊半徑,陰影顏色。
能夠設置多個box shadow,用逗號隔開。
p { margin: 0; } article { max-width: 500px; padding: 10px; background-color: red; background-image: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,0.25)); } .multiple { box-shadow: 1px 1px 1px black, 2px 2px 1px black, 3px 3px 1px red, 4px 4px 1px red, 5px 5px 1px black, 6px 6px 1px black; }
不像text-shadow,box-shadow有一個inset關鍵字能夠用。把這個屬性放在開頭,就可讓陰影成爲內陰影,而不是外陰影。
button { width: 150px; font-size: 1.1rem; line-height: 2; border-radius: 10px; border: none; background-image: linear-gradient(to bottom right, #777, #ddd); box-shadow: 1px 1px 1px black, inset 2px 3px 5px rgba(0,0,0,0.3), inset -2px -3px 5px rgba(255,255,255,0.5); } button:focus, button:hover { background-image: linear-gradient(to bottom right, #888, #eee); } button:active { box-shadow: inset 2px 2px 1px black, inset 2px 3px 5px rgba(0,0,0,0.3), inset -2px -3px 5px rgba(255,255,255,0.5); }
CSS過濾器提供了將濾鏡應用到元素的方式。有不少不一樣的選項可使用,能夠在這裏查看filter的用法。這篇文章,主要是爲了介紹語法。
濾鏡能夠應用任何元素,一些濾鏡選項能夠和其餘CSS功能很是相似的事情,好比drop-shadow(),box-shadow和text-shadow實現出來的效果差很少。其實filter的真正好處在於,they work on the exact shapes of the content inside the box(它們處理框內的內容的確切形狀。), not just the box itself as one big chunk, which can look nicer, although it may not always be want you want.下面咱們來舉個例子:
/* HTML */ <p class="filter">filter</p> <p class="box-shadow">box-shadow</p> /* CSS */ p { margin: 1em auto; padding: 20px; width: 100px; border: 5px dashed red; } .filter { -webkit-filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, 0.7)); filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, 0.7)); } .box-shadow { box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.7); }
你會發現,濾鏡drop-shadow陰影會讓文本和邊框都有陰影。box-shadow只是讓邊框有陰影。
一些注意事項:
CSS混合模式容許咱們在兩個元素重疊時爲 混合效果添加混合模式。每一個像素顯示的最終顏色將是原始像素顏色和下面圖層中像素的組合。
這有兩個屬性在CSS中使用混合模式:background-blend-mode, 它將在一個元素上設置的多個背景圖像和顏色混在一塊兒,mix-blend-mode將元素與元素混合在一塊兒,是重疊背景和內容的。
注意:混合模式是新特性,不少瀏覽器都不支持。