设置parallax.js我碰到了这个:
html源代码标记(在official GIThub project中)是:
<ul id="scene" class="scene">
<li class="layer" data-depth="1.00"><img src="images/layer1.png"></li>
<li class="layer" data-depth="0.80"><img src="images/layer2.png"></li>
<li class="layer" data-depth="0.60"><img src="images/layer3.png"></li>
<li class="layer" data-depth="0.40"><img src="images/layer4.png"></li>
<li class="layer" data-depth="0.20"><img src="images/layer5.png"></li>
<li class="layer" data-depth="0.00"><img src="images/layer6.png"></li>
</ul>
但是如果我们看一下(真的很棒)Wagerfield example,看起来这些图像是作为每个.layer类元素中div块的背景图像引入的。
我可以给自己的解释是,通过这种方式可以更灵活地控制图像,
我刚开始使用JS,所以我真的无法找到解决方法: 但是剧本不能改变这个
<img src="images/layer1.png">
成像:
<div class="layer1" style="background:url(images/layer1.png) no-repeat 50% 100%"></div>
这可以轻松实现吗?
扩展问题,使用通过脚本传递的内联样式完全设置.layer的样式会很酷。
到目前为止脚本:
jQuery("li.layer > img").replaceWith
("<div class=\"" + $((("li.layer > img").src).replace(/\.[^/.]+$/, "")) + "\"</div>" );
这部分不起作用(我正在寻找图片的网址输出......):
(("li.layer > img").src).replace(/\.[^/.]+$/, "")
答案 0 :(得分:1)
这样的事情应该可以解决问题。
$('#scene > .layer > img').replaceWith(function () { // select all images
var s = this.src.substring(this.src.indexOf('images'), this.src.length);
// get only the relative path of the url
return $('<div/>', { // create a div
class: s.replace(/\.[a-zA-Z]+/, '').split('/')[1],
// get the image name as class
style: 'background:url(' + s + ') no-repeat 50% 100%'
// set style
});
});
$('div').text(function(){
return this.outerHTML;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="scene" class="scene">
<li class="layer" data-depth="1.00">
<img src="images/layer1.png">
</li>
<li class="layer" data-depth="0.80">
<img src="images/layer2.png">
</li>
<li class="layer" data-depth="0.60">
<img src="images/layer3.png">
</li>
<li class="layer" data-depth="0.40">
<img src="images/layer4.png">
</li>
<li class="layer" data-depth="0.20">
<img src="images/layer5.png">
</li>
<li class="layer" data-depth="0.00">
<img src="images/layer6.png">
</li>
</ul>