CSS3-08-CSS3背景與應用
title: CSS3背景與應用
date: 2022-12-07 21:53:43
tags: css3
categories: [Front,css3]
description: CSS3背景與應用
password: 19491001
CSS3背景與應用
CSS 可以新增背景顏色和背景圖片,以及來進行圖片設定。
background-color | 背景顏色 |
---|---|
background-image | 背景圖片地址 |
background-repeat | 是否平鋪 |
background-position | 背景位置 |
background-attachment | 背景固定還是滾動 |
背景的合寫(複合屬性) | |
background:背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置 |
背景圖片(image)
語法:
background-image : none | url (url)
引數:
none : 無背景圖(預設的)
url : 使用絕對或相對地址指定背景影象
background-image 屬性允許指定一個圖片展示在背景中(只有CSS3才可以多背景)可以和 background-color 連用。 如果圖片不重複地話,圖片覆蓋不到地地方都會被背景色填充。 如果有背景圖片平鋪,則會覆蓋背景顏色。
小技巧: 我們提倡 背景圖片後面的地址,url不要加引號。
快捷鍵bgi+tab,會出現background-image這個屬性的。
由於這個圖沒有300寬,因此,有一個平鋪的效果。
可以看到,預設就是repeat,平鋪的。
如圖,盒子是外邊框的大小,而圖片是裡面框的大小,因此,就平鋪了。
背景平鋪(repeat)
語法:
background-repeat : repeat | no-repeat | repeat-x | repeat-y
引數:
repeat : 背景影象在縱向和橫向上平鋪(預設的)
no-repeat : 背景影象不平鋪
repeat-x : 背景影象在橫向上平鋪
repeat-y : 背景影象在縱向平鋪
設定背景圖片時,預設把圖片在水平和垂直方向平鋪以鋪滿整個元素。
repeat-x : 背景影象在橫向上平鋪
repeat-y : 背景影象在縱向平鋪
設定背景圖片時,預設把圖片在水平和垂直方向平鋪以鋪滿整個元素。
預設是平鋪的,這裡改成no-repeat,不平鋪。
repeat-x是橫向平鋪。
repeat-y,縱向平鋪。
背景位置(position)
語法:
background-position : length || length
background-position : position || position
引數:
length : 百分數 | 由浮點數字和單位識別符號組成的長度值。請參閱長度單位
position : top | center | bottom | left | center | right
說明:
設定或檢索物件的背景影象位置。必須先指定background-image屬性。預設值為:(0% 0%)。
如果只指定了一個值,該值將用於橫座標。縱座標將預設為50%。第二個值將用於縱座標。
注意:
- position 後面是x座標和y座標。 可以使用方位名詞或者 精確單位。
- 如果和精確單位和方位名字混合使用,則必須是x座標在前,y座標後面。比如 background-position: 15px top; 則 15px 一定是 x座標 top是 y座標。
實際工作用的最多的,就是背景圖片居中對齊了。
預設是left和top,就是左上角。
右上角。
就是屬性值,bottom和right,這個誰在前,誰在後無所謂。
水平中間,垂直中間。
只寫一個方位名詞,另外一個預設就是居中的。
網頁中的座標。
我們也可以指定圖片的精確座標位置。
使用精確座標。
如果使用純方位名字的話,那麼屬性值的前後沒有順序的。
對於精確定位和混搭,屬性值都是有順序的,前面是x,後面是y。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
body {
background-color: #ccc;
}
div {
width: 400px;
height: 500px;
background-color: pink;
background-image: url(images/l.jpg);
background-repeat: no-repeat;
/* 1.利用方位名詞 top bottom 來更改背景圖片位置 */
/*background-position: left top; 預設的是 左上角 */
/*background-position: bottom right ; 方位名詞沒有順序,誰在前都可以 */
/* background-position: center center ; */
/* background-position: left; 如果方位名詞只寫一個,另外一個預設為center */
/* background-position: 10px 30px;
2. 精切單位 第一值一定是x座標 第二個值一定是y座標 */
/* 3. 混搭 */
background-position: center 10px ;
/* center 10px 水平居中的 垂直是 10px
10px center 水平10px 垂直是 居中 */
}
</style>
</head>
<body>
<div>
</div>
</body>
</html>
案例-魔獸背景圖片
圖片大小。
這就是圖是外邊這麼大,但是瀏覽器確只有裡面這麼寬。預設是左上角對齊的,因此,就是圖中顯示的樣子了。
我們想要將圖片居中對齊。注意藍色框是圖片。裡面的是瀏覽器,也就是螢幕的寬和高。
這就和官網的頁面幾乎一致了。
圖往上走了。
這就是大背景圖的做法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
body {
background-color: #000;
background-image: url(images/ms.jpg);
background-repeat: no-repeat;
/* 背景圖片的位置 水平居中 垂直靠上就可以了 */
background-position: center -25px;
}
</style>
</head>
<body>
</body>
</html>
FW是Macromedia公司推出的結合photoshop和coreldraw的一款圖形影象處理軟體。與dreamweaver、flash稱為網頁三劍客。是網頁設計的必備軟體。
背景附著(固定)
語法:
background-attachment : scroll | fixed
引數:
scroll : 背景影象是隨物件內容滾動
fixed : 背景影象固定
說明:
設定或檢索背景影象是隨物件內容滾動還是固定的。
現在拉滾動條,圖片就上去了。
預設是scroll的,就是圖片會上去。
此時拉動滾動條,只有文字會動,背景圖片是不動的。
這個就叫做背景固定。
背景簡寫
background屬性的值的書寫順序官方並沒有強制標準的。為了可讀性,建議大家如下寫:
background:背景顏色 背景圖片地址 背景平鋪 背景滾動 背景位置
background: transparent url(image.jpg) repeat-y scroll 50% 0 ;
背景位置,水平是center,垂直是100px。
注意,最後的center 100px這個背景位置是一體的,x,y座標,他倆不能夠分開的。然後其它的部分,位置順序不是嚴格規定的。
背景透明(CSS3)
CSS3支援背景半透明的寫法語法格式是:
background: rgba(0,0,0,0.3);
最後一個引數是alpha 透明度 取值範圍 0~1之間
注意: 背景半透明是指盒子背景半透明, 盒子裡面的內容不受影響。
這是之前的內容的顏色半透明。
如上,這是內容的半透明。
我們的盒子,也是可以半透明的,也就是背景半透明的。
例如,這裡就是半透明的。
看著圖有點偏,原因就是圖很大。沒有那麼大的瀏覽器的。預設圖是在左上角對齊的。
此時圖片就居中了。
一個div盒子。
現在想要這個盒子能夠半透明的。
此時就是半透明的了。
背景縮放(CSS3)
通過background-size設定背景圖片的尺寸,就像我們設定img的尺寸一樣,在移動Web開發中做螢幕適配應用非常廣泛。
其引數設定如下:
a) 可以設定長度單位(px)或百分比(設定百分比時,參照盒子的寬高)
b) 設定為cover時,會自動調整縮放比例,保證圖片始終填充滿背景區域,如有溢位部分則會被隱藏。我們平時用的cover 最多
c) 設定為contain會自動調整縮放比例,保證圖片始終完整顯示在背景區域。
background-image: url('images/gyt.jpg');
background-size: 300px 100px;
/* background-size: contain; */
/* background-size: cover; */
我們知道,圖片大小是固定的,那麼圖片作為盒子的背景圖片的時候,能否跟著進行縮放呢?
在css3新特性中是可以支援的。
background-size,用來設定背景圖片的尺寸。
img是插入圖片,不是背景圖片。
儘量不要寬和高一起改,因為不能很好的控制比例,因此,給定一個高或者寬即可,能夠自動進行等比例縮放的。
還可以使用百分比的形式。
因此,可以使用精確單位,也可以使用百分比的方式。
前面的背景縮放,沒有將div這個盒子充滿。
可以手動的指定背景圖片的寬高,充滿盒子。
但是這樣寫,不方便,而且圖片也失真了。
可以看到圖片也沒有失去比例。
縮放的方式是這樣的,圖片往下放大,高度和盒子一樣高了,但是寬度還沒有到,因此,繼續等比例的放大。
直到寬度和盒子一樣大小為止。
由於是等比例縮放的,所以,此時下面多出來的部分就被隱藏了。
圖片正常比例顯示,但是盒子有一部分漏出了。
contain是這樣,等比例放大,然後首先發現高度滿足了盒子的高度了,此時圖片就不會再進行縮放了。因此,寬度還沒有滿足盒子的寬度,因此,背景色就會漏出。
如果圖片是這樣的,那麼就是首先寬度滿足了盒子了,那麼此時高度就不會再變了,圖片不會再進行縮放了。此時低下背景色就會漏出了。
我們平時使用cover較多。
多背景(CSS3)
以逗號分隔可以設定多背景,可用於自適應佈局 做法就是 用逗號隔開就好了。
- 一個元素可以設定多重背景影象。
- 每組屬性間使用逗號分隔。
- 如果設定的多重背景圖之間存在著交集(即存在著重疊關係),前面的背景圖會覆蓋在後面的背景圖之上。
- 為了避免背景色將影象蓋住,背景色通常都定義在最後一組上,
background:url(test1.jpg) no-repeat scroll 10px 20px/50px 60px ,
url(test1.jpg) no-repeat scroll 10px 20px/70px 90px ,
url(test1.jpg) no-repeat scroll 10px 20px/110px 130px c #aaa;
我們是否可以在一個盒子上放置多張圖片呢,如圖,左上角放一張圖片,右下角放一張圖片。
在css3中,是支援的。
放置兩張背景圖片,此時盒子沒有背景顏色呢,背景顏色是有講究的。
此時兩張背景圖片是有交集的。有重疊的。
前面的將後面的覆蓋了。
現在背景顏色放在了第一組上。
背景圖片都沒有了。因此,要求,背景顏色,需要放在最後一組上。
凹凸文字
<head>
<meta charset="utf-8">
<style>
body {
background-color: #ccc;
}
div {
color: #ccc;
font: 700 80px "微軟雅黑";
}
div:first-child {
/* text-shadow: 水平位置 垂直位置 模糊距離 陰影顏色; */
text-shadow: 1px 1px 1px #000, -1px -1px 1px #fff;
}
div:last-child {
/* text-shadow: 水平位置 垂直位置 模糊距離 陰影顏色; */
text-shadow: -1px -1px 1px #000, 1px 1px 1px #fff;
}
</style>
</head>
<body>
<div>我是凸起的文字</div>
<div>我是凹下的文字</div>
</body>
文字陰影也是可以新增多個的。
現在文字和背景顏色一樣了,給文字新增凸起效果。
上面是亮光效果。下面是影子效果。
此時文字看不到了。
用滑鼠滑動,能夠看到文字。
文字的陰影,也是可以新增多個的,也是使用逗號分隔的。多陰影。
上面是陰影是白色,下面陰影是黑色。
這樣更加具有立體感了。
上邊,左邊是白色的。右邊下邊是黑色的。
凹下去的。
這就是通過文字陰影來實現的。
導航欄案例-王者榮耀導航欄
圖中這個導航欄效果我們可以做。
滑鼠放到連結上,要變換背景。
寬,高,手工通過軟體去量的。
a是行內元素,對寬高沒有效果的。
因此,我們可以將其轉為塊級元素。
但是現在每個佔一行了。
因此,可以使用行內塊元素。
我們可以讓a的行高等於盒子的高度,這樣文字就垂直居中了。
實際上是讓文字內容的行高(行間距)等於a這個盒子的高。
注意,使文字在盒子中垂直居中,前提是這個盒子裡只有一行文字,如果是多行文字就不行了。
這裡面的下劃線如何去掉呢?下面說明。
文字的裝飾
text-decoration 通常我們用於給連結修改裝飾效果
值 | 描述 |
---|---|
none | 預設。定義標準的文字。 |
underline | 定義文字下的一條線。下劃線 也是我們連結自帶的 |
overline | 定義文字上的一條線。 |
line-through | 定義穿過文字下的一條線。 |
使用技巧:在一行內的盒子內,我們設定行高等於盒子的高度,就可以使文字垂直居中。
注意,只有連結的文字,預設是有下劃線的,其他的文字預設都是none的,也就是標準文字沒有線的。
取消背景色。
此時滑鼠放上去,就有背景了。