砂玻璃效果已經在互聯網上流行了很多年,Mac OS以其磨砂玻璃效果而聞名,Windows 10也通過其他一些燈光,深度,運動,材質,比例尺實現了磨砂玻璃的效果
在CSS中使用磨砂玻璃效果時,我們中的一些人知道該怎么做,而其他人仍會在百度搜索:
“ css光澤效果”
“ css毛玻璃”
“透明模糊背景css”
“毛玻璃效果photoshop”
“僅cs模糊背景”
“ css玻璃窗格”
“ css背景濾鏡”
“ css模糊覆蓋物”
“ css div后面的模糊背景”
今天,我將展示僅CSS的一種方法,教你可以使用該方法在CSS中進行磨砂玻璃效果。
為簡單起見,我將向你展示如何在空的div上制作磨砂玻璃效果。因此,HTML中所需的只是一個空的div。
<div> </div>
*{
margin: 0;
padding: 0;
}
我們需要我們的背景占據頁面的整個寬度和高度,并且我們不想重復我們的背景,我們也希望我們的背景是固定的。我們希望背景是固定的,因為我們不希望以后在繼承背景時將整個背景顯示在div中。
body{
background-image: url(http://bit.ly/2gPLxZ4); //add "" if you want
background-repeat: no-repeat;
background-attachment: fixed;
background-size: cover;
}
現在,我們將使用背景繼承為div設置一些寬度和高度。我們還需要確定絕對位置,以確保疊加層不會占用網頁的整個寬度和高度
div{
background: inherit;
width: 250px;
height: 350px;
position: absolute;
}
現在,我們知道在固定了背景附件的情況下,我們只能看到div后面的div內部的背景圖像區域,而這正是我們希望毛玻璃效果起作用的地方
我們需要content: “”確保之前的偽類能夠正常工作。我們還從其父級繼承了背景,并且我們使用絕對位置將其在其父元素DIV中對齊。我們正在使用盒子陰影添加白色透明疊加層,并且正在使用模糊來模糊該疊加層。
div:before{
content: “ ”;
background: inherit;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
box-shadow: inset 0 0 0 3000px rgba(255,255,255,0.3);
filter: blur(10px);
}
現在,我們需要修復div的未模糊邊緣,為此,我們需要增加疊加層的尺寸,使其比其父尺寸稍高一些,然后將其上下位置設為負(-25)。我們還需要給它的父對象提供隱藏的溢出,以確保父DIV之外的任何覆蓋都不會顯示并被隱藏。
div{
background: inherit;
width: 250px;
height: 350px;
position: absolute;
overflow: hidden; //adding overflow hidden
}
div:before{
content: ‘’;
width: 300px;
height: 400px;
background: inherit;
position: absolute;
left: -25px; //giving minus -25px left position
right: 0;
top: -25px; //giving minus -25px top position
bottom: 0;
box-shadow: inset 0 0 0 200px rgba(255,255,255,0.3);
filter: blur(10px);
}
到這里,我們就實現了CSS的磨砂玻璃效果
你還可以使用CSS屬性“backdrop-filter: blur(20px)”來實現此效果,該屬性在工作方面要容易得多,并且是更好的選擇,但兼容性還不是很強。
ackground可以幫助前端er們豐富元素的背景,讓網頁更加絢爛,是一個使用頻率很高的屬性。首先,我們會先介紹background-color、background-image、background-repeat、background-attachment、background-position基礎屬性。
1 background-color : 為元素設置背景顏色,會填充元素的內容、內邊距、邊框。如果邊框有透明部分,會透過這些透明部分顯示出背景色
值:
color_name 如:red hex_number 如:#f00 rgb_number 如:rgb(0,0,0) transparent 默認,透明 inherit 繼承父元素
添加以下截圖右側代碼可看出來“如果邊框有透明部分,會透過這些透明部分顯示出背景色”
2 background-image :為元素設置背景圖片(默認以內邊距為起點)
值:
url 圖片路徑 none 不顯示背景圖片 inherit 父元素繼承
添加以下截圖右側代碼可看出來“默認以內邊距為起點”
3 background-repeat:是否及如何重復背景圖片(位置根據background-position設置)
值:
repeat 默認。背景圖像將在垂直方向和水平方向重復 repeat-x 背景圖像將在水平方向重復 repeat-y 背景圖像將在垂直方向重復 no-repeat 背景圖像不重復 inherit 繼承父元素
若給元素添加透明的border,可看出來“圖片的重復會在border上起作用”
4 background-attachment 設置背景圖片是否固定或者跟隨頁面滾動(這里一般用于body或者html上)
值:
scroll 跟隨頁面滾動 fixed 固定 inherit 繼承父元素
5 background-position :設置背景圖片的起始位置
值:
top/left/center/right/bottom x% y% (相對于父元素的位置) xpos ypos
若給元素添加background-position:100% 100%,可以看到背景圖片已經被定為在元素的右下角。
tips:background-position一般最多運用在雪碧圖當中來移動背景圖片的位置。
如果我們將該圖片看成是一張雪碧圖,想只展示從嘴巴往右及往下的部分則可以利用background-position將圖片往左移動,將嘴巴部分移動到原點展示
像以上所有的屬性,其實可以加些成以下形式:background:color image repeat fixed postion
在css3,背景相關的屬性在原有的基礎上,新增了background-size、background-origin 、background-clip 。下面一一講解一下~
6 background-size :規定背景圖像的尺寸
值:
length 第一個值是寬度,第二值是高度;如果只設置一個值,第二個值默認是auto percentage 以父元素的百分比來設置寬度和高度;如果只設置一個值,第二個值默認是auto cover 把背景圖像擴展至足夠大,以使背景圖像完全覆蓋背景區域 contain 把圖像圖像擴展至最大尺寸,以使其寬度和高度完全適應內容區域。
6.1 將元素的background-size設置成cover,圖片(100*133)長>寬,會把圖片的最小邊去擴大至適應到元素對應的邊,將整個圖片平鋪在元素上,盡量讓元素內填充圖片。
tips:可以看出來背景是相對于padding-box為起始位置繪制,不過,右側和下側的透明border還會被繪制
6.2 將元素的background-size設置成contain,圖片(100*133)長>寬,會把圖片的最長邊去擴大至適應到元素對應的邊,將圖片全部展示在元素上。
6.3 不設置background-size,圖片(225*300)長>寬,會按照圖片原始尺寸展示在元素內。
6.4 不設置background-size,圖片原尺寸為:225*300,會按照設置的size展示在元素上。
tips:1.這里用的比較多的是在移動端的背景圖片,我們的設計師一般設計的移動端設計稿為三倍圖。我們在運用到頁面上時,一般會在原來的尺寸基礎上縮小三倍。 2.這里建議x方向設置為具體值,y方向設置為auto。一方面,y向的尺寸會自動計算自適應;二方面,以后雪碧圖有修改,可以直接在y方向上增加,不用再修改代碼。不至于因為修改了圖片沒有修改代碼帶來bug。
7 background-origin 規定了background-position屬性相對于什么位置來定位
值:
padding-box 相對于內邊距來定位(默認) border-box 相對于邊框盒來定位 content-box 相對于內容框來定位
給元素添加background-origin:content-box 可以看出來,背景圖片是相對于內容框開始繪制
不同屬性設置對比
望收藏了我寫的文章的你同時可以關注一下“小海前端”,因為這些文章都是連載的,并且是經過我系統的歸納過的。
【技術等級】初級
【承接文章】《在CSS中使用background屬性,調整頁面和塊背景,系統講解背景屬性》
本文承接上一篇文章中所講到的background屬性,通過幾個簡單實用的小例子,學些背景效果的各種實現方式。本文屬于前端開發的初級教程,適合于剛剛開始接觸CSS技術的學習者。
所承接的上一篇文章中,主要介紹了下列背景屬性:
background-color
background-image
background-repeat
background-position
background-attachment
本文在上一篇文章的基礎上,復習和鞏固這五個屬性的具體用法。
首先制作一張水印效果的圖片。該圖片的內容透明度較低,圖片較小。本例中制作了一個寬度為290像素,高度為205像素的圖片。該圖片的文件名為back01.jpg。圖片內容為兩行文本,顏色為黑色,同時調整了兩行文本的不透明度。圖片效果如下所示,大家也可以根據自己喜好利用Photoshop隨意制作。
例1素材圖片 back01.jpg
為頁面添加如下代碼在<head></head>標記對中:
<style type="text/css">
body{background-image:url("back01.jpg");}
</style>
由于圖片本身的尺寸遠遠小于整個頁面的大小,所以在默認情況下,該圖片會在頁面中平鋪以產生下列背景效果。
例1最終效果圖
首先制作一張花邊圖片。該圖片包含一個花邊圖樣,圖片較小。本例中制作了一個寬度為172像素,高度為36像素的圖片。該圖片的文件名為back02.jpg。圖片效果為:
例2 素材圖 back02.jpg
為頁面添加如下代碼在<head></head>標記對中:
<style type="text/css">
body{
background-image:url("back02.jpg");
background-repeat:repeat-x;
}
</style>
由于圖片本身的尺寸遠遠小于整個頁面的大小,同時又設置為水平方向平鋪,所以該圖片會在頁面中產生下列背景效果。
例2最終效果圖
首先制作一張漸變圖片。該圖片包含自上而下的藍白漸變。本例中制作了一個寬度為1像素,高度為200像素的圖片。該圖片的文件名為back03.jpg。圖片效果為:
例3 素材圖片 back03.jpg
為頁面添加如下代碼在<head></head>標記對中:
<style type="text/css">
body{
background-image:url("back03.jpg");
background-repeat:repeat-x;
}
</style>
由于圖片的寬度遠遠小于整個頁面的寬度,同時又設置了水平方向平鋪,所以該圖片該圖片會在頁面中產生下列背景效果。
同時,由于頁面本身的顏色默認為白色,因此,該漸變色下方的白色與頁面背景顏色融合。因此,當頁面過長產生垂直滾動條后,不會影響背景顏色的自然過渡。
那么,若需要給頁面背景添加自上而下的白藍漸變,應該如何設置呢?漸變色下方的藍色與頁面背景無法融合,會產生明顯的藍白邊界。該問題的解決方法是將頁面的背景顏色由默認的白色調整為漸變色下方的顏色即可。代碼如下:
<style type="text/css">
body{
background-image:url("back03.jpg");
background-repeat:repeat-x;
background-color:# 8181fc; //漸變色下方的藍色
}
</style>
首先制作一張可以居中放置的圖片。本例中制作了一個寬度為500像素,高度為500像素的圖片。該圖片的文件名為back04.jpg。圖片效果為:
例4 素材圖片 back04.jpg
實現該效果的代碼如下所示。
<style type="text/css">
body{
background-image:url("back04.jpg"); //加載圖片
background-repeat:no-repeat; //設置不平鋪
background-position:center center; //位置在頁面中心
background-attachment:fixed; //頁面滾動時圖片固定
}
</style>
下一篇文章中,小海老師會帶領大家學習CSS中功能強大的圖片精靈技術(CSS Sprite)。對于渴望在前端開發道路上前進的你一定不能錯過!
如果大家希望得到更加全面的關于HTML和CSS技術講解的內容,可以私信我,我會免費將小海老師自己編寫的HTML和CSS的PDF教材發給你,幫助你在前端開發的道路上闊步前行。
在頭條上發表的這些文章都是從前端開發的基礎開始一步一步講起的。我非常希望能有更多的前端開發初學者通過我寫的文章,逐步學到一定的知識,甚至慢慢有了入門的感覺。這些文章都是我這幾年教學過程中的經驗,每寫一篇時我都盡量把握好措辭,用簡單易懂的語言描述,同時精心設計版面,讓版面更加豐富,激發閱讀興趣。所以,每一篇文章可能篇幅不長,但是都要耗費小海老師很久的時間。
希望收藏了我寫的文章的你同時可以關注一下“小海前端”,因為這些文章都是連載的,并且是經過我系統的歸納過的。
關注“小海前端”,我會繼續為大家奉上更加深入的前端開發文章,也希望更多的初學者跟著學下去,我們共同將前端開發的路努力堅持的走下去。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。