css Html2Canvas额外行出现在图像输出上(在Mozilla上)

xoshrz7s  于 2023-08-09  发布在  其他
关注(0)|答案(1)|浏览(78)

我正试图转换后写的html,css到图像格式。然而,我遇到了一个问题,屏幕上出现了一行。我验证了它的出现是因为应用到div层的线性渐变。但是,我无法找出它背后的原因,使我无法修复它。我将分享我的html代码和两个图像,第一个是浏览器渲染的html,而后者是html 2canvas函数产生的输出。
我尝试过但没有成功的事情:

  • 使背景透明
  • 从渐变图层中移除边界
  • 从渐变图层中删除轮廓
  • 将透明边框添加到渐变层
  • 添加了webkit和mozilla传统渐变

谢谢你的帮助!
注意:我使用的是ReactJS,输出的图片格式是. png

浏览器渲染HTML

x1c 0d1x的数据

使用html 2canvas输出图片



正如您所看到的,当应用的渐变停止时,该线刚好出现。
这里是HTML内容的源代码,以及使用html 2canvas将其转换为图像的过程。
超文本标记语言:

<div className="post">
    <div id="post__img" style={{backgroundImage: 'url(?)'.replace('?', imgPath), backgroundPosition: focusX + 'px ' + focusY + 'px'}}></div>
    <div id="post__grad-up"></div>
    <div id="post__grad-down"></div>
    <WiMoonWaxingCrescent1 id="post__moon"/>
    <div id="post__text-up">duhanews.com</div>
    <div id="post__line-up"></div>
    <div id="post__text-title" style={{fontSize: fontSize + 'px'}}>
        {title}
    </div>
    <div id="post__text-down">DİJİTAL ULUSLARARASI HABER AĞI</div>
    <div id="post__line-down"></div>

    <div id="post__social">
        <img src={instagram} alt=" " />
        <SocialIcon network="twitter" bgColor="transparent" fgColor="#1DA1F2"/>
    </div>

</div>

字符串
CSS:

.post {
    position: relative;
    width: 1080px;
    height: 1080px;
    font-family: var(--post-text);
}

#post__img {
    position: absolute;
    background-size: cover;
    width: 100%;
    height: 100%;
}

#post__grad-up {
    position: absolute;
    top: 0;
    width: 100%;
    height: 300px;

    background: linear-gradient(180deg, rgba(0, 0, 0, 1), rgba(0,0,0, 0));
    border: none;
    outline: none;
}

#post__grad-down {
    position: absolute;
    bottom: 0;
    width: 100%;
    height: 400px;

    background: linear-gradient(0deg, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0));
    border: none;
    outline: none;
}

#post__moon {
    position: absolute;
    top: 35px;
    left: 10px;

    rotate: -120deg;
    color: #EBC815;
    font-size: 50px;
}

#post__text-up {
    position: absolute;
    top: 65px;
    left: 20px;

    width: 235px;
    font-size: 19px;
    letter-spacing: 0.15rem;
    font-weight: bold;
}

#post__line-up {
    position: absolute;
    top: 95px;
    left: 0;

    width: 198px;
    height: 1px;
    background-color: #fff;
}

#post__text-title {
    position: absolute;
    bottom: 110px;
    right: 50px;
    left: 50px;
    text-align: center;

}

#post__text-down {
    position: absolute;
    bottom: 35px;
    text-align: center;
    width: 100%;

    font-size: 21px;
    letter-spacing: 0.11rem;
    text-transform: uppercase;

}

#post__line-down {
    position: absolute;
    bottom: 75px;

    right: 267px;
    width: 546px;
    height: 1px;
    background-color: #fff;

}

#post__social {
    position: absolute;
    display: flex;
    align-items: center;
    right: 0;
    bottom: 0;
    padding: 16px;
}

#post__social img {
    width: 30px;
    height: 30px;
}


图像转换:

<button type='button' onClick={() => {
        html2canvas(document.querySelector(".post"), {scale: 1}).then(
            (canvas) => {
                var link = document.createElement("a");
                document.body.appendChild(link);
                link.download = "gönderi.jpg";
                link.href = canvas.toDataURL();
                link.target = '_blank';
                link.click();
            }
        )
    }}>Kaydet</button>

bd1hkmkf

bd1hkmkf1#

我不知道技术原因,但从Mozilla切换到Chrome和Edge后,问题解决了,该行没有出现。但是,它在Mozilla上仍然存在。它必须与Mozilla渲染渐变的方式相关联。

相关问题