實現效果:css
將背景圖定位到距離容器底邊 10px 且距離右邊 20px 的位置。html
background-position 方案瀏覽器
實現代碼:svg
<div>海盜密碼</div>
div { /* 關鍵樣式 */ background: url(http://csssecrets.io/images/code-pirate.svg) no-repeat bottom right #58a; background-position: right 20px bottom 10px; /* 其它樣式 */ max-width: 10em; min-height: 5em; padding: 10px; color: white; font: 100%/1 sans-serif; }
實現要點:url
background-position
容許咱們指定背景圖片距離任意角的偏移量,只要咱們在偏移量前面指定關鍵字。本例就是設置背景圖片離右邊緣 20px,離底邊 10px。background-position
這種語法的瀏覽器,提供一個合適的回退方案,那就是使用 background
的 bottom right
來定位,雖然不能設置具體的偏移量。background-origin 方案spa
實現代碼:code
<div>海盜密碼</div>
div { /* 關鍵樣式 */ background: url(http://csssecrets.io/images/code-pirate.svg) no-repeat bottom right #58a; background-origin: content-box; padding: 10px 20px; /* 其它樣式 */ max-width: 10em; min-height: 5em; color: white; font: 100%/1 sans-serif; }
實現要點:htm
background-origin
默認值是 padding-box
,也就說咱們設置 background
爲 top left
時左上角是 padding box(內邊距的外沿框)的左上角。background-origin
爲 content-box
,那麼就相對於 content box(內容區的外沿框)的左上角,那麼也就是背景圖離容器的右邊和底邊的偏移量是跟着容器的 padding 值走了,那設置 padding: 10px 20px;
天然就能夠實現本例的效果了。calc() 方案blog
實現代碼:圖片
<div>海盜密碼</div>
div { /* 關鍵樣式 */ background: url(http://csssecrets.io/images/code-pirate.svg) no-repeat bottom right #58a; background-position: calc(100% - 20px) calc(100% - 10px); /* 其它樣式 */ max-width: 10em; min-height: 5em; padding: 10px; color: white; font: 100%/1 sans-serif; }
實現要點:
calc
來動態計算使得背景圖的左上角水平偏移 100% - 20px
,垂直偏移 100% - 10px
。水平條紋
實現效果:
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: linear-gradient(#fb3 50%, #58a 0); background-size: 100% 30px; /* 其它樣式 */ width: 300px; height: 200px; }
實現要點:
linear-gradient(#fb3 50%, #58a 0)
生成一個背景圖,該背景圖分爲上下不一樣實色的兩部分,佔滿容器大小。background-size:100% 30px;
設置該背景圖的寬高(寬爲容器寬度,高爲30px),因爲默認狀況下背景是重複平鋪的,這樣整個容器就鋪滿高爲 30px 的雙色水平條紋。垂直條紋
實現效果:
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: linear-gradient(to right, #fb3 50%, #58a 0); background-size: 30px 100%; /* 其它樣式 */ width: 300px; height: 200px; }
實現要點:
linear-gradient(to right, #fb3 50%, #58a 0)
生成一個背景圖,該背景圖分爲左右不一樣實色的兩部分(to right
改變漸變的方向,從上下該爲左右),佔滿容器大小。background-size:30px 100%;
設置該背景圖的寬高(寬爲 30px,高爲容器高度),因爲默認狀況下背景是重複平鋪的,這樣整個容器就鋪滿寬爲 30px 的雙色水平垂直條紋。斜向條紋
實現效果:
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: linear-gradient(45deg, #fb3 25%, #58a 0, #58a 50%, #fb3 0, #fb3 75%, #58a 0); background-size: 42.4px 42.4px; /* 其它樣式 */ width: 300px; height: 200px; }
實現要點:
linear-gradient(45deg, #fb3 25%, #58a 0, #58a 50%,#fb3 0, #fb3 75%, #58a 0)
生成一個以下圖的可重複鋪設的背景圖(重點是修改漸變方向爲 45 度,四條條紋)。background-size: 42.4px 42.4px;
設置背景尺寸。42.4px
是經過勾股定理求得(在咱們的斜向條紋中,背景尺寸指定的是直角三角形的斜邊長度,但條紋的寬度其實是直角三角形的高,因此要讓條紋寬度爲 15px,就必須近似設置背景尺寸爲 42.4px)。可靈活設置角度的斜向條紋
實現效果:
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: repeating-linear-gradient(60deg, #fb3, #fb3 15px, #58a 0, #58a 30px); /* 其它樣式 */ width: 300px; height: 200px; }
實現要點:
repeating-linear-gradient
生成色標是無限循環重複的,直到填滿整個背景。不須要經過 background-size
設置背景尺寸,並且也不用考慮斜邊的問題,由於在漸變軸設置的長度就是條紋的寬度。最重要的一點是能夠靈活設置任意角度的條紋,只要修改一處角度就能夠。網格
實現效果:
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: #58a; background-image: linear-gradient(white 2px, transparent 0), linear-gradient(90deg, white 2px, transparent 0), linear-gradient(hsla(0,0%,100%,.3) 1px, transparent 0), linear-gradient(90deg, hsla(0,0%,100%,.3) 1px, transparent 0); background-size: 50px 50px, 50px 50px, 10px 10px, 10px 10px; /* 其它樣式 */ width: 300px; height: 200px; }
實現要點:
波點
實現效果:
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: #655; background-image: radial-gradient(tan 20%, transparent 0), radial-gradient(tan 20%, transparent 0); background-size: 30px 30px; background-position: 0 0, 15px 15px; /* 其它樣式 */ width: 300px; height: 200px; }
實現要點:
radial-gradient
來建立圓形、橢圓,或者它們的一部分。本例使用它實現圓點的陣列。棋盤
實現效果:
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: #eee; background-image: linear-gradient(45deg, rgba(0,0,0,.25) 25%, transparent 0, transparent 75%, rgba(0,0,0,.25) 0), linear-gradient(45deg, rgba(0,0,0,.25) 25%, transparent 0, transparent 75%, rgba(0,0,0,.25) 0); background-position: 0 0, 15px 15px; background-size: 30px 30px; /* 其它樣式 */ width: 300px; height: 200px; }
實現效果:
重複平鋪的幾何圖案很美觀,但看起來可能有一些呆板。其實天然界中的事物都不是以無限平鋪的方式存在的。即便重複,也每每伴隨着多樣性和隨機性。所以爲了更天然一些,咱們可能須要實現的背景隨機一些,這樣就顯得天然一點。
實現代碼:
<div></div>
div { /* 關鍵樣式 */ background: hsl(20, 40%, 90%); background-image: linear-gradient(90deg, #fb3 11px, transparent 0), linear-gradient(90deg, #ab4 23px, transparent 0), linear-gradient(90deg, #655 23px, transparent 0); background-size: 83px 100%, 61px 100%, 41px 100%; /* 其它樣式 */ width: 300px; height: 200px; }
實現要點:
摘自:《CSS揭祕》 第 2 章 背景與邊框