[英]How to fix div position in html2canvas
i am trying to make a customized product, and the issue i am getting here is when i customize my product and try to save it or preview it my div position is not the same i set before! 我正在尝试制作定制产品,而我遇到的问题是当我定制我的产品并尝试保存或预览它时,我的div位置与我之前设置的不一样! printArea is the div which i want as an image.
printArea是我想要作为图像的div。
<style>
#printArea
{
z-index: 1;
height: 330px;
width: 330px;
border: 1px dashed black;
align-items: center;
position: relative;
left: 126;
top: 165;
margin: 20px;
padding: 10px;
overflow: hidden;
}
</style>
<div class="row">
<div class="col-md-2">
<input type="file" name="file">
</div>
<div class="col-md-8"></div>
<div class="col-md-2">
<a href="#" class="button btn btn-download" id="btn-Preview-Image">Preview</a>
<a class="button btn btn-download" id="btn-Convert-Html2Image" href="#">Download</a>
</div>
</div>
<div class="row">
<div class="col-md-2">
</div>
<div class="col-md-8">
<div class="box">
<div id="printArea" class="print-area">
<div id="draggable4" class="ui-widget-content" style="width: 204px; height: 204px; overflow: hidden; z-index: 100; left: 69px; top: 69px;">
<div class="upload-image-preview">
</div>
</div>
</div>
<img src="<?php echo base_url(); ?>assets/user/img/customTshirt.jpg" class="" id="mirror" style="position: relative; width: 600px; height: 600px; left: 13px; top: -350px; "/>
</div>
</div>
<div class="col-md-2"></div>
</div>
</div>
<div id="previewImage">
</div>
<script type="text/javascript">
var element = $(".box"); // global variable
var getCanvas; // global variable
$("#btn-Preview-Image").on('click', function () {
html2canvas(element, {
onrendered: function (canvas) {
$("#previewImage").append(canvas);
getCanvas = canvas;
}
});
});
$("#btn-Convert-Html2Image").on('click', function () {
var imgageData = getCanvas.toDataURL("image/png");
// Now browser starts downloading it instead of just showing it
var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream");
$("#btn-Convert-Html2Image").attr("download", "your_pic_name.png").attr("href", newData);
});
</script>
</body>
</html>
What i want http://i.imgur.com/Y8vMf35.png 我想要什么http://i.imgur.com/Y8vMf35.png
What i get http://i.imgur.com/wZt9eDF.png 我得到了什么http://i.imgur.com/wZt9eDF.png
Flex can be used to center elements: Flex可用于使元素居中:
var element = $(".box"); // global variable var getCanvas; // global variable $("#btn-Preview-Image").on('click', function () { html2canvas(element, { onrendered: function (canvas) { $("#previewImage").append(canvas); getCanvas = canvas; } }); }); $("#btn-Convert-Html2Image").on('click', function () { var imgageData = getCanvas.toDataURL("image/png"); // Now browser starts downloading it instead of just showing it var newData = imgageData.replace(/^data:image\\/png/, "data:application/octet-stream"); $("#btn-Convert-Html2Image").attr("download", "your_pic_name.png").attr("href", newData); });
#printArea { z-index: 1; height: 330px; width: 330px; border: 1px dashed red; padding: 10px; overflow: hidden; position: absolute; } .box{ display: inline-block; } .wrapper { display: flex; align-items: center; justify-content: center; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="row"> <div class="col-md-2"> <input type="file" name="file"> </div> <div class="col-md-8"></div> <div class="col-md-2"> <a href="#" class="button btn btn-download" id="btn-Preview-Image">Preview</a> <a class="button btn btn-download" id="btn-Convert-Html2Image" href="#">Download</a> </div> </div> <div class="row"> <div class="col-md-2"> </div> <div class="col-md-8"> <div class="box"> <div class="wrapper"> <div id="printArea" class="print-area"> <div id="draggable4" class="ui-widget-content" style="width: 204px; height: 204px; overflow: hidden; z-index: 100; left: 69px; top: 69px;"> <div class="upload-image-preview"> </div> </div> </div> <img src="https://via.placeholder.com/600" class="" id="mirror" style="position: relative; width: 600px; height: 600px; left: 13px;"/> </div> </div> </div> <div class="col-md-2"></div> </div> </div> <div id="previewImage"> </div>
var element = $(".box"); // global variable var getCanvas; // global variable $("#btn-Preview-Image").on('click', function () { html2canvas(element, { onrendered: function (canvas) { $("#previewImage").append(canvas); getCanvas = canvas; } }); }); $("#btn-Convert-Html2Image").on('click', function () { var imgageData = getCanvas.toDataURL("image/png"); // Now browser starts downloading it instead of just showing it var newData = imgageData.replace(/^data:image\\/png/, "data:application/octet-stream"); $("#btn-Convert-Html2Image").attr("download", "your_pic_name.png").attr("href", newData); });
.box { height: 730px; width: 100%; border: 1px dashed black; align-items: center; float: none; margin-top: 20px; padding: 10px; position: relative; } #mirror{ position: absolute; width: 600px; height: 600px; left: 0; top: 0; right: 0; margin: auto; } #printArea { z-index: 1; height: 330px; width: 330px; align-items: center; position: absolute; left: 0; top: 26%; margin: auto; padding: 10px; overflow: hidden; right: 7px; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="row"> <div class="col-md-2"> <input type="file" name="file"> </div> <div class="col-md-8"></div> <div class="col-md-2"> <a href="#" class="button btn btn-download" id="btn-Preview-Image">Preview</a> <a class="button btn btn-download" id="btn-Convert-Html2Image" href="#">Download</a> </div> </div> <div class="row"> <div class="col-md-2"> </div> <div class="col-md-8"> <div class="box"> <div id="printArea" class="print-area"> <div id="draggable4" class="ui-widget-content" style="width: 204px; height: 204px; overflow: hidden; z-index: 100; left: 69px; top: 69px;"> <div class="upload-image-preview"> </div> </div> <img src="https://via.placeholder.com/600" class="" id="mirror" style="position: relative; width: 600px; height: 600px; left: 13px;"/> </div> </div> </div> <div class="col-md-2"></div> </div> </div> <div id="previewImage"> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.