日常開發中,我們有時候需要獲取某個元素的背景圖片URL。在本文中,我將向大家介紹如何使用JavaScript來實現這一需求。
要獲取元素的背景圖片URL,我們可以使用getComputedStyle方法來獲取background-image的CSS屬性值。
舉個例子,如果我們有如下HTML代碼:
<div style="background-image:url('http://www.example.com/img.png');">...</div>
我們可以通過以下JavaScript代碼來獲取背景圖片的URL:
const div = document.querySelector('div');
const style = window.getComputedStyle(div, false);
const bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");
console.log(bi);
下面我們來逐步解析這段代碼的實現原理:
最終,我們得到的bi變量值就是背景圖片的URL:
'https://www.example.com/img.png'
通過使用JavaScript中的getComputedStyle方法,我們可以輕松獲取到元素的背景圖片URL。這對于動態處理樣式或者進行其他基于背景圖片的操作非常有幫助。
如果你覺得本文對你有幫助,別忘了點贊并分享給更多需要的朋友!有任何問題或建議,歡迎在評論區留言,我們一起討論學習!
想給你的網站進行美化嗎?一種方法是在你的WordPress頁面上添加一個背景圖片。畢竟背景圖片是放在頁面內容后面的圖片或設計,以美化頁面。如何給WordPress文章和頁面添加背景圖片?在WordPress網站上添加背景圖片有不同的方法。
原文引用:給WordPress文章和頁面添加背景圖片圖文教程 - 搬主題
在本圖文教程中,搬主題將介紹三種很容易做到的方法。
簡單地說,它們美化了你的網站。相對于在整個網站上使用普通的背景,在你的網站背景上顯示一個圖像會增加一些美感和專業性。
在過去,人們試圖保持他們的網站設計盡可能的簡單。雖然這在當時很有效,但后來情況發生了變化。隨著全球網站數量的增加,確保你在競爭中脫穎而出是很重要的。實現這一目標的方法之一是改善你的網站設計。使用背景圖片就可以為你的WordPress網站做到這一點。
正如一切有優點的事物一樣,如果使用不當,也必然會有弊端。下面我們將討論其中的一些問題。
首先,一些背景圖片可能會出現在完全不合適的地方,并擾亂你的頁面內容。這將導致用戶錯過你打算在你的頁面上傳遞的信息。其次,不對移動端負責的背景圖片可能會影響你網站的移動可用性。大多數用戶從他們的移動設備訪問互聯網。出于這個原因,作為一個網站所有者,移動友好性應該是你最關心的問題。
最后,如果你使用的是大文件尺寸的圖像,這可能會增加你網站的加載時間。因此,加載時間的增加會導致高跳出率,這反過來又會影響你的頁面SEO。當然,你可以通過使用圖像壓縮插件或在上傳到你的網站之前簡單地在線壓縮圖像來避免這種情況。
有三種方法可以在WordPress網站上添加背景圖片。那就是使用默認的主題選項、使用插件或使用自定義CSS代碼。下面,我們將告訴你如何使用它們中的每一個。
一些WordPress主題支持使用圖片作為頁面的背景。如果你的主題支持它,你可以在你的管理面板上的自定義頁面啟用它。首先登錄到你的WordPress儀表板,然后進入外觀>>自定義。這將會出現WordPress主題定制器頁面。
在右邊,你會看到你的網站的實時預覽和最近的變化。左邊的面板包含了你的主題所提供的各種自定義功能。要設置背景圖片,請點擊背景。
在 "背景"菜單上,你可以使用一個圖像或顏色作為你的背景。要使用圖像,請點擊 "選擇圖像"按鈕。
接下來,從你的WordPress媒體庫中選擇一張圖片。要上傳一個新的圖像,選擇 "上傳文件 "標簽。然后點擊 "選擇文件",從你的電腦中選擇圖像。
將圖像上傳到你的網站后,點擊選擇圖像按鈕。
要改變圖像的大小和顯示,請點擊 "預設 "下拉菜單并從可用的選項中選擇。你可以測試每個選項,以確定哪個選項對你的圖像效果最好。
在 "圖像位置 "下,你可以選擇你想要對齊圖像的角度。當你完成了對圖像的定制后,點擊 "發布"來實現這些變化。你可以訪問你網站上的任何一個頁面,看看背景看起來如何。
使用大多數主題提供的默認背景選項的弊端是它沒有提供很大的靈活性和控制背景圖片在你的頁面上的外觀。此外,背景圖片是全局性的,適用于你整個網站的帖子和頁面。因此,如果你想為其他頁面和帖子使用不同的背景,你可能會發現這很困難。幸運的是,有了WordPress的添加背景圖片的插件,你在為網站的任何部分或頁面添加背景照片時,可以得到很大的控制和靈活性。
如果你的主題設置中沒有添加背景圖片的選項,你可以使用一個插件來添加它。在本節中,我們將展示如何使用兩個插件來做到這一點。
Elementor是WordPress最受歡迎的拖放式頁面生成器插件之一。該插件有很多功能,讓你使用交互式儀表盤建立一個完整的網站,而不需要寫一行代碼。
在這里,我們將使用背景功能為WordPress網站上的部分添加背景圖片。要開始,你需要從你的WordPress儀表板上安裝并激活Elementor插件。
這里可以從搬主題站點下載漢化中文版《Elementor Pro完美漢化中文版|頁面拖動自定義設計WordPress插件介紹》
激活該插件后,你可以使用直觀的儀表盤來編輯你的WordPress文章和頁面。首先,進入頁面>>所有頁面,然后在你想修改的頁面下面選擇編輯。
在頁面編輯器上,點擊 "用Elementor編輯 "按鈕,打開儀表板。Elementor儀表板有很多功能,可以幫助你編輯網站的任何部分。你可以在 "內容 "選項卡中添加文本、標題、圖片、視頻等。
假設我們想在你的頁面上的某個部分添加一個背景圖片,點擊六點圖標,突出整個部分,如下圖所示。
在 "風格"選項卡上,點擊背景下拉菜單。接下來,選擇鋼筆圖標,然后點擊選擇圖像。
現在從你的WordPress媒體庫中選擇一張圖片或上傳一張新圖片。
添加背景疊加
在選擇圖像后,你可以添加一個背景覆蓋,這樣圖像就不會擾亂你的內容。為此,點擊背景疊加下拉菜單。
然后在 "顏色 "部分選擇你要使用的顏色。
當你完成添加圖像和效果后,點擊更新按鈕,保存你的變化。通過這種方法,你可以在網站的任何部分或頁面添加無限的背景圖片。只需選擇頁面,然后用Elementor插件編輯,添加你的背景圖片。
另一個你可以用來在WordPress中添加背景圖片的插件是Advanced WordPress Backgrounds插件。除了添加背景圖片外,你還可以使用視頻作為你的背景元素。這些視頻可以來自你的媒體庫、YouTube或Vimeo視頻。
還有一些特殊的效果,你可以應用到你的圖片上,如視差滾動效果。在這里,我們將專注于添加一個背景圖片,但如果你想了解更多關于背景效果的信息,請查看我們關于在WordPress添加視差效果的詳細指南。要開始,你需要在你的WordPress儀表板上安裝和激活該插件。為此,進入插件>>新增。在搜索框中,輸入 "advanced WordPress backgrounds"。接下來,點擊立即安裝按鈕,在安裝完成后激活該插件。
要使用這個插件,請進入頁面>>所有頁面。然后在你想添加背景的頁面下面選擇編輯。
在編輯器上,點擊添加塊圖標,然后在搜索框中輸入 "AWB"。當它出現時,選擇背景(AWB)塊。
接下來,在右側選擇你想添加的背景類型。你可以使用背景顏色、圖像或視頻。選擇 "圖像 "選項卡并點擊選擇圖像。
之后,從你的媒體庫中選擇一張圖片。
你可以分別使用 "尺寸 "和 "背景尺寸 "選項來改變圖像和背景的大小。添加圖片后,點擊 "更新 "按鈕,保存你的更改。如果你使用的是經典編輯器,導航到你想添加背景圖片的頁面或帖子。一旦到達那里,點擊高級WordPress背景圖標。
在 "常規 "選項卡上,點擊背景類型下拉菜單,然后選擇圖像選項。
接下來,點擊選擇圖像按鈕,然后從你的WordPress媒體庫中選擇一個圖像。
你也可以更新圖像的大小和位置。如果你想添加一個覆蓋層,點擊 "覆蓋顏色 "下面的 "選擇顏色"。接下來,選擇你想使用的顏色。
而現在,在自定義背景圖片后,點擊插入。
這將生成一個短碼,并自動將其插入你的編輯器中。在這個簡碼中,你可以輸入你希望在背景圖片上顯示的文字。一旦完成,點擊 "發布/更新 "按鈕就可以實現改變。現在你可以在你的網站上查看該頁面,看看背景圖片的樣子。
如果你是技術控,你可以使用自定義CSS代碼來為你的網頁和文章添加自定義背景。使用自定義CSS可以讓你對圖像的外觀和位置有很大的靈活性和控制。
使用CSS方法,有許多背景圖片的位置可供選擇。首先,我們可以創建一個全局性的CSS背景圖片,它將顯示在所有頁面上。很像一些WordPress主題所提供的選項。另外,我們可以添加特定類別的背景圖片,或者創建一個帶有背景圖片的CSS類。然后,你可以將該類應用于單個帖子和頁面。
如果我們的頁面上存在非常多的樣式,譬如有我們開發頁面的時候的自定義樣式,也有引入的組件庫樣式。這時候樣式將會非常混亂難以管理。
當我們想覆蓋一些本身非我們書寫的樣式時候,往往不得不通過使用優先級權重更高的樣式名,去覆蓋那些樣式。
同時,當樣式優先級感到難以控制時,開發者習慣濫用 !important 去解決,這又循環導致了后續更混亂的樣式結構。
基于讓 CSS 得到更好的控制和管理的背景,CSS @layer 應運而生。
CSS Cascade Layers,也叫做CSS級聯層,是Cascading and Inheritance Level5 規范中新增了一個新的 CSS 特性。
@layer聲明了一個 級聯層, 同一層內的規則將級聯在一起, 這給予了開發者對層疊機制的更多控制。語法也非常簡單,看這樣一個例子:
@layer utilities {
/* 創建一個名為 utilities 的級聯層 */
}
這樣,我們就創建一個名為 utilities 的 @layer 級聯層。
@layer規則可以通過三種方式其一來創建級聯層。第一種方法如上方代碼所示,它創建了一個塊級的@規則,其中包含作用于該層內部的CSS規則。
@layer utilities {
.padding-sm {
padding: .5rem;
}
.padding-lg {
padding: .8rem;
}
}
一個級聯層同樣可以通過 @import 來創建,規則存在于被引入的樣式表內:
@import(utilities.css) layer(utilities);
你也可以創建帶命名的級聯層,但不指定任何樣式。例如,單一的命名層:
@layer utilities
或者,多個命名層也可以被同時定義。例如:
@layer theme, layout, utilities
這一做法很有用,因為層最初被指定的順序決定了它是否有父級層。對于聲明而言,如果同一聲明在多個級聯層中被指定,最后一層中的將優先于其他層。
因此,在上面的例子中,如果 theme 層和 utilities 層中存在沖突的規則,那么 utilities 層中的將優先被應用。
即使 utilities 層中規則的 優先級低于 theme 層中的,該規則仍會被應用。一旦級聯層順序建立之后,優先級和出現順序都會被忽略。
這將使創建CSS選擇器變得更加簡單,因為你不需要確保每一個選擇器都有足夠高的優先級來覆蓋其他沖突的規則,你只需要確保它們出現在一個順序更靠后的級聯層中。
注:在已經聲明級聯層的名字后,它們的順序隨即被確立,你可以重復聲明某級聯層的名字來向其添加CSS規則。這些樣式將被附加到該層的末尾,且級聯層之間的順序不會改變。
其他不屬于任何一級聯層的樣式將被集中到同一匿名層,并置于所有層的前部,這意味著任何級聯層內定義的規則都將覆蓋外部聲明的規則。
級聯層允許嵌套,例如:
@layer framework {
@layer layout {
}
}
向 layout 層內部的 framework 層附加規則,只需用 . 連接這兩層。
@layer framework.layout {
p {
margin-block: 1rem;
}
}
如果創建了一個級聯層但并未指定名字,例如:
@layer {
p {
margin-block: 1rem;
}
}
那么則稱為創建了一個匿名層。除創建后無法向其添加規則外,該層和其他命名層功能一致。
@layer [ <layer-name># | <layer-name>? {
<stylesheet>
} ]
級聯層可以通過多種方式聲明:
1、使用@layer 塊規則,并立即為其分配樣式:
@layer reset {
* { /* Poor Man's Reset */
margin: 0;
padding: 0;
}
}
2、使用規則@layer 語句,沒有指定任何樣式:
@layer reset;
3、將@import 與layer關鍵字或layer()函數一起使用
@import(reset.css) layer(reset);
以上每一個都創建了一個名為 的級聯層reset。
級聯層會按它們聲明的順序排序。
在下面的例子中,我們建立四個級聯層:reset,base,theme,和utilities。
@layer reset { /* 創建級聯層 “reset” */
* {
margin: 0;
padding: 0;
}
}
@layer base { /* 創建級聯層 “base” */
…
}
@layer theme { /* 創建級聯層 “theme” */
…
}
@layer utilities { /* 創建級聯層 “utilities” */
…
}
按照它們的聲明順序,層順序變為:
reset
base
theme
utilities
重復使用級聯層名稱時,樣式將附加到現有級聯層。級聯層的順序保持不變,因為只有第一次的出現已經確定順序:
@layer reset { /* 創建第一個級聯層 “reset” */
…
}
@layer base { /* 創建第二個級聯層 “base” */
…
}
@layer theme { /* 創建第三個級聯層 “theme” */
…
}
@layer utilities { /* 創建第四個級聯層 “utilities” */
…
}
@layer base { /* 會將樣式添加至級聯層“base” */
…
}
重新使用級聯層名稱時層順序保持不變的使@layer 語法變得更加方便和嚴謹。使用它,可以預先建立圖層順序,然后將所有 CSS 附加到它:
@layer reset; /* 創建第一個級聯層 “reset” */
@layer base; /* 創建第二個級聯層 “base” */
@layer theme; /* 創建第三個級聯層“theme” */
@layer utilities; /* 創建第四個級聯層 “utilities” */
@layer reset { /* 添加樣式至級聯層 “reset” */
…
}
@layer theme { /* 添加樣式至級聯層 “theme” */
…
}
@layer base { /* 添加樣式至級聯層 “base” */
…
}
@layer theme { /* 添加樣式至級聯層 “theme” */
…
}
當然你可以用更短的語法來聲明級聯層,
@layer reset, base, theme, utilities;
從上面可以看出,多個級聯層被聲明時,最后一個級聯層的聲明會獲勝。像這樣,
@import(reset.css) layer(reset); /* 第一個級聯層 */
@layer base { /* 第二個級聯層 */
form input {
font-size: inherit;
}
}
@layer theme { /*第三個級聯層 */
input {
font-size: 2rem;
}
}
按以往CSS級聯來進行分析的話,form input(多層級)的優先級會大于input,但是由于級聯層所起的作用,@layer theme的input會取勝。
級聯層支持嵌套使用,如下:
@layer base { /* 第一個級聯層*/
p { max-width: 70ch; }
}
@layer framework { /* 第二個級聯層 */
@layer base { /* 第二級聯層的嵌套子級聯層1 */
p { margin-block: 0.75em; }
}
@layer theme { /* 第二級聯層的嵌套子級聯層2 */
p { color: #222; }
}
}
在這個例子中有兩個級聯外層:
base
framework
該framework層本身也包含兩層:
base
theme
如果要將樣式附加到嵌套級聯層,需要使用以下全名來引用它,
@layer framework {
@layer default {
p { margin-block: 0.75em; }
}
@layer theme {
p { color: #222; }
}
}
@layer framework.theme {
/* 這些樣式會被添加到@layer framework層里面的theme層 */
blockquote { color: rebeccapurple; }
}
@media (min-width: 30em) {
@layer layout {
.title { font-size: x-large; }
}
}
@media (prefers-color-scheme: dark) {
@layer theme {
.title { color: white; }
}
}
如果第一個@media (min-width: 30em)匹配(基于視口尺寸),則layout級聯層層將在圖層順序中排在第一位。如果只有@media (prefers-color-scheme: dark)匹配,theme則將是第一層。
如果兩者匹配,則圖層順序將為layout, theme。如果沒有匹配,則不定義層。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。