Как я могу напечатать фон с помощью свойства background-image: fixed CSS? - PullRequest
0 голосов
/ 27 февраля 2019

Я много искал и не могу найти никого, кто бы задавал этот вопрос.Я пытаюсь написать красиво оформленное резюме в HTML (и распечатать его в PDF), и выделил некоторые вещи с помощью фона CSS.Я могу сохранить большинство этих фонов, выбрав правильный вариант печати в Chrome.

Однако есть один фон, который я не могу напечатать.Я хотел, чтобы несколько тегов

имели один и тот же градиентный фон, поэтому я нашел решение (подробно здесь ), в котором для каждого элемента

используется следующий стиль CSS:

.skill{
            white-space: nowrap;

            /* Gradient background */
            border-radius: 5px;
            padding: 2px 5px;
            background-image: linear-gradient(to right, hsl(120, 60%, 75%), hsl(120, 33%, 90%));
            background-attachment: fixed;
            background-size: 100%;

            -webkit-print-color-adjust: exact;
        }

Даже с -webkit-print-color-adjust Chrome не отображает эти фоны.Если я установлю background-attachment на что-то еще, оно появится в печати, но больше не будет выглядеть так, как я хочу.

Есть идеи для обхода этого?Меня не волнует совместимость с каким-либо конкретным браузером, я просто хочу иметь возможность распечатать его в формате PDF!

Редактировать: Спасибо за быстрые ответы!Просто для ясности, на моей странице не работает ни один javaScript, только HTML и CSS.Я не хочу публиковать полный код, поскольку он содержит личную информацию, но если это абсолютно необходимо, я могу вынуть все эти вещи и оставить макет и стиль.Я сделал скрипку здесь , где, что интересно, если я попытаюсь напечатать страницу, я МОГУ увидеть градиентный фон ... Вот несколько скриншотов: печать моего резюме против просмотр моего резюме в браузере . Здесь - это то, что я вижу, когда пытаюсь напечатать скрипку (именно этого я и хочу! Я почти уверен, что смогу получить этот бежевый фон с некоторыми другими материалами для печати webkit).

Попробую WkHTMLtoPDF и сообщу о том, как это работает.

Редактировать 2: WkHTMLtoPDF у меня тоже не сработал.Я получил «неизвестную ошибку» с кодом выхода 1. Я перешел к предложению просто использовать JS и background-position, и это сработало хорошо!Я удалил свойство background-attachment и использовал следующий JS:

window.onload = function(){
            var skills = document.getElementsByClassName("skill");
            Array.from(skills).forEach(function(item, index){
                item.setAttribute("style", "background-position: -" + item.offsetLeft + "px -" + item.offsetTop + "px");
            })
        };

Хотя, возможно, это не самое элегантное решение, я не против, потому что я делаю это для себя больше, чем что-либо другое.Любые не-JS решения также были бы замечательными, но для меня этого достаточно.Спасибо всем!

1 Ответ

0 голосов
/ 27 февраля 2019

background-attachment: fixed ( документы ) должен удерживать фон в определенном месте, даже если вы прокручиваете его верхнюю часть.Очевидно, что при печати вы не можете прокрутить элемент ...

Я бы вместо этого удалил его и использовал background-position: top left; (или где бы вы ни хотели, чтобы он появился).Возможно, вы также захотите установить background-repeat: no-repeat;, если вы привыкли к фону, отображаемому в определенном месте.

Также, если у вас возникли проблемы с рендерером печати (где простые вещи без декорации, такие как градиенты, вероятно, лучше), вы можете заглянуть в библиотеку, чтобы выполнить это преобразование. WkHTMLtoPDF делает это долгое время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...