【问题标题】:set Pseudo Elements content url image设置伪元素内容 url 图片
【发布时间】:2013-09-26 08:56:49
【问题描述】:

我试图将 data-img 设置为伪元素中的图像但没有成功,这是我迄今为止尝试过的:

标记:

<div data-img="http://www.hdwallpapers.in/walls/cute_baby_in_autumn-wide.jpg">radomPicture</div>

风格:

div:before{
    content: url('attr(data-img)');
    position:absolute;
    width:200px;
    height:200px;
}

结果损坏的图像:http://jsfiddle.net/vfPKb/

【问题讨论】:

标签: html css pseudo-element css-content


【解决方案1】:

我不完全确定这是可能的。你可能想搞砸CSS variables,尽管你可能会遇到与这里相同的问题;我不相信您可以向一个 CSS 函数发送一个从另一个函数生成的值(甚至 CSS 变量也可以通过 var 函数访问)。我知道这不是很令人满意,但是您是否考虑过一些快速简单的 jQuery?

$("div[data-img]").each(function(){$(this).css("background-image", "url(" + $(this).attr("data-img") + ")")});

这是一个分叉的JSFiddle

如果您不愿意在项目中添加新库,也可以使用 vanilla Javascript 执行类似的操作。

编辑:

如果您能够编辑标记,一个更简单(尽管可能不完全可能)的解决方案可能是只使用内联样式:

<div style="background-image: url('http://www.hdwallpapers.in/walls/cute_baby_in_autumn-wide.jpg')">radomPicture</div>

我无法想象添加img-data 属性比添加style 属性要容易得多的许多场景,但我想这取决于所有这些标记是如何生成的,或者是否具备这种能力从你的手开始。

【讨论】:

  • 我知道如何使用 js 我需要一个纯 css 解决方案
  • @Sandy Gifford 是的,我做到了,但我想使用 div,之前和之后分别在单个元素中保存尽可能多的数据
  • @kougiland 你应该仍然可以使用:before:after。使用内联样式应该对此没有任何影响,它只是比data- 属性更广泛地支持,并且不涉及堆叠功能。 编辑: 除非您的意思是在 :before:after 元素上使用与 div 本身相同的背景图像,否则 会更棘手。
  • @Sandy Gifford 你是对的,我想用不同的 CSS 过滤器使用相同的背景
  • @kougiland Ahhh,这可能更棘手。没有真正的方法来做内联伪代码 (see this question),因此(目前)淘汰了该解决方案。我想不出任何用简单的通用方法来实现这一点的方法。你能发布更多关于你想要达到的目标的信息吗?也许我们可以破解一下。
猜你喜欢
  • 2012-09-25
  • 2020-03-13
  • 2020-08-06
  • 2014-04-27
  • 2018-11-10
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多