【发布时间】:2021-08-31 18:42:59
【问题描述】:
我正在尝试捕获我首先使用 CSS 生成的图像。
CSS生成的图片是这样的..
而当前的 html2canvas 输出是……
我尝试过的当前代码如下...
html2canvas(document.querySelector("#capture"), {
allowTaint: true
}).then(canvas => {
document.body.appendChild(canvas)
});
body {
background: #0000007a;
}
h1 {
font: small-caps 167% Arial, Helvetica, sans-serif
}
#container {
margin-left: -56px;
top: 450px;
width: 550px;
-moz-perspective: 800px;
-webkit-perspective: 800px;
margin-top: 130px;
}
#container:hover * {
-moz-animation-play-state: paused;
-webkit-animation-play-state: paused
}
#frame {
margin-top: 95px;
width: 23px;
-moz-transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
/* translate must be last */
-moz-transform: rotateX(-1deg) rotateY(45deg) rotateZ(0deg) translate3d(325px, -70px, 50px);
-webkit-transform: rotateX(-1deg) rotateY(45deg) rotateZ(0deg) translate3d(325px, -70px, 50px)
}
.strip {
-moz-transform-style: preserve-3d;
-webkit-transform-style: preserve-3d;
animation: spin 0.01s forwards;
}
.mastercontainer {
width: 400px;
height: 400px;
display: inline-block;
overflow: hidden;
}
.strip div {
position: absolute;
background: #000 url(http://automation.stickermonkey.shop/codeplayground/images/djmug2.jpg);
border: solid rgb(145, 87, 0);
border-width: thin 0;
height: 275px;
width: 34px;
opacity: 1;
}
.strip .a {
background-position: 0 0;
-moz-transform: rotateY(0deg) translateZ(124px);
-webkit-transform: rotateY(0deg) translateZ(124px)
}
.strip .b {
background-position: 759px 0;
-moz-transform: rotateY(15deg) translateZ(124px);
-webkit-transform: rotateY(15deg) translateZ(124px)
}
.strip .c {
background-position: 726px 0;
-moz-transform: rotateY(30deg) translateZ(124px);
-webkit-transform: rotateY(30deg) translateZ(124px)
}
.strip .d {
background-position: 693px 0;
-moz-transform: rotateY(45deg) translateZ(124px);
-webkit-transform: rotateY(45deg) translateZ(124px)
}
.strip .e {
background-position: 660px 0;
-moz-transform: rotateY(60deg) translateZ(124px);
-webkit-transform: rotateY(60deg) translateZ(124px)
}
.strip .f {
background-position: 627px 0;
-moz-transform: rotateY(75deg) translateZ(124px);
-webkit-transform: rotateY(75deg) translateZ(124px)
}
.strip .g {
background-position: 594px 0;
-moz-transform: rotateY(90deg) translateZ(124px);
-webkit-transform: rotateY(90deg) translateZ(124px)
}
.strip .h {
background-position: 561px 0;
-moz-transform: rotateY(105deg) translateZ(124px);
-webkit-transform: rotateY(105deg) translateZ(124px)
}
.strip .i {
background-position: 528px 0;
-moz-transform: rotateY(120deg) translateZ(124px);
-webkit-transform: rotateY(120deg) translateZ(124px)
}
.strip .j {
background-position: 495px 0;
-moz-transform: rotateY(135deg) translateZ(124px);
-webkit-transform: rotateY(135deg) translateZ(124px)
}
.strip .k {
background-position: 462px 0;
-moz-transform: rotateY(150deg) translateZ(124px);
-webkit-transform: rotateY(150deg) translateZ(124px)
}
.strip .l {
background-position: 429px 0;
-moz-transform: rotateY(165deg) translateZ(124px);
-webkit-transform: rotateY(165deg) translateZ(124px)
}
.strip .m {
background-position: 396px 0;
-moz-transform: rotateY(180deg) translateZ(124px);
-webkit-transform: rotateY(180deg) translateZ(124px)
}
.strip .n {
background-position: 363px 0;
-moz-transform: rotateY(195deg) translateZ(124px);
-webkit-transform: rotateY(195deg) translateZ(124px)
}
.strip .o {
background-position: 330px 0;
-moz-transform: rotateY(210deg) translateZ(124px);
-webkit-transform: rotateY(210deg) translateZ(124px)
}
.strip .p {
background-position: 297px 0;
-moz-transform: rotateY(225deg) translateZ(124px);
-webkit-transform: rotateY(225deg) translateZ(124px)
}
.strip .q {
background-position: 264px 0;
-moz-transform: rotateY(240deg) translateZ(124px);
-webkit-transform: rotateY(240deg) translateZ(124px)
}
.strip .r {
background-position: 231px 0;
-moz-transform: rotateY(255deg) translateZ(124px);
-webkit-transform: rotateY(255deg) translateZ(124px)
}
.strip .s {
background-position: 198px 0;
-moz-transform: rotateY(270deg) translateZ(124px);
-webkit-transform: rotateY(270deg) translateZ(124px)
}
.strip .t {
background-position: 165px 0;
-moz-transform: rotateY(285deg) translateZ(124px);
-webkit-transform: rotateY(285deg) translateZ(124px)
}
.strip .u {
background-position: 132px 0;
-moz-transform: rotateY(300deg) translateZ(124px);
-webkit-transform: rotateY(300deg) translateZ(124px)
}
.strip .v {
background-position: 99px 0;
-moz-transform: rotateY(315deg) translateZ(124px);
-webkit-transform: rotateY(315deg) translateZ(124px)
}
.strip .w {
background-position: 66px 0;
-moz-transform: rotateY(330deg) translateZ(124px);
-webkit-transform: rotateY(330deg) translateZ(124px)
}
.strip .x {
background-position: 33px 0;
-moz-transform: rotateY(345deg) translateZ(124px);
-webkit-transform: rotateY(345deg) translateZ(124px)
}
@-moz-keyframes spin {
from {
-moz-transform: rotateY(360deg)
}
to {
-moz-transform: rotateY(230deg)
}
}
@-webkit-keyframes spin {
from {
-webkit-transform: rotateY(360deg)
}
to {
-webkit-transform: rotateY(230deg)
}
}
<script src="https://html2canvas.hertzen.com/dist/html2canvas.js"></script>
<div id="capture" class="mastercontainer">
<div id="container">
<div id="frame">
<div class="strip">
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
<div class="d"></div>
<div class="e"></div>
<div class="f"></div>
<div class="g"></div>
<div class="h"></div>
<div class="i"></div>
<div class="j"></div>
<div class="k"></div>
<div class="l"></div>
<div class="m"></div>
<div class="n"></div>
<div class="o"></div>
<div class="p"></div>
<div class="q"></div>
<div class="r"></div>
<div class="s"></div>
<div class="t"></div>
<div class="u"></div>
<div class="v"></div>
<div class="w"></div>
<div class="x"></div>
</div>
</div>
</div>
</div>
我在这里把所有东西都放到了一个 jsfiddle 中。 https://jsfiddle.net/StickerMonkey/tLqrdey5/4/
编辑添加:
我也试过foreignObjectRendering: true 这给出了正确的形状,但图像被涂黑了。
第二次编辑添加; 我也愿意接受另一种方法的建议,将矩形图像包裹在杯子周围,或者以其他方式截屏或抓取我已经生成的图像。
【问题讨论】:
-
您可以使用 WebGL 帮助库(例如three.js 或 p5.js)直接在画布上生成 3D 图像
标签: php html css html2canvas