pre*_*us_ 6 html javascript jquery html5-canvas html2canvas
我一直在尝试利用 html2canvas 来截取元素的屏幕截图
我注意到 div 元素内使用 object-fit 属性的图像在 html2canvas 屏幕截图后被拉伸
有没有为此散步。这是我的代码
<script>window.addEventListener('load', function () {
var bigCanvas = $("<div>").appendTo('body');
var scaledElement = $("#Element").clone()
.css({
'transform': 'scale(1,1)',
'transform-origin': '0 0'
})
.appendTo(bigCanvas);
var oldWidth = scaledElement.width();
var oldHeight = scaledElement.height();
var newWidth = oldWidth * 1;
var newHeight = oldHeight * 1;
bigCanvas.css({
'width': newWidth,
'height': newHeight
})
html2canvas(bigCanvas, {
onrendered: function(canvasq) {
var image = document.getElementById('image');
image.style.width='300px';
image.src = canvasq.toDataURL();
bigCanvas.remove() ;
}
});}) </script>
Run Code Online (Sandbox Code Playgroud)
虽然 html 是这样的
<div id="Element" class="container">
<div class="bg-light p-3 text-center">
<h3>iPhone 12 Pro Max</h3>
<div class="m-2 shadow" style="height:400px;width:100%;">
<img src="img/agency.jpeg" style="object-fit:cover;height:100%;width:100%;" />
</div>
<h4>Now available for free</h4>
</div>
</div>
<div class="container" style="width:100%;border:2px solid black;overflow:hidden">
<img src="" id="image" style="max-width:100%;"/>
</div>
Run Code Online (Sandbox Code Playgroud)
小智 3
我遇到了同样的问题,不幸的是 html2cavas 似乎不支持 object-fit 属性,但我用 flexbox 解决了,结果很好,设置父节点的宽度和高度很重要:
.logo-preview-inner {
height: 200px;
width: 200px;
border-radius: 50%;
border: solid 1px #e6e6e6;
margin: 0 auto;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
position: relative;
img {
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
其中 .logo-preview-inner 类是父节点,图像是子节点,我希望对您有所帮助!
| 归档时间: |
|
| 查看次数: |
3097 次 |
| 最近记录: |