1. 程式人生 > 其它 >部落格裝修計劃--新增標題背景

部落格裝修計劃--新增標題背景

#blogTitle新增背景
修改前:

修改後:

最終修改的程式碼:

#blogTitle{
    background-image:url(https://images.cnblogs.com/cnblogs_com/liulangbxc/1949195/o_210627081116pixelisland.jpg) ;
    background-size: cover;
    height:374px;
    padding: 40px 20px 10px;
    background-color: white;
    background-position: bottom -35px center;
}

padding調整的是標題與背景的相對位置

重點是background系列屬性:
background-image、background-position、background-size

background-image

該屬性屬性用於為一個元素設定一個或者多個背景影象。

background-image: url("../../media/examples/lizard.png"),
		url("../../media/examples/star.png");

在繪製時,影象以 z 方向堆疊的方式進行。先指定的影象會在之後指定的影象上面繪製。因此指定的第一個影象“最接近使用者”。
然後元素的邊框 border 會在它們之上被繪製,而 background-color 會在它們之下繪製。影象的繪製與盒子以及盒子的邊框的關係,需要在CSS屬性background-clip 和 background-origin 中定義。
如果一個指定的影象無法被繪製 (比如,被指定的 URI 所表示的檔案無法被載入),瀏覽器會將此情況等同於其值被設為 none。
注意: 即使影象是不透明的,背景色在通常情況下並不會被顯示,web開發者仍然應該指定 background-color 屬性。如果影象無法被載入—例如,在網路連線斷開的情況下—背景色就會被繪製。

background-size

設定背景圖片大小。圖片可以保有其原有的尺寸,或者拉伸到新的尺寸,或者在保持其原有比例的同時縮放到元素的可用空間的尺寸。

屬性值:

/* 關鍵字 */
background-size: cover
background-size: contain


/* 一個值: 這個值指定圖片的寬度,圖片的高度隱式的為auto */
background-size: 50%
background-size: 3em
background-size: 12px
background-size: auto


/* 兩個值 */
/* 第一個值指定圖片的寬度,第二個值指定圖片的高度 */
background-size: 50% auto
background-size: 3em 25%
background-size: auto 6px
background-size: auto auto


/* 逗號分隔的多個值:設定多重背景 */
background-size: auto, auto     /* 不同於background-size: auto auto */
background-size: 50%, 25%, 25%
background-size: 6px, auto, contain


/* 全域性屬性 */
background-size: inherit;
background-size: initial;
background-size: unset;

cover
縮放背景圖片以完全覆蓋背景區,可能背景圖片部分看不見。
和 contain 值相反,cover 值儘可能大的縮放背景影象並保持影象的寬高比例(影象不會被壓扁)。
該背景圖以它的全部寬或者高覆蓋所在容器。當容器和背景圖大小不同時,背景圖的 左/右 或者 上/下 部分會被裁剪。
如下圖:

contain
縮放背景圖片以完全裝入背景區,可能背景區部分空白。
contain 儘可能的縮放背景並保持影象的寬高比例(影象不會被壓縮)。
該背景圖會填充所在的容器。當背景圖和容器的大小的不同時,容器的空白區域(上/下或者左/右)會顯示由 background-color 設定的背景顏色。
如下圖:

再新增一條屬性去除重複:background-repeat: no-repeat;
就會看到background-color了

背景圖片大小計算:

  • 如果指定了 background-size 的兩個值並且不是auto:
    • 背景圖片按指定大小渲染。
  • contain 或 cover:
    • 保留固有比例,最大的包含或覆蓋背景區。如果影象沒有固有比例,則按背景區大小。
  • auto 或 auto auto:
    • 影象如果有兩個長度,則按這個尺寸。如果沒有固有尺寸與固有比例,則按背景區的大小。如果沒有固有尺寸但是有固有比例, 效果同 contain。如果有一個長度與比例,則由此長度與比例計算大小。如果有一個長度但是沒有比例,則使用此長度與背景區相應的長度。
  • 一個為 auto 另一個不是auto:
    • 如果影象有固有比例,則指定的長度使用指定值,未指定的長度由指定值與固有比例計算。如果影象沒有固有比例,則指定的長度使用指定值,未指定的長度使用影象相應的固有長度,若沒有固有長度,則使用背景區相應的長度。

background-position

屬性值:

/* Keyword values */
background-position: top;
background-position: bottom;
background-position: left;
background-position: right;
background-position: center;

/* <percentage> values */
background-position: 25% 75%;

/* <length> values */
background-position: 0 0;
background-position: 1cm 2cm;
background-position: 10ch 8em;

/* Multiple images */
background-position: 0 0, center;

/* Edge offsets values */
background-position: bottom 10px right 20px;
background-position: right 3em bottom 10px;
background-position: bottom 10px right;
background-position: top right 10px;

/* Global values */
background-position: inherit;
background-position: initial;
background-position: unset;
* 關鍵字center,用來居中背景圖片
* 關鍵字top、left、bottom、right中的一個用來指明圖片與背景框的哪一邊貼合,另一個維度則居中
* background-position: bottom -35px center;表示以bottom為參考系,背景圖片向下移35px,若值為正則是向上移動

另外需要注意,如果背景圖片的大小和容器一樣,那設定百分比的值將永遠無效,因為“容器和圖片的差”為0(圖片永遠填滿容器,並且圖片的相對位置和容器的相對位置永遠重合)。在這種情況下,需要為偏移使用絕對值(例如px)

參考:
https://juejin.cn/post/6855129007353462798
https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-image
https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-size
https://developer.mozilla.org/zh-CN/docs/Web/CSS/background-position
配色:https://www.163.com/dy/article/G1C35S5E0516AKQ0.html