jquery - 重复多个图像作为不同样式的背景

标签 jquery html css image background-image

在我的当前元素中,最终用户将从他的计算机中选择任何图像,然后我们应该以以下格式显示该图像。

Basic Format Half Drop Format Half-Brik Format Center Format Mirror Format

以上格式为Normal RepeatHalf-DropHalf-BrickCenter镜像分别

为此,我开始研究 CSS 背景图像技巧。但是我没有得到 100% 的解决方案。

我做了什么

  1. 采用400px 宽度400px 高度

  2. 使用 Background-position:Background-repeat: 属性重复图像

  3. 根据格式在 repeat-xrepeat-y 中重复图像。

  4. 以适合400px 高度400px 宽度

  5. 的方式重复图像
  6. 根据我的代码,如果我们想在4 行 中重复图像,那么我们应该编写4 条背景属性线

请通过Js Fiddle以便更好地理解。

我想要的是

  1. 解决方案可以在 CSSJquery

  2. 如果 CSS 中有一个解决方案:背景重复应该自动完成,即使我增加了分区的高度。

  3. 我不知道要以镜像格式 重复图像(如上文提到的最后一张图像)。

请提出您的建议以使其完善。

注意:请原谅我的拙劣解释。请通过 Js Fiddle 文件(你会明白我想要什么)。

最佳答案

您可以使用 JavaScript 和 canvas 元素来修改背景图像。

对于 half-drop 模式,创建一个宽度为图像两倍的 Canvas 元素,并像这样在 Canvas 上绘制图像:

context.drawImage(image, 0, 0, width, height);
context.drawImage(image, width, height / -2, width, height);
context.drawImage(image, width, height / 2, width, height);

对于镜像模式使用这个:

context.drawImage(image, 0, 0, width, height);
context.save();
context.scale(-1, 1);
context.drawImage(image, -width * 2, 0, width, height);
context.scale(1, -1);
context.drawImage(image, -width * 2, -height * 2, width, height);
context.scale(-1, 1);
context.drawImage(image, 0, -height * 2, width, height);
context.restore();

要将 Canvas 元素设置为背景图像,请使用 canvas.toDataURL():

element.style.backgroundImage = 'url("' + canvas.toDataURL('image/png') + '")';

看看这个JsFiddle一个完整的工作示例。

关于 Canvas 元素的更多信息:Tutorial on MDN

关于jquery - 重复多个图像作为不同样式的背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21596157/

相关文章:

javascript - jQuery ajax 不适用于生成的标记

jquery - 通过 JQuery .val() 将多个数据字段从 <select multiple> 传递到 Django formfield

javascript - 如何使用 jQuery 编辑列表元素

javascript - HTML5 视频与 JavaScript - 语法困惑

html - 不同尺寸的 ul 对齐

html - 在绝对定位的 div 上对齐文本 - 维恩图

jQuery 查找具有类名的单选按钮的值

html - 悬停效果范围太高

javascript - 如何在主干中进行页面转换?

html - 我的下拉菜单不起作用