2011-11-02 52 views
7

Tôi đang sử dụng @media để in tiêu đề trên mỗi trang khi in một màn hình trong trang trong Firefox. Tôi đã thiết lập css của mình như sau:@media print div: Cách giải quyết văn bản trang trùng lặp trên tiêu đề?

@media print { 
    div.printDivHeader { 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 1.0em; 
    position: fixed; 
    display: block; 
    width: 100%; 
    height: auto; 
    top: 0; 
    } 
} 

Vấn đề là nội dung của trang thứ hai chồng chéo với tiêu đề div in. (tức là, trên trang thứ hai, tiêu đề không ép buộc nội dung trang xuống và vì vậy tôi nhận được văn bản được viết trên văn bản). Có cách nào để xử lý việc này không?

+0

Chúng tôi sẽ cần html và css của trang thứ hai đó, cảm ơn – GregM

+0

Bằng cách này, tôi không chắc chắn bạn biết nhưng phiên bản hiện tại của Firefox có chức năng Xem trước bản in. Nếu không có điều này, người ta sẽ phải in hoặc in ra giấy ... cả hai lựa chọn rườm rà. – ANeves

Trả lời

1

Nội dung nào đó có position: fixed; không bao giờ đẩy nội dung tĩnh (hoặc tương đối). Hoặc là có kiểu dáng để đảm bảo chúng không trùng lặp ... hoặc chúng trùng nhau.
Xem this example JSFiddle, sử dụng css của bạn.

Sự cố nằm ở một nơi khác.
Tiêu đề không trùng lặp với văn bản trong trang đầu tiên như thế nào? Bạn có cái gì đó đẩy văn bản xuống? Margin-top? Gì?

Có thể chia sẻ ví dụ gốc hoặc đơn giản không? (Bạn có thể sử dụng JSFiddle.)

+1

Vấn đề là nếu tôi không sử dụng vị trí: cố định tiêu đề sẽ không xuất hiện trên mỗi trang – MTR

+0

(Ý của bạn là đăng nhận xét này lên câu trả lời của @Augus?) Có, tôi hiểu. Theo quan điểm của tôi, vấn đề là: một cái gì đó đang đẩy nội dung của trang đầu tiên xuống, nhưng không phải là nội dung của các trang khác; rằng cái gì đó không phải là tiêu đề; do đó không có thay đổi nào đối với tiêu đề sẽ giúp ích và chúng ta nên xem xét những gì khác đang thực hiện. – ANeves

+0

Trên trang đầu tiên có phần tử H2 có đủ đệm ở trên cùng mà chồng chéo không xảy ra. Ngoài ra, có vẻ như khi tôi làm điều này: @media print { div.printDivHeader { họ phông chữ: Arial, Helvetica, sans-serif; kích thước phông chữ: 1.0em; vị trí: cố định; display: block; chiều rộng: 100%; chiều cao: tự động; hàng đầu: 0; } @page { lề: 1cm; lề trên: 5cm; } }/* Tất cả các lề được đặt thành 2cm */ ... nó hoạt động tốt cho trang đầu tiên (lề như mong đợi) nhưng không hoạt động cho các trang tiếp theo. – MTR

1

Uhm Tôi nghĩ rằng bạn nên sử dụng

position:relative 

thay vì

position:fixed 
3

Thêm phần này vào header quy tắc phương tiện truyền thông của bạn: bottom:3em; sửa đổi 3em theo thứ tự về nội dung để phù hợp.

Sau đó thêm một chọn div riêng biệt để các quy tắc cho khu vực nội dung của bạn:

div.printDivContent { 
    position: relative; 
    width: 100%; 
    top:3em; //match size of header 
    left:0px; 
    right:0px; 
} 
2

Mấu chốt CSS "hộp trang trí-break" có thể giúp khi thiết lập để "nhân bản". Xem: CSS Fragmentation

Bạn có thể tạo lớp vùng chứa quanh nội dung của mình với lề trên và dưới cùng với kích thước đầu trang và chân trang và sau đó đặt hộp trang trí-vỡ thành "sao chép" trên vùng chứa này.

#content { 
    box-decoration-break: clone; 
    margin-bottom: 90px; 
} 
Các vấn đề liên quan