0 Пользователей и 1 Гость просматривают эту тему.
  • 28 Ответов
  • 915 Просмотров
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
Здравствуйте!
Мне надо вывести на печать только содержимое модального окна. Я добавила стили для @media print в файл стилей custom.css.
В блокноте эти добавленные стили есть,  а при просмотре кода страницы этих стилей нет. В чем моя ошибка?
Вот что было добавлено:
Спойлер
[свернуть]
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
здра
тут не закрыто
Код
.modal-title {color: red !important;
а чтобы результат смотреть надо эмулировать печать, иначе стили не сработают, что логично, ведь вы смотрите страницу, полученную для экрана, а не для печати...
https://habr.com/ru/company/ruvds/blog/317776/
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
здра
тут не закрыто
Код
.modal-title {color: red !important;
а чтобы результат смотреть надо эмулировать печать, иначе стили не сработают, что логично, ведь вы смотрите страницу, полученную для экрана, а не для печати...
https://habr.com/ru/company/ruvds/blog/317776/
Спасибо, закрыла скобку. Но стили для печати в custom.css не появились при эмуляции - видно все, что под модальным окном. Я ведь из модального окна на печать перехожу по кнопке. так что та же эмуляция. И никак не могу убрать изображение сайта под модальной формой.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну если по этапам, то:
а) custom.css загружается?
б) у вас шаблон на бутстрапе? если нет, то надо редактировать стили и поведение кнопки, вызывающей окно, чтобы по клику ещё и стиль к body цеплялся
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
короче смысл в том, что при вызове окна у вас body дожен прицепляться класс modal-open.
смотрите инспектором, что у вас под окном происходит. если этого класса нет, то логично, что ничего и не произойдет.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
ну если по этапам, то:
а) custom.css загружается?
б) у вас шаблон на бутстрапе? если нет, то надо редактировать стили и поведение кнопки, вызывающей окно, чтобы по клику ещё и стиль к body цеплялся
а) конечно, custom.css загружается.
б) шаблон purity_iii, на бутстрапе, модальное окно всплывает
Код
 <button class="btn btn-primary" type="button" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal </button>
<div id="exampleModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-dialog-scrollable modal-lg" style="width: 800px;" role="document">
        <div class="modal-content">
            <div class="modal-header" >
                 <h5 id="exampleModalLabel" class="modal-title" style="float: left; margin-bottom: 0; line-height: 1.5;">ХХХХХ</h5>
                 <button class="close" style="padding: 1rem; margin: -1rem -1rem -1rem auto;" type="button" data-dismiss="modal" aria-
                   label="Close"> <span style="float: right;" aria-hidden="true">×</span> </button>
                  <div style="clean: both;">&nbsp;</div>
          </div><!-- end of header -->
          <div class="modal-body" style="padding-left: 0px; padding-right: 0px;">
              <form>
                 ххххххх
              </form>
          </div> <!-- end of modal-body -->
        </div> <!-- end of modal-content -->
        <div class="modal-footer noprint">
            <button class="btn btn-secondary" type="button" data-dismiss="modal">Close</button>
            <input onclick="window.print()" type="button" value="Print this page" /></div>
        </div>  <!-- end of footer -->
     </div><!-- end of modal-dialog  -->
   </div>
</div> <!-- end of  exampleModal  -->

*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
короче смысл в том, что при вызове окна у вас body дожен прицепляться класс modal-open.
смотрите инспектором, что у вас под окном происходит. если этого класса нет, то логично, что ничего и не произойдет.
Класс modal-open появляется. А вот почему в custom.css не видны стили для print? В блокноте я их вижу, а в инспекторе - нет.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну вместо media print поставьте media screen и добивайтесь, чтобы работало при всплытии, как заработает - обратно переименуйте
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
и, кстати, код CSS странный, тк скрывая целиком элемент body ожидать, что что-то внутри него отобразится - не приходится  ;D
вот так работает - первой строкой скрываем ДОЧЕРНИЕ элементы, а не сам коневой контейнер
а следующей строкой отображаем нужный блок и его потомков.
Код
@media screen {
body.modal-open *{display:none}
body.modal-open #exampleModal,  body.modal-open #exampleModal *{ display:block }
}

инспектором посмотрите, какой у вас блок всплывает и его класс или id пропишите, если не сработает.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
media screen
ну вместо media print поставьте media screen и добивайтесь, чтобы работало при всплытии, как заработает - обратно переименуйте
ну вместо media print поставьте media screen и добивайтесь, чтобы работало при всплытии, как заработает - обратно переименуйте
Нет, к сожалению и vtdia-screen не видны в scc. Чудеса какие-то.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
что до нерабочего файла - ну тут экстрасенсы перевелись - без ссылки на сайт что-то советовать долго и скучно.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
что до нерабочего файла - ну тут экстрасенсы перевелись - без ссылки на сайт что-то советовать долго и скучно.
Вы правы, извините!
После того, как я почистила кэш через инструмент разработчика, файл custom.css стал в инспекторе обновленным. Но, к сожалению, не скрывает при печати то, что мне бы хотелось отключить.
http://web.nioch.nsc.ru/razdel-vnutrennij/mytest
станица открывается довольно долго, потому что формируется выборка из БД из нескольких таблиц БД.
В конце страницы кнопка печать - вывод модального окна. В конце (нужна прокрутка) модального окна кнопка Напечатать страницу.
И при эмуляции, и при печати не исчезает ненужная информация.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
мой последний пример - рабочий, т.е. он очищает страницу при печати (если print вместо screen прописать).
но окно в вашем случае после скрытия всей инфы не появляется, т.к. блок с модальным коном у вас глубоко в теле страницы вложен - т.е. ситуация, о которой я выше писал - окно скрывается вместе с родителем.
вынесите модальное окно непосредственно внутрь body и будет работать.
можете просто вставить мой последний пример кода и прямо в инспекторе поднять блок #exampleModal до верхнего уровня и получите пустую страницу с этим окошком.
если не сможете изначально разместить модальное окно внутри body, то просто в шаблоне создайте пустой блок с уникальным id нужной вложенности и его же вызывайте в качестве модального, и в него перекидывайте js-ом инфу.
тогде и правило сокрытия проще будет - достаточно будет t3-wrapper скрывать и все.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
кстати, вот ещё альтернатива интересная
https://it-blog.ru/js/pechat-straniczy-ili-otdelnogo-bloka-na-sajte/
т.е. динамически создается отдельное окно без всего и в него уже перекидывается инфа.
по сути, можно просто выделить в отдельные стили оформление бланка и можно так печатать.
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
мой последний пример - рабочий, т.е. он очищает страницу при печати (если print вместо screen прописать).
но окно в вашем случае после скрытия всей инфы не появляется, т.к. блок с модальным коном у вас глубоко в теле страницы вложен - т.е. ситуация, о которой я выше писал - окно скрывается вместе с родителем.
вынесите модальное окно непосредственно внутрь body и будет работать.
можете просто вставить мой последний пример кода и прямо в инспекторе поднять блок #exampleModal до верхнего уровня и получите пустую страницу с этим окошком.
если не сможете изначально разместить модальное окно внутри body, то просто в шаблоне создайте пустой блок с уникальным id нужной вложенности и его же вызывайте в качестве модального, и в него перекидывайте js-ом инфу.
тогде и правило сокрытия проще будет - достаточно будет t3-wrapper скрывать и все.
Спасибо.
А нельзя просто последовательно
body.modal-open *{display:none}
body.modal-open #exampleModal,  body.modal-open #exampleModal *{ display:block }
мой последний пример - рабочий, т.е. он очищает страницу при печати (если print вместо screen прописать).
но окно в вашем случае после скрытия всей инфы не появляется, т.к. блок с модальным коном у вас глубоко в теле страницы вложен - т.е. ситуация, о которой я выше писал - окно скрывается вместе с родителем.
вынесите модальное окно непосредственно внутрь body и будет работать.
можете просто вставить мой последний пример кода и прямо в инспекторе поднять блок #exampleModal до верхнего уровня и получите пустую страницу с этим окошком.
если не сможете изначально разместить модальное окно внутри body, то просто в шаблоне создайте пустой блок с уникальным id нужной вложенности и его же вызывайте в качестве модального, и в него перекидывайте js-ом инфу.
тогде и правило сокрытия проще будет - достаточно будет t3-wrapper скрывать и все.
Спасибо. Сначала хотелось бы проверить, что для печати отключается всё.
Я оставила в custom.css
@media print {
    body.modal-open *{display:none}
         body.modal-open #exampleModal,  body.modal-open #exampleModal *{ display:block }
}
Тогда ведь при нажатии на кнопку "Напечатать  страницу"  в предосмотре должна появиться пустая страница? А там все присутствует . Или я что-то не понимаю и что-то не то делаю?

*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
print - это вид, в котором принтер получит страницу.
его вы увидите ТОЛЬКО ПОСЛЕ ВЫЗОВА ОКНА ПЕЧАТИ по ctrl + P или по нажатию на кнопку печати в модальном окне.
соответственно, без вызова этого окна вы все еще находитесь в режиме screen и правила print не работают.
вот если screen оставите в моем примере, то получите пустую страницу по вызову модального окна
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
такое ощущение, что у вас завалены стили в вашем файле.
если в инспекторе вставить код в начало списка стилей из custom.css, то страница очищается
поставьте код в начало файла.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
вам бы почистить код, а то бедный браузер, по ходу, устает бороться с
Код
ppadding-left
bbackground

и прочими нео-стилями и конец файла уже просто не обрабатывает
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
вам бы почистить код, а то бедный браузер, по ходу, устает бороться с
Код
ppadding-left
bbackground

и прочими нео-стилями и конец файла уже просто не обрабатывает
дауж. Нет ничего более постоянного, чем временное. Надо все почистить. Спасибо. Поставила в начало - все правильно сработало.
А нельзя ли просто последовательно отключить для показа по id (или классу) шапку сайта, футер и т.д.?
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
кстати, вот ещё альтернатива интересная
https://it-blog.ru/js/pechat-straniczy-ili-otdelnogo-bloka-na-sajte/
т.е. динамически создается отдельное окно без всего и в него уже перекидывается инфа.
по сути, можно просто выделить в отдельные стили оформление бланка и можно так печатать.
Все замечательно, http://web.nioch.nsc.ru/lokalnye-normativnye-akty-obrazovatelnoj-organizatsii#
Но есть один минус - не сохраняются значения заполненных строк, т.е. просто печать бланков.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
у вас страница - как матрешка, и блок с поп-апом где-то в середине её.
как только вы скроете любого из родителей этого блока - все, вы его не увидите.
поэтому, ещё раз, выносите свой поп-ап прямо внутрь body. это же не сложно
на крайняк создаете пустышку и в неё перекидыаете содержимое, которе у вас сейчас генерируется, если боитесь переделывать код.
перекинуть содержимое элемента - это 1 строка js
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
кстати, вот ещё альтернатива интересная
https://it-blog.ru/js/pechat-straniczy-ili-otdelnogo-bloka-na-sajte/
т.е. динамически создается отдельное окно без всего и в него уже перекидывается инфа.
по сути, можно просто выделить в отдельные стили оформление бланка и можно так печатать.
А можно как-то сохранить перед печатью значения из заполненных полей?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
вот так по красоте должно получиться, если jquery использовать

Код
$(windowPrint.document.body).append( $("#exampleModal").clone() );
Что-то не пойму - в каком месте это использовать?  Извините.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
вместо
Код
    windowPrint.document.write(printTitle);
    windowPrint.document.write(printImg);
    windowPrint.document.write(printText);

ставите
Код
$(windowPrint.document.body).append( $("#pril1n").clone() );

и перенесет весь блок целиком, т.е. на надо будет каждому элементу цеплять blur, тк clone забирает и значения полей
*

GuDeVic

  • Захожу иногда
  • 228
  • 0 / 0
$(windowPrint.document.body).append( $("#pril1n").clone() );
вместо
Код
    windowPrint.document.write(printTitle);
    windowPrint.document.write(printImg);
    windowPrint.document.write(printText);

ставите
Код
$(windowPrint.document.body).append( $("#pril1n").clone() );

и перенесет весь блок целиком, т.е. на надо будет каждому элементу цеплять blur, тк clone забирает и значения полей
Действительно, очень красиво. Но не могу проверить, потому что не могу ни в админку войти, ни просто сайт вызвать.  На другом компьютере  сайт загружается, а на этом, за которым я работаю - нет. Я просто в панику впала, что случилось. Помню, что экстрасенсы в отпусках.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться