日常开发中,我们有时候需要获取某个元素的背景图片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小时内与您取得联系。