摘要:半透明邊框默認情況下,背景會延伸到邊框所在的區域下層。連續的圖像邊框思路就是在圖片之上,再疊加一層純白的實色背景。為了讓下層的圖片背景透過邊框區域顯示出來,需要給兩層背景指定不同的值。
1.半透明邊框
默認情況下,背景會延伸到邊框所在的區域下層??梢酝ㄟ^background-clip 屬性來調整。這個屬性的初始值是border-box,意味著背景會被元素的border-box(邊框的外沿框)裁切掉。設置為padding-box,背景不會透過邊框所在的范圍,覽器就會用內邊距的外沿來把背景裁切掉。
border: 10px solid pink; background: red; background-clip: padding-box;
效果如下:
2.多重邊框
實現的辦法入下:
(1) box-shadow的方式
它支持逗號分隔語法,所以可以創建任意數量的投影。box-shadow會跟隨元素的形狀,元素設置border-radius時,它會沿著這個圓角顯示
.div { width: 40px; height: 40px; background: yellowgreen; box-shadow: 0 0 0 10px #655, /* 想在外圈再加一道5px 的外框,那就需要指定擴張半徑的值為15px(10px+5px) */ 0 0 0 15px deeppink, 0 2px 5px 15px rgba(0,0,0,.6); }
效果如下:
(2)outline實現方案
outline的實現只適用于實現兩層邊框,通過一層border和一層outline
background: yellowgreen; border: 10px solid #655; outline: 5px solid deeppink;
用outline邊框樣式十分靈活,不像box-shadow 方案只能模擬實線邊框,假設我們需要產生虛線邊框效果,box-shadow 就沒辦法了。
outline(描邊) 不會跟隨div的圓角的設置,還是會顯示直角的樣式
3 靈活的背景定位
(1) background-position
它允許我們指定背景圖片距離任意角的偏移量,只要我們在偏移量前面指定關鍵字。
/* 背景圖片跟右邊緣保持20px 的偏移量,同時跟底邊保持10px 的偏移量 */ background-position: right 20px bottom 10px;
(2) background-origin
默認情況下,background-position 是以padding-box 為準的,這樣邊框才不會遮住背景圖片。因此,top、left 默認指的是padding-box 的左上角
background-origin,可以改變這種行為。在默認情況下,它的值是padding-box。如果把它的值改成content-box,在background-position 屬性中使用的邊角關鍵字將會以內容區的邊緣作為基準。
每個元素身上都存在三個矩形框,border box(邊框的外沿框)、padding box(內邊距的外沿框)和content box(內容區的外沿框)。
background-origin的值分別是上面的三種
4.邊框內圓角
實現方式是使用box-shadow和outline的方式
div { background: tan; border-radius: .8em; padding: 1em; box-shadow: 0 0 0 .6em #655; outline: .6em solid #655; }
主要原因是:描邊并不會跟著元素的圓角走(因而顯示出直角),但box-shadow 卻是會的。
5.條紋背景
(1) 水平條紋的實現
/* *0 會被解析成30%,在css的規定中如果某個色標的位置值比整個列表中在它之前的色標的位置值都要小,則該色標的位置值會被設置為它前面所有色標位置值的最大值 * 等同于 background: linear-gradient(#fb3 30%, #58a 30%); */ background: linear-gradient(#fb3 30%, #58a 0); background-size: 100% 30px;
(2) 垂直條紋
background: linear-gradient(to right, #fb3 50%, #58a 0); background-size: 30px 100%;
(3) 斜向條紋
div { background: repeating-linear-gradient(45deg, #fb3, #fb3 15px, #58a 0, #58a 30px); }
(4) 靈活的同色系條紋
通過把最深的顏色指定為背景色,同時把半透明白色的條紋疊加在背景色之上來得到淺色條紋。好處是只需要修改一個地方就可以改變所有顏色。
div { background-image: repeating-linear-gradient(30deg, hsla(0, 0%, 100%, .1), hsla(0, 0%, 100%, .1) 15px, transparent 0, transparent 30px); }
6.各種網格背景的實現
把多個漸變圖案組合起來,讓它們透過彼此的透明區域顯現時可以創建各種網格圖案。
網格中每個格子的大小可以調整,而網格線條的粗細同時保持固定時,就應該使用長度而不是百分比作為。舉例來說,類似圖紙輔助線的網格就是這種情況。
div { width: 200px; height: 200px; background: white; background-image: linear-gradient(90deg, rgba(200,0,0,.5) 50%, transparent 0), linear-gradient( rgba(200,0,0,.5) 50%, transparent 0); background-size: 30px 30px; }
div { width: 200px; height: 200px; background: #58a; background-image: linear-gradient(white 1px, transparent 0), linear-gradient(90deg, white 1px, transparent 0); background-size: 30px 30px; }
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: 75px 75px, 75px 75px, 15px 15px, 15px 15px; }
7.波點效果的實現
div { width: 200px; height: 200px; background: #655; background-image: radial-gradient(tan 30%, transparent 0), radial-gradient(tan 30%, transparent 0); background-size: 30px 30px; background-position: 0 0, 15px 15px; }
8.棋盤圖案的漸變
(1)思路是用兩個直角三角形來拼合出方塊,再把第二層漸變在水平和垂直方向均移動貼片長度的一半,就可以把它們拼合成一個完整的方塊。
div { width: 200px; height: 200px; 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; }
(2)svg的方式
svg { background: #eee url("data:image/svg+xml, "); background-size: 30px 30px; }
9.偽隨機背景
使用的是 “蟬原則”,就是通過質數來增加隨機真實性。比如設計一個沒有規律的線性漸變就可以使用這種方式。
.random { width: 200px; height: 200px; 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 41px, transparent 0); background-size: 41px 100%, 61px 100%, 83px 100%; }
這種蟬原則,同樣適用于:
(1) 在照片圖庫中,為每幅圖片應用細微的偽隨機旋轉效果時,可以使用多個:nth-child(a) 選擇符,且讓a 是質數。
?(2) 如果要生成一個動畫,而且想讓它看起來不是按照明顯的規律在循環時,我們可以應用多個時長為質數的動畫。
8.連續的圖像邊框
思路就是在圖片之上,再疊加一層純白的實色背景。為了讓下層的圖片背景透過邊框區域顯示出來,需要給兩層背景指定不同的background-clip 值。最后一個要點在于,在多重背景的最底層設置背景色,需要用一道從白色過渡到白色的CSS 漸變來模擬出純白實色背景的效果。
.border-img { width: 200px; height: 200px; padding: 1em; border: 1em solid transparent; background: linear-gradient(white, white), url(dog.jpg); background-size: cover; background-clip: padding-box, border-box; background-origin: border-box; }
這個技巧同樣適合漸變的圖案。比如:信封的樣式。
div { width: 200px; height: 100px; padding: 16px; border: 16px solid transparent; background: linear-gradient(white, white) padding-box, repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0 / 5em 5em; }
還可以實現虛線滾動框
@keyframes ants { to { background-position: 100%; } } .dotted{ margin-top: 20px; margin-bottom: 20px; padding: 1em; border: 1px solid transparent; background: linear-gradient(white, white) padding-box, repeating-linear-gradient(-45deg, black 0, black 25%, white 0, white 50%) 0 / .6em .6em; animation: ants 12s linear infinite; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/112031.html
摘要:另外一種實現思路是添加四個來分別實現上下左右的邊框效果,雖然可行,但是要添加四個額外元素,有點兒得不償失的感覺。背景 這幾天工作中遇到一個交互需求,要求實現一個效果,當鼠標移入一個元素的時候,元素出現一個動態的邊框,如圖: showImg(https://user-gold-cdn.xitu.io/2019/5/15/16aba8a2ccb58e4e);動態邊框 思路 看到這個效果,我首先想...
摘要:給一個容器設置一層白色背景和一道半透明白色邊框。思路實際是設置的背景會延伸到邊框所在的區域的下層,可以通過屬性調整背景的默認行為。優點邊框樣式十分靈活。缺點只適用于雙層邊框的場景邊框不一定會貼合屬性產生的圓角。 1.給一個容器設置一層白色背景和一道半透明白色邊框。 思路:實際是設置的背景會延伸到邊框所在的區域的下層,可以通過background-clip屬性調整背景的默認行為。 bac...
摘要:半透明邊框相關語法多重邊框方案需要注意的是,上面所創建的邊框是偽邊框,并不響應鼠標事件。方案以左上角為基準。圖像邊框連續的圖像邊框屬性規定背景的繪制區域。 半透明邊框 border:10px solid hsla(0,0%,100%,.5); background: white; background-clip: padding-box; showImg(htt...
摘要:簡單就意味著更快的開發速度,更小的維護成本,同時往往具有更好的體驗下面我介紹哪些或許你不知道小技巧。默認為,此時陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過目前取透明。首先,我們要明白這里的最小寬度值是什么意思。 暑假實習的時候帶我的師傅,告訴我要注重基礎,底層實現原理。才能在日新月異的技術行業站住腳跟,以不變應萬變,萬丈高樓平地起,所以我們應該不斷的去學習,去交流。...
摘要:簡單就意味著更快的開發速度,更小的維護成本,同時往往具有更好的體驗下面我介紹哪些或許你不知道小技巧。默認為,此時陰影與元素同樣大。如果沒有指定,則由瀏覽器決定通常是的值,不過目前取透明。首先,我們要明白這里的最小寬度值是什么意思。 暑假實習的時候帶我的師傅,告訴我要注重基礎,底層實現原理。才能在日新月異的技術行業站住腳跟,以不變應萬變,萬丈高樓平地起,所以我們應該不斷的去學習,去交流。...
閱讀 2925·2023-04-26 02:22
閱讀 2286·2021-11-17 09:33
閱讀 3127·2021-09-22 16:06
閱讀 1062·2021-09-22 15:54
閱讀 3530·2019-08-29 13:44
閱讀 1905·2019-08-29 12:37
閱讀 1315·2019-08-26 14:04
閱讀 1905·2019-08-26 11:57