html - 如何仅使用 html 和 css 动态分配背景图像 url?

标签 html css css-variables

<分区>

我试图通过 html 标签上定义的属性的 css 动态分配 background-imageurl。但似乎 attr()var() 都不起作用。我避免使用 javascript,因为 url 稍后可能会更改,所以我必须再次手动触发该脚本。

有更好的解决方案吗?

body {
  display: flex;
}

.normal, .attr, .var {
  flex: 1;
  height: 240px;
  border: solid 1px #666;
  background-size: cover;
}

.normal {
  background-image: url("https://picsum.photos/320/240");
}

.attr {
  background-image: url(attr(data-bg));
}

.var {
  background-image: url(var(--url));
}
<div class="normal"></div>
<div class="attr" data-bg="https://picsum.photos/320/240"></div>
<div class="var" style="--url: 'https://picsum.photos/320/240';"></div>

更重要的是,如果可能的话,我希望我可以连接字符串。

.image {
  border: solid 1px #666;
  width: 320px;
  height: 240px;
  /* I wish this is possible */
  background-image: url("http://www.example.com/images/" attr(data-bg) ".png");
}
<div class="image" data-bg="adorable_cat"></div>

最佳答案

即使我觉得简单地使用内联 background-image 属性会更容易(特别是如果你想连接 url 字符串)。为了简单使用,您可以这样做:

<div class="var" style="--url: url(https://picsum.photos/320/240)"></div>

.var {
  background-image: var(--url);
}

由于我不清楚的原因,使用 url(var(--url)); 似乎根本不起作用(至少在 Chrome 中)

关于html - 如何仅使用 html 和 css 动态分配背景图像 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57283629/

上一篇:css - 无法删除 CSS 属性 : Max-width:1200px

下一篇:css - 我想在段落中显示图像,但是当我单击以显示图像时,文本会上下移动

相关文章:

html - Div 没有水平对齐

javascript - 当我想将它添加到我的 Rails 应用程序时,我在哪里实现来自 codepen.io 的 JS 部分

css - 为什么 Firefox 不显示我的 SVG 图标,该怎么办?

javascript - 通过JS更新变量值后CSS伪类消失

javascript - 如何不清除 jQuery 表单中禁用的输入

html - 如何减少 HTML 文本的宽度?

html - 如何显示textarea元素的右边框

javascript - 在单击和加载时使用 vanilla JS 设置 css 变量(使用 localStorage)

javascript - 调整窗口大小时同位素包装中的元素之间的细线间隙

php - 在 HTML 中显示网页的当前 URL(动态)