Hướng dẫn print page with css styles using javascript - in trang có kiểu css bằng javascript
Đây có vẻ như là một giải pháp quá phức tạp cho một yêu cầu thực sự đơn giản, nhưng có lẽ có những chi tiết bạn đã bỏ qua câu hỏi. Show
Có vẻ như bạn bao gồm tệp CSS động chỉ cho mục đích in, nhưng CSS đã có một tính năng cho việc này. Tôi khuyên bạn nên loại bỏ tất cả JavaScript của bạn, và thay vào đó, hãy gói CSS của bạn trong một truy vấn truyền thông in, như vậy:print media query, like so:
Đơn giản chỉ cần bao gồm các kiểu in này với phần còn lại của CSS của trang của bạn và trình duyệt sẽ chăm sóc việc áp dụng chúng cho phương tiện in.print media. Nếu bạn hoàn toàn phải làm điều này với JavaScript, bạn sẽ cần phải đợi cho đến khi bảng kiểu được tải xong. Bạn có thể làm điều đó bằng cách tạo phần tử, gắn trình nghe sự kiện cho sự kiện 9, sau đó thêm nó vào DOM.Cái gì đó như: Sử dụng CSS nội tuyến trong JavaScript. function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); } Ở đây divprint sử dụng CSS nội tuyến được viết trong Script Inside. Nó đang hoạt động một. Bài viết này đã được cập nhật vào năm 2020 để phản ánh các thực tiễn tốt nhất mới nhất trong kiểu in CSS in. Trong bài viết này, chúng tôi xem xét nghệ thuật tạo các trang web thân thiện với máy in với CSS. "Ai in trang web?" Tôi nghe thấy bạn khóc! Tương đối ít trang sẽ được sao chép trên giấy. Nhưng hãy xem xét:
Thật không may, các trang in có thể là một trải nghiệm bực bội:
Nhiều nhà phát triển ủng hộ khả năng truy cập web, nhưng ít ai nhớ làm cho web được in có thể truy cập! Chuyển đổi phản ứng, phương tiện truyền thông liên tục sang giấy phân trang ở bất kỳ kích thước và định hướng nào cũng có thể là thách thức. Tuy nhiên, kiểm soát in CSS đã có thể trong nhiều năm và một bảng kiểu cơ bản có thể được hoàn thành trong vòng vài giờ. Các phần sau đây mô tả các tùy chọn được hỗ trợ tốt và thực tế để làm cho các trang của bạn thân thiện với máy in. Bản in phong cáchIn CSS có thể là:
Sự lựa chọn sẽ phụ thuộc vào trang web/ứng dụng của bạn. Cá nhân, tôi sử dụng các kiểu màn hình làm cơ sở in hầu hết thời gian. Tuy nhiên, tôi đã sử dụng các bảng kiểu riêng cho các ứng dụng có đầu ra hoàn toàn khác nhau-chẳng hạn như hệ thống đặt phòng phiên hội nghị hiển thị lưới thời gian biểu trên màn hình nhưng lịch trình theo thời gian trên giấy. Một bảng kiểu in có thể được thêm vào HTML function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }0 sau bảng kiểu tiêu chuẩn:
Các kiểu function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }1 sẽ được áp dụng ngoài các kiểu màn hình khi trang được in.addition to screen styles when the page is printed. Để phân tách màn hình và phương tiện in, function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }2 chỉ nhắm mục tiêu màn hình:
Ngoài ra, các kiểu in có thể được bao gồm trong tệp CSS hiện có bằng các quy tắc function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }3. Ví dụ:
Bất kỳ số lượng quy tắc function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }4 nào cũng có thể được thêm vào, vì vậy điều này có thể thực tế để giữ các phong cách liên quan lại với nhau. Các quy tắc màn hình và in cũng có thể được phân tách nếu cần thiết:
Kiểm tra đầu ra máy inNó không cần thiết để giết cây và sử dụng mực đắt tiền mỗi khi bạn muốn kiểm tra bố cục in của mình! Các tùy chọn sau đây sao chép các kiểu in trên màn hình. Xem thử bản inTùy chọn đáng tin cậy nhất là tùy chọn xem trước in trong trình duyệt của bạn. Điều này cho thấy cách phá vỡ trang sẽ được xử lý bằng cách sử dụng kích thước giấy mặc định của bạn. Ngoài ra, bạn có thể lưu hoặc xem trước trang bằng cách xuất sang PDF. Những công cụ phát triểnCác devtools (F12 hoặc CMD/Ctrl + Shift + I) có thể mô phỏng các kiểu in, mặc dù việc phá vỡ trang đã giành được. Trong Chrome, hãy mở các công cụ nhà phát triển và chọn nhiều công cụ hơn, sau đó hiển thị từ menu biểu tượng ba chấm ở trên cùng bên phải. Thay đổi phương tiện mô phỏng CSS để in ở dưới cùng của bảng điều khiển đó.More Tools, then Rendering from the three-dot icon menu at the top right. Change the Emulate CSS Media to print at the bottom of that panel. Trong Firefox, hãy mở các công cụ của nhà phát triển và nhấp vào biểu tượng mô phỏng phương tiện chuyển đổi trên ngăn Kiểu của Thanh tra Tab Tab:Toggle print media simulation icon on the Inspector tab’s style pane: Hack thuộc tính phương tiện của bạnGiả sử bạn sử dụng thẻ function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }5 để tải máy in CSS, bạn có thể tạm thời thay đổi thuộc tính function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }6 thành function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }7:
Một lần nữa, chiến thắng này tiết lộ trang bị phá vỡ. Don Tiết quên khôi phục thuộc tính thành function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }8 sau khi bạn hoàn thành thử nghiệm. Loại bỏ các phần không cần thiếtTrước khi làm bất cứ điều gì khác, loại bỏ và thu gọn nội dung dự phòng với function PrintPage() { var sOption="toolbar=yes,location=no,directories=yes,menubar=yes,scrollbars=yes,width=900,height=300,left=100,top=25"; var sWinHTML = document.getElementById('divPrint').innerHTML; var winprint=window.open("","",sOption); winprint.document.open(); winprint.document.write('<html><head><style type="text/css">'); winprint.document.write('body,td,th{font-family:Arial, Helvetica, sans-serif;font-size:10px;color:#000000}'); winprint.document.write('.style1 {font-size:11px; font-weight:bold; color:#000000; }'); winprint.document.write('.style2 {font-size:11px; font-weight:bold; color:#FFFFFF; }'); winprint.document.write('</style></head><body onload="window.print();">'); winprint.document.write(sWinHTML); winprint.document.write('</body></html>'); winprint.document.close(); winprint.focus(); }9. Các phần không cần thiết điển hình trên giấy có thể bao gồm các menu điều hướng, hình ảnh anh hùng, tiêu đề, chân trang, hình thức, thanh bên, tiện ích truyền thông xã hội và các khối quảng cáo (thường là bất cứ thứ gì trong 0):
Có thể cần phải sử dụng 1 nếu chức năng CSS hoặc JavaScript đang hiển thị các yếu tố theo trạng thái UI cụ thể. Sử dụng 2 là thông thường được khuyến nghị, nhưng chúng tôi có thể biện minh cho việc sử dụng nó trong một tập hợp các kiểu máy in cơ bản ghi đè mặc định màn hình.Tuyến tính hóa bố cụcTôi đau đớn khi nói điều này, nhưng Flexbox và Grid hiếm khi chơi độc đáo với bố cục máy in trong bất kỳ trình duyệt nào. Nếu bạn gặp phải vấn đề, hãy xem xét sử dụng 3 hoặc tương tự trên các hộp bố cục và điều chỉnh kích thước khi cần thiết. Ví dụ: đặt 4 để trải dài toàn bộ chiều rộng trang.Flexbox and Grid rarely play nicely with printer layouts in any browser. If you encounter issues, consider using 3 or similar on layout boxes and adjust dimensions as necessary. For example, set 4 to span the full page width.Kiểu máy inKiểu dáng thân thiện với máy in bây giờ có thể được áp dụng. Khuyến nghị:
Các đề xuất khác bao gồm Áp dụng cột CSSTiêu chuẩn A4 và giấy thư Hoa Kỳ có thể dẫn đến các dòng văn bản dài hơn và không dễ đọc. Xem xét sử dụng các cột CSS trong bố cục in. Ví dụ:
Trong ví dụ này, các cột sẽ được tạo ra khi có ít nhất 9 không gian ngang. Không cần thiết lập các truy vấn truyền thông; Các cột bổ sung sẽ được thêm vào trên giấy rộng hơn.Sử dụng biên giới thay vì màu nềnMẫu của bạn có thể có các phần hoặc hộp gọi ra biểu thị bằng các bảng màu tối hơn hoặc nghịch đảo: Lưu mực bằng cách biểu diễn các yếu tố đó với đường viền: Xóa hoặc đảo ngược hình ảnhNgười dùng sẽ không muốn in hình ảnh và hình nền trang trí và không thiết yếu. Bạn có thể xem xét một mặc định trong đó tất cả các hình ảnh được ẩn trừ khi chúng có lớp 0: 0Lý tưởng nhất, hình ảnh in nên sử dụng màu tối trên nền sáng. Có thể thay đổi màu SVG nhúng HTML trong CSS, nhưng sẽ có những tình huống bạn có bitmap tối hơn: Một bộ lọc CSS có thể được sử dụng để đảo ngược và điều chỉnh màu sắc trong bảng kiểu in. Ví dụ: 1Kết quả: Thêm nội dung bổ sungPhương tiện in thường yêu cầu thêm thông tin không cần thiết trên màn hình. Thuộc tính CSS 1 có thể được sử dụng để nối văn bản vào 2 và 3 Các yếu tố giả. Ví dụ: hiển thị URL liên kết trong ngoặc sau văn bản: 2Hoặc bạn có thể thêm tin nhắn chỉ in: 3Đối với các tình huống phức tạp hơn, hãy xem xét sử dụng một lớp như 0 trên các phần tử chỉ có thể nhìn thấy khi được in,. Ví dụ: 4CSS: 5Lưu ý: Hầu hết các trình duyệt hiển thị URL và ngày/giờ hiện tại trên tiêu đề và/hoặc chân trang được in, do đó, hiếm khi cần phải tạo thông tin này trong mã. Trang phá vỡ trangCác thuộc tính CSS3 5 và 6 cho phép bạn kiểm soát cách thức phá vỡ trang, cột hoặc khu vực hoạt động trước và sau một phần tử. Hỗ trợ là tuyệt vời, nhưng các trình duyệt cũ hơn có thể sử dụng các thuộc tính 7 và 8 tương tự.Các giá trị 5 và 6 sau đây có thể được sử dụng:
Ví dụ: Buộc bị phá vỡ trang ngay trước bất kỳ tiêu đề 9 nào: 6Lưu ý: Hãy cảnh giác với việc phá vỡ trang quá mức. Lý tưởng nhất, đầu ra máy in nên sử dụng càng ít trang càng tốt. Thuộc tính 0 (và 1 cũ hơn) chỉ định xem việc ngắt trang có được phép bên trong một phần tử hay không. Các giá trị được hỗ trợ thường được hỗ trợ:
4: Buộc nghỉ trang 7 5: Bí danh của 4top of a page. Imagine a block with five lines of text. The browser wants to make a page break after line four so the last line appears at the top of the next page. Setting 6 breaks on or before line two so at least three lines carry over to the next page. 7: Force Page Breaks để phần tiếp theo là trang bên tráibottom of a page. 8: Force Page Breaks để phần tiếp theo là trang bên phải
Thuộc tính 0 (và 1 cũ hơn) chỉ định xem việc ngắt trang có được phép bên trong một phần tử hay không. Các giá trị được hỗ trợ thường được hỗ trợ: 8 2: Tránh nghỉ bên trong nếu có thể 3: Tránh ngắt trang bên trong khi có thểĐiều này có thể được ưu tiên hơn để chỉ định ngắt trang, vì bạn có thể sử dụng càng ít giấy càng tốt trong khi tránh ngắt trang trong dữ liệu được nhóm như bảng hoặc hình ảnh:Thuộc tính 5 chỉ định số lượng dòng tối thiểu trong một khối phải được hiển thị ở đầu trang. Hãy tưởng tượng một khối với năm dòng văn bản. Trình duyệt muốn tạo một trang bị hỏng sau dòng bốn để dòng cuối cùng xuất hiện ở đầu trang tiếp theo. Cài đặt 6 bị hỏng hoặc trước dòng hai để ít nhất ba dòng chuyển sang trang tiếp theo.
Thêm một vài lần phá vỡ trang và xóa các phần không cần thiết sẽ làm hài lòng người dùng và nâng trang web của bạn lên trên các đối thủ cạnh tranh. Thêm nó vào danh sách việc cần làm của bạn! Để biết kiến thức CSS nâng cao hơn, hãy đọc cuốn sách của chúng tôi, CSS Master, Phiên bản thứ 2. Chúng ta có thể thêm các kiểu vào trang web bằng JavaScript không?Bằng cách sử dụng các phương thức DOM JavaScript, bạn có thể thêm các kiểu nội tuyến hoặc kiểu toàn cầu vào phần tử..
Bạn có thể tạo kiểu cho JavaScript với CSS không?JavaScript có thể tương tác với các kiểu dáng, cho phép bạn viết các chương trình thay đổi kiểu của tài liệu một cách linh hoạt.Có ba cách để làm điều này: bằng cách làm việc với danh sách các kiểu dáng của tài liệu, ví dụ: thêm, xóa hoặc sửa đổi bảng kiểu., allowing you to write programs that change a document's style dynamically. There are three ways to do this: By working with the document's list of stylesheets—for example: adding, removing or modifying a stylesheet.
Tôi có thể đặt cài đặt in cửa sổ với JavaScript không?Cửa sổ.Phương thức print () gọi bản dựng của trình duyệt trong plugin hỗ trợ in để in trang DOM hiện tại.Bạn có thể kiểm tra tài liệu, nó không hỗ trợ bất kỳ đối số hoặc cài đặt nào.Để thiết lập bản in, bạn chỉ có thể sử dụng GUI của trình duyệt (ví dụ: bật hoặc tắt đồ họa nền, v.v.)to setup the print, you can only utilize the browser's GUI( ex. enable or disable background graphics etc.)
@Media in CSS là gì?Các CSS AT-Rule có thể được sử dụng để áp dụng một phần của bảng kiểu dựa trên kết quả của một hoặc nhiều truy vấn truyền thông.Với nó, bạn chỉ định một truy vấn phương tiện và một khối CSS để áp dụng cho tài liệu khi và chỉ khi truy vấn phương tiện khớp với thiết bị mà nội dung đang được sử dụng.. With it, you specify a media query and a block of CSS to apply to the document if and only if the media query matches the device on which the content is being used. |