javascript - 多个元素上的连续背景图像图案

标签 javascript jquery css background background-image

我需要在多个元素上制作一个连续的背景图案。 我无法控制元素的高度或数量。
这是一个例子:

p{
  margin:0;
  padding:1.5em;
}
.bg{
  background-image:url('http://enjoycss.com/webshots/hB_1.png');
}
<p>some text<br>on several lines</p>
<p class="bg">some text<br>on several lines</p>
<p class="bg">some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines<br><br>and another</p>
<p>some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines</p>
<p class="bg">some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines<br><br>and another</p>

我想要的效果几乎可以用background-attachement:fixed;实现,但我需要背景随内容滚动。
示例:

p{
  margin:0;
  padding:1.5em;
}
.bg{
  background-image:url('http://enjoycss.com/webshots/hB_1.png');
  background-attachment:fixed;
}
<p>some text<br>on several lines</p>
<p class="bg">some text<br>on several lines</p>
<p class="bg">some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines<br><br>and another</p>
<p>some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines</p>
<p class="bg">some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines<br><br>and another</p>

最佳答案

Javascript

使用少量的JavaScript,就可以得到你需要的效果。

此方法获取当前高度并添加所有先前的高度以赋予元素其起始背景位置。

var lastHeight = 0;
$('.bg').each(function() {
  $(this).css('background-position', '0 -' + lastHeight + 'px');
  var currentHeight = $(this).outerHeight();
  var newPosition = currentHeight + lastHeight;
  lastHeight = lastHeight + currentHeight;
});
p {
  margin: 0;
  padding: 1.5em;
}
.bg {
  background-image: url('http://enjoycss.com/webshots/hB_1.png');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>some text<br>on several lines</p>
<p class="bg">some text<br>on several lines</p>
<p class="bg">some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines<br><br>and another</p>
<p>some text<br>on several lines<br><br>and another<br>some 
<p class="bg">some text<br>on several lines</p>
<p class="bg">some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>
<p class="bg">some text<br>on several lines<br><br>and another</p>
<p>some text<br>on several lines<br><br>and another<br>some text<br>on several lines<br><br>and another</p>

关于javascript - 多个元素上的连续背景图像图案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36304934/

相关文章:

javascript - 每次打开模态时重复 JS Textillate 函数

html - 父背景改变了子元素的背景颜色?

android - 绝对 css 定位在 android html 上显示空白

javascript - tiptap - 在当前节点下方/末尾插入节点

javascript - 使用 Angular Material 将 FAB 放在 seam 上

javascript - Firebase getRedirectResult() 没有解决

javascript - 在backbonejs的控制台中显示一条消息

javascript - 关闭当前浏览器选项卡并关注特定 url 的浏览器选项卡 - javascript/jquery

javascript - Vorpal.js 参数和参数

html - 奇数空白 : pre behavior inside floated parent