Bootstrap 3 - Друк макета та розривів після кожного стовпця сітки


78

Якщо взяти цей приклад (переглянути його тут: http://www.bootply.com/93816 )

<div class="container">
  <div class="row">
    <div class="col-md-6">Column1</div>
    <div class="col-md-6">Column2</div>
  </div>
</div>

Коли ви робите попередній перегляд згенерованої сторінки, це здається, що стовпці складаються / розбиваються (ніби поплавок видаляється) замість того, щоб відображати їх у звичайному макеті сітки.

Я переглянув @media printрозділи bootstrap.css і не бачу нічого пов’язаного з цим, divщо могло б спричинити це.

Хтось знає, як цього уникнути?


7
IIRC це спричинено тим, що сторінка займає лише кілька сотень пікселів (~ 500 пікселів), тобто інші медіа-запити, зазвичай призначені для телефонів / планшетів, стосуються і друку сторінки
Bojangles

Відповіді:


126

Коментар Bojangles підвів мене у правильному напрямку, тому я відповім на власне запитання.

Використовуючи колонки сітки розміром 'xs', які відповідно до http://getbootstrap.com/css/#grid-options призначені для "Надзвичайно маленьких телефонів пристроїв (<768px)", Bootstrap радісно друкує, як очікувалося.

<div class="container">
  <div class="row">
    <div class="col-xs-6">Column1</div>
    <div class="col-xs-6">Column2</div>
  </div>
</div>

2
Можна виправити, але сподіваюся, що це буде правильний спосіб. використання розміру xs, прискіпливість ускладнить читання на меншому телефоні ... iPhone включено.
Нестор

6
я спробував це, і це не спрацювало. Використання bootstrap 3.1
Алексіс

2
Дякую, ти щойно врятував мені сьогодні життя :)
sonlexqt

2
Дякую Спробуйте 1 : Я використовував col-xs це спрацювало Спробуйте 2 : col-sm + друк у альбомному режимі Також працювало Спробуйте 3 : col-md + друк у альбомному режимі Також працювало Спробуйте 4 col-lg + друк у альбомному режимі Також працювало Спробуйте Друк 5 кольорів у портретному режимі зламався Спробуйте друк 6 кольорів у портретному режимі зламаний - - -Всі ці варіації можуть бути пов’язані з моєю нерівномірною настройкою div
vijay

4
Як @vijay сказав, що буде використовувати col-xs в режимі друку, чи є це щось змінити? мені потрібно, щоб сторінка була надрукована, як вона виглядає на великих пристроях (col-lg)?
Анас

33

Рішення повинно бути на елементах, а не на самій сторінці. Також не слід покладатися на col-xs -..., оскільки вони призначені для невеликих екранів / пристроїв.

Проблема в тому, що сама сторінка невелика з точки зору пікселів, тому bootstrap вважає, що їй потрібно застосувати стилі xs.

Команда Bootstrap не вирішить цю проблему і пов’язана з https://code.google.com/p/chromium/issues/detail?id=273306

Рішення Bootstrap полягало в тому, щоб неясно задокументувати цю `` химерну '' поведінку https://github.com/twbs/bootstrap/issues/12078 .

На мою думку, повинен бути набір col-print -... набору класів макета, щоб дуже маленькі та друковані могли існувати одночасно.

Моє проміжне рішення таке:

@media print {
  [class*="col-sm-"] {
    float: left;
  }
}

Ви можете використовувати col-print, у нашому випадку ми використовуємо sm, а не xs, оскільки ми хочемо, щоб xs блокував макет, саме тому використання цих класів для друку не буде працювати.


Це добре, але неповно. Для того, щоб це працювало, вам також потрібно скопіювати ці рядки у свою таблицю стилів друку.
Nathan Arthur

@NathanArthur ваше посилання не працює.
реформований


Посилання все ще порушено.
Стів Берн

22

На основі рішення Gerard, ви можете використовувати bootstrap mixin .make-grid () таким чином, щоб друк ніколи не падав до розміру xs

@media print {
  .make-grid(sm);
}

або згенерований css (якщо вам не подобається використовувати менше):

@media print {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}

Я використовую Bootstrap версії 4.3.1, і модифікована версія цього методу мені підійшла: Використовуючи @media print, я застосував лише атрибути відсотків до .col-sm-1 до .col-sm-12, оскільки інші класи не використовуються в Bootstrap 4. Тепер мені просто потрібно знайти подібне рішення для стовпців із змінною шириною, тобто коли .col-sm-auto та col використовуються разом підряд. Я не хочу, щоб вид друку стовпців із змінною шириною був типовим для мобільного розміру області перегляду.
SukieC

7

Я створив окремий print.css і додав наступне:

@page {
    size: A3;
    margin-left: -5cm;
    margin-right: -5cm;
    }

Чудово працює з Chrome, але негативні поля вбивають IE. Здається, Firefox у цьому не потребує. Мене зацікавив би інший підхід.


Для мене IE11 Shrink To Fit чудово працює, доки ми визначаємо фіксовану ширину до верхнього контейнера і вирівнюємо його за лівим краєм (видаляємо автоматичне поле), щоб не застосовувати цей код для IE11, який я використовував @media print and (-webkit-min-device-pixel-ratio:0)лише для відповідності chrome, але будь ласка зауважте, що у моїй внутрішній системі не було вимог до FF
Francisco Aquino
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.