5

假设我在要打印的网页上有一个标题横幅。与其浪费某人的墨水打印整个图像块,有没有办法通过 css 用 H1 大小的文本替换图像?

4

4 回答 4

10

我通常只是将以下内容添加到我的样式表中:

.nodisplay
{
    display: none;
}

@media print {
    * {
        background-color: white !important;
        background-image: none !important;
    }
    .noprint
    {
        display: none;
    }
}

然后将noprint类分配给不应打印的元素:

<div class="noprint">

</div>

对于您的示例,类似以下内容应该有效:

<img src="logo.png" class="noprint" ...>
<h1 class="nodisplay">Text Logo</h1>
于 2008-12-30T22:44:42.447 回答
7

您可以将h1元素和图像放在源中的同一位置,并将图像 CSSdisplay:none用于打印媒体,并将h1设置为display:none用于屏幕媒体。

于 2008-12-30T22:25:55.510 回答
5

Bryan,通常在徽标之类的东西上,无论如何我都会使用图像替换图形,因此徽标本身实际上是在 H1 标签中。然后在我的打印样式表中。我做这样的事情......

h1#logo a, h1#home-logo{
    text-indent: 0 !important;
    background-image: none !important;
    font-size: 1.2em !important;
    display: block !important;
    height: 1em !important;
    width: 100% !important;
    text-decoration: none !important;
    color: black !important;
}

这将删除图像替换并显示文本。当然,请确保您使用media="print".

于 2008-12-30T22:27:00.407 回答
1

添加到亚当的解决方案:如果您的文本是固定的(“标题横幅”而不是“广告为某某某某”),您可以使用:before 或 :after 伪元素插入文本而不是让文本预先在 HTML 中插入。

如果您用相同的文本替换许多图像,我会使您的 HTML 更轻。

我不得不说我不喜欢这个 CSS 功能,但如果你想使用它,它就在那里。

于 2008-12-31T01:05:34.173 回答