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 printbootstrap.css 의 섹션을 살펴 보았고 div그 와 관련된 어떤 것도 볼 수 없습니다 .

누구든지 이것을 피하는 방법을 알고 있습니까?


7
IIRC 이것은 페이지가 (~ 500px)에 걸쳐 수백 "픽셀"에 불과하기 때문에 발생합니다. 즉, 일반적으로 휴대폰 / 태블릿을위한 다른 미디어 쿼리도 페이지 인쇄에 적용됩니다.
Bojangles

답변:


126

Bojangles 댓글은 올바른 방향으로 나아 갔으므로 내 질문에 대답하겠습니다.

http://getbootstrap.com/css/#grid-options 에 따르면 "Extra small devices Phones (<768px)"용인 'xs'크기 그리드 열을 사용하면 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
나는 이것을 시도했지만 작동하지 않았습니다. 부트 스트랩 3.1 사용
Alexis

2
덕분에, 당신은 내 인생 오늘 : 저장
sonlexqt

2
감사합니다 시도 1 : 나는 col-xs를 사용했습니다 시도 2 : col-sm + 가로 모드에서 인쇄 또한 작동했습니다 시도 3 : col-md + 가로 모드에서 인쇄 또한 작동 4 시도 col-lg + 가로 모드에서 인쇄 또한 작동 시도 5 col-lg print In Portrait mode broke 6 시도 col-md print In Portrait 모드에서---이 모든 변형은 내 불규칙한 div 설정 때문일 수 있습니다
vijay

4
@vijay가 인쇄 모드에서 col-xs를 사용할 것이라고 말했듯이 이것을 변경할 수 있습니까? 대형 장치 (col-lg)에서 보이는 것처럼 페이지를 인쇄해야합니까?
Anas

33

솔루션은 페이지 자체가 아닌 요소에 있어야합니다. 또한 col-xs -...에 의존해서는 안됩니다. 왜냐하면 이들은 작은 화면 / 장치 용이기 때문입니다.

문제는 페이지 자체가 픽셀 측면에서 작기 때문에 부트 스트랩은 xs 스타일을 적용해야한다고 생각합니다.

이 문제는 Bootstrap 팀에서 해결하지 않으며 https://code.google.com/p/chromium/issues/detail?id=273306 과 관련이 있습니다.

부트 스트랩 솔루션은 https://github.com/twbs/bootstrap/issues/12078 이 '기발한'동작을 모호하게 문서화하는 것이 었습니다 .

제 생각에는 col-print -... 레이아웃 클래스 세트가 있어야합니다. 그래서 더 작은 크기와 인쇄물이 공존 할 수 있습니다.

내 임시 솔루션은 다음과 같습니다.

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

col-print를 사용할 수 있습니다. 우리의 경우 xs가 아닌 sm을 사용합니다. xs가 레이아웃을 차단하기를 원하기 때문입니다. 이것이 인쇄를 위해 이러한 클래스를 사용하는 것이 작동하지 않는 이유입니다.


이것은 좋지만 불완전합니다. 이 작업을 수행하려면 이 행 을 인쇄 스타일 시트 에 복사 해야합니다 .
나단 아서

@NathanArthur 귀하의 링크가 끊어졌습니다.
개정


링크가 여전히 끊어졌습니다.
Steve Byrne

22

Gerard 솔루션을 기반으로 부트 스트랩 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까지 백분율 속성 만 적용했습니다. 부트 스트랩 4에서는 사용되지 않습니다. 이제 가변 너비 열에 대한 유사한 솔루션을 찾아야합니다. 즉, .col-sm-auto와 col이 한 행에 함께 사용되는 경우입니다. 가변 너비 열의 인쇄 뷰가 기본적으로 모바일 뷰포트 크기 조정을 원하지 않습니다.
SukieC

7

별도의 print.css를 만들고 다음을 추가했습니다.

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

Chrome에서 잘 작동하지만 음수 여백은 IE를 죽입니다. Firefox는 그것을 필요로하지 않는 것 같습니다. 다른 접근 방식에 관심이 있습니다.


나 IE11의 위해 우리가 사용했던이 (자동 마진을 제거) IE11 나는이 코드를 적용 할 수있는 상단 컨테이너에 고정 폭과 왼쪽 정렬을 정의로 맞추기 긴으로 잘 작동 축소 @media print and (-webkit-min-device-pixel-ratio:0)만 일치 크롬에 있지만하시기 바랍니다 내 내부 시스템에는 FF 요구 사항이 없었습니다.
Francisco Aquino
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.