如何使用隐藏源(html)div

时间:2017-03-07 17:00:46

标签: javascript jquery html css html2canvas

我正在一个项目中工作,我需要生成任何成员及其评论的个人资料图片,以及一些数据,我开始使用GDI,但它很难理解,所以我搜索了其他选项并找到了使用javascript / jquery的Html2Canvas,一切都很好,我唯一无法处理的事情,并且想知道是否有办法隐藏源html div而不破坏结果图像。< / p>

前:

现在是怎么回事

Original code

它的外观应该是

How It should be

所以,当我在源div的css上应用display:none时,图像结果是这样的:

Broken Image

最后这是我到目前为止的代码

var div_to_hide = $("#mydiv:hidden");
$(function() {
    $('span.stars').stars();
});
html2canvas([document.getElementById('mydiv')], {
    onrendered: function (canvas) {
        document.getElementById('canvas').appendChild(canvas);
        var data = canvas.toDataURL('image/png');
        var image = new Image();
        image.src = data;
        document.getElementById('image').appendChild(image);
    }
});
$.fn.stars = function() {
    return $(this).each(function() {
        var val = parseFloat($(this).html());
        val = Math.round(val * 4) / 4;
        var size = Math.max(0, (Math.min(5, val))) * 16;
        var $span = $('<span />').width(size);
        $(this).html($span);
    });
}

https://jsfiddle.net/ricardojriosr/6ap9Lx1f/8/

现在的问题是我如何使这项工作只显示图像而不是HTML源。谢谢你的推荐。

1 个答案:

答案 0 :(得分:1)

不是试图隐藏它,而是在渲染画布后隐藏(或删除)它。

我不确定为什么var div_to_hide等于$("#mydiv:hidden");,但如果您将其更改为var div_to_hide = $("#mydiv");,则在第12行添加图片后,您可以运行div_to_hide.hide();

为了避免HTML内容的闪现,您可以使用一些CSS技巧来掩盖原始HTML。我在这里做了一个例子,但你可以调整以适应你的实际需求。 https://jsfiddle.net/m5zq2kzn/