Tôi đã thiết lập CSS tùy chỉnh cho một trang web trên WordPress. Khi tôi nhấp vào nút in và nó chuyển hướng tôi đến URL thân thiện với bản in, trang có vẻ ổn nhưng khi tôi nhấp vào nút In hoặc PDF thì CSS in không hoạt động
Tôi không thể chuyển URL nhưng có thể thực hiện riêng tư
Đang xem 1 trả lời [trong tổng số 1]
Tác giả plugin In & PDF bởi PrintFriendly
[@inthân thiện]
Bạn có thể gửi URL tới một trang cụ thể tới support@printfri…. com
Ngoài ra, nếu bạn gặp vấn đề với màu nền hoặc hình ảnh, hãy đảm bảo bao gồm những điều sau đây trong CSS tùy chỉnh PrintFriendly của bạn
Hãy xem cách thực hiện trong các trình duyệt khác nhau. Mặc dù lưu ý ngày của bài viết blog này. Nội dung này có xu hướng thay đổi theo thời gian, vì vậy nếu có gì sai ở đây, hãy cho chúng tôi biết và chúng tôi có thể cập nhật nội dung đó
Trong Firefox…
Đó là một nút nhỏ trong DevTools. Quá dễ
- Mở DevTools [Command+Option+i]
- Chuyển đến tab "Thanh tra"
- Nhấp vào biểu tượng trang nhỏ
Trong Chrome và Edge…
Tôi nghĩ nó hơi lạ một chút, nhưng nó vẫn là một việc khá dễ thực hiện trong DevTools
- Mở DevTools [Command+Option+i]
- Nếu bạn không có thứ-đặc-biệt-lạ-dưới-diện tích, hãy nhấn phím Escape
- Nhấp vào biểu tượng menu để chọn các tab để mở
- Chọn tab “Kết xuất”
- Cuộn xuống cuối tùy chọn tab “Rendering”
- Chọn in từ các tùy chọn cho Giả lập phương tiện CSS
Trong Safari…
Safari có một nút nhỏ rất giống Firefox, nhưng có vẻ khác
- Mở DevTools [Command+Option+i]
- Chuyển đến tab "Thanh tra"
- Nhấp vào biểu tượng trang nhỏ
Khi in một trang web, điều quan trọng là phải điều chỉnh bố cục và nội dung trang của bạn. Nhiều yếu tố không liên quan đến việc in ấn, điều quan trọng là phải kiểm soát ngắt trang đúng cách và xử lý các siêu liên kết. Tất cả điều này có thể được kiểm soát bởi CSS và thậm chí bạn có thể kích hoạt in bằng Javascript hoặc phản ứng với hành động in của người dùng. Hãy học cách
Thêm biểu định kiểu in
Khi bạn muốn áp dụng một số quy tắc CSS nhất định khi in, bạn có thể dễ dàng thêm một biểu định kiểu riêng, biểu định kiểu này sẽ chỉ được sử dụng cho mục đích in
Nếu bạn thêm biểu định kiểu của mình theo cách này, nó sẽ được áp dụng cùng với biểu định kiểu thông thường của bạn. Đây thường là những gì bạn cần. Tuy nhiên, nếu bạn muốn có hai biểu định kiểu riêng biệt - một chỉ dành cho màn hình, một chỉ để in, bạn có thể thực hiện như sau
Có biểu định kiểu riêng chỉ để in có thể hữu ích, nếu bạn muốn tải nó động, chỉ khi cần hoặc bạn muốn các kiểu in của mình được tách biệt hoàn toàn
Truy vấn phương tiện truyền thông
Một cách hiện đại hơn để bao gồm CSS dành riêng cho bản in là sử dụng truy vấn phương tiện
Bạn có thể xác định rằng chỉ có thể áp dụng một bộ quy tắc CSS nhất định khi in
@media print { ... }
Hoặc chỉ khi sử dụng màn hình
@media screen { ... }
Cách tiếp cận này có thể được ưa thích hơn để tách biểu định kiểu in vì bạn có thể dễ dàng có CSS thường và CSS in cho một trang/thành phần ở cùng một nơi. Điều này làm cho việc bảo trì dễ dàng hơn và ít có khả năng bạn sẽ quên cập nhật kiểu in khi thực hiện các thay đổi đối với kiểu thông thường
Kiểm tra khung CSS của bạn
Nếu bạn đang sử dụng các kiểu CSS bên ngoài, chẳng hạn như một khung như Bootstrap, trước tiên bạn nên kiểm tra hỗ trợ in của nó
Bootstrap, ví dụ, cung cấp một số hỗ trợ ngay lập tức - nó ẩn thanh điều hướng, v.v.
Xóa nội dung không cần thiết
Trang web chứa nhiều nội dung không thực sự hữu ích khi in. Điều này có thể là
- Thanh điều hướng
- Nút chia sẻ xã hội
- Nội dung phương tiện như video hoặc âm thanh
- Cookie và thanh công cụ đăng ký
- Quảng cáo
Và nhiều hơn nữa. Rất hữu ích khi xóa nội dung này để in. Bằng cách này, người dùng của bạn tiết kiệm giấy, mực và đầu ra dễ đọc và không lộn xộn
Thật dễ dàng để ẩn các phần tử bằng cách đặt
0@media print { ... }
@media print { .navigation { display: none; } }
Tất nhiên, bạn có thể thực hiện bất kỳ điều chỉnh nào cần thiết như giảm kích thước, thay đổi phông chữ, đơn giản hóa đồ họa - gần như bất kỳ điều gì bạn có thể làm trong CSS
Lề trang
Khi in, có thể hữu ích khi ghi đè cài đặt mặc định cho lề trang của bạn [ví dụ: để cung cấp không gian để viết ghi chú]
@page { margin: 20mm; }
Tất nhiên, bạn có thể đặt riêng các lề riêng lẻ. Điều này có thể hữu ích khi in tài liệu hai mặt. Đó là bởi vì khi bạn muốn liên kết các tài liệu của mình với nhau, bạn cần thêm dung lượng để dễ đọc hơn. Tuy nhiên, với các trang hai mặt, khoảng trống này nằm ở bên trái hoặc bên phải của trang, tùy thuộc vào trang đó là số lẻ hay số chẵn
May mắn thay, bạn có thể chọn các trang chẵn và lẻ trước ngày
1 và@media print { ... }
2. Left ở đây có nghĩa là trang hướng về bên trái, và right là hướng về bên phải@media print { ... }
@page:left { margin-right: 30mm; } @page:right { margin-left: 30mm; }
Nếu bạn muốn xử lý riêng trang đầu tiên, bạn có thể sử dụng
3@media print { ... }
ngắt trang
Để dễ đọc hơn, có thể hữu ích khi kiểm soát vị trí ngắt trang được chèn vào
Tránh nghỉ
Có thể bất tiện nếu hình ảnh hoặc ví dụ mã bị chia thành hai trang. May mắn thay, bạn có thể đảm bảo rằng một số yếu tố nhất định sẽ không bao giờ bị chia cắt. Giả sử chúng tôi muốn làm điều đó cho hình ảnh và khối mã
1Bạn cũng có thể chỉ định ngắt trang không được chèn trước hoặc sau một phần tử. Điều này có thể hữu ích, ví dụ, để tiêu đề không được đặt ở phần cuối cùng trên trang và không bị tách khỏi đoạn sau
2phá vỡ rõ ràng
Đôi khi, có thể hữu ích khi chèn ngắt trang trước hoặc sau một số thành phần nhất định
Ví dụ: bạn có thể cần mỗi chương bắt đầu trên trang riêng của nó. Bạn có thể đạt được nó bằng cách sử dụng
4 trên tiêu đề chương của bạn@media print { ... }
4Bạn cũng có thể chèn dấu ngắt trang sau phần tử bằng cách sử dụng
5@media print { ... }
Có các thuộc tính cũ hơn ngắt trang trước, ngắt trang sau và ngắt trang bên trong, hiện không được dùng nữa thay cho ngắt trước, ngắt sau và ngắt bên trong
Tách đoạn
May mắn thay, bạn có quyền kiểm soát chi tiết đối với cách các đoạn văn được chia sang trang tiếp theo. Chúng tôi có hai tài sản cho việc này -
6 và@media print { ... }
7. Cách đặt tên nghe có vẻ kỳ quặc, nhưng đó là vì nó bắt nguồn từ nghệ thuật sắp chữ@media print { ... }
trẻ mồ côi
Khi một đoạn văn được chia thành hai trang, thuộc tính
7 xác định số lượng dòng tối thiểu nên được giữ trên trang đầu tiên@media print { ... }
0quả phụ
Điều này rất giống với trẻ mồ côi. Đó là số dòng tối thiểu, nên có trên trang thứ hai khi một đoạn văn được chia thành hai trang
1Do cách đặt tên khác thường, có thể khó nhớ sự khác biệt giữa góa phụ và trẻ mồ côi và đâu là đâu. Bạn có thể sử dụng cách ghi nhớ sau
Một đứa trẻ mồ côi bắt đầu một mình, một góa phụ kết thúc một mình
Lưu ý rằng trình duyệt không được đảm bảo 100% tuân theo các quy tắc này khi in. Nó có thể quyết định phá vỡ quy tắc này để có lợi cho một số tối ưu hóa in ấn khác
Có một [tính đến tháng 4/2020] cho góa phụ và trẻ mồ côi, 93. 76%, ngoại trừ Firefox
siêu liên kết
Bạn nên cẩn thận hơn khi xử lý các siêu liên kết được in. Nhiều trang ngày nay không sử dụng gạch chân cho các siêu liên kết và thay vào đó phân biệt các liên kết bằng màu sắc. Điều này không thuận tiện lắm khi in, đặc biệt là với bản in đen trắng. Đánh dấu các siêu liên kết bằng gạch dưới là một cách truyền thống tốt để nhận ra chúng ngay cả khi in
2Một vấn đề khác với các siêu liên kết là trong một tài liệu in, không có cách nào để xác định nơi liên kết trỏ đến. May mắn thay, điều này có thể được khắc phục chỉ bằng một chút CSS
3Điều này bao gồm URL sau mỗi phần tử
9, vì vậy bạn có thể thấy rõ nơi nó đang trỏ đến. URL nhỏ hơn một chút so với văn bản thông thường để dễ đọc hơn. Đây là giao diện của nó@media print { ... }
Điều này là tốt, nhưng chúng ta có thể làm tốt hơn nữa. Vấn đề đầu tiên cần giải quyết là đảm bảo chỉ các liên kết trong văn bản được xử lý chứ không phải tất cả các liên kết trên trang. Chúng ta có thể đặt trước bộ chọn
9 trong mã của mình bằng@media print { ... }
1. Hoặc tốt hơn nữa, với vùng chứa cho văn bản trang của chúng tôi, chẳng hạn như@media screen { ... }
2 [hoặc bất kỳ tên nào bạn có thể có]@media screen { ... }
Cải tiến thứ hai có thể hạn chế điều này chỉ với các liên kết bên ngoài. Chúng tôi có thể làm điều này bằng cách chỉ chọn các thẻ
9 trong đó@media print { ... }
4 bắt đầu bằng@media screen { ... }
5@media screen { ... }
4Giải pháp này hoạt động, nhưng nếu bạn có nhiều liên kết, đặc biệt là với các URL dài, nó có thể trở nên khó đọc. Có một giải pháp thay thế được mô tả bởi Aaron Gustafson
Ý tưởng không phải là đặt URL sau mỗi liên kết, mà là một số tham chiếu [1,2,3,. ] và sau đó ở cuối tài liệu cung cấp bảng tham chiếu với tất cả số và URL của chúng. Nó cũng bao gồm các trường hợp một liên kết xuất hiện nhiều lần - trong những trường hợp như vậy, các liên kết trùng lặp có cùng một số
Điều này cũng liên quan đến một chút JavaScript, nhưng nó có thể hữu ích khi làm việc với nhiều liên kết. Đây là một ví dụ về cách tiếp cận này trong hành động
Hộp lề trang
Khi in các trang web, trình duyệt có thể bao gồm nhiều thông tin khác nhau trong phần đầu và phần cuối của mỗi trang, chẳng hạn như
- Số trang
- tiêu đề trang
- URL gốc
Hiện tại, bạn không có quyền kiểm soát nội dung này. May mắn thay, điều này sắp thay đổi. Có một thông số kỹ thuật giải quyết vấn đề này
Điều này có thể hữu ích để thêm thông tin như bản quyền, logo trang, bộ đếm trang tùy chỉnh, v.v.
Có 16 vùng mà bạn có thể nhắm mục tiêu
- 4 góc của trang
- 3 vùng ở mỗi cạnh [trên, dưới, phải, trái]
Ví dụ: nếu bạn muốn nhắm mục tiêu đến cuối trang, bạn có thể chọn từ
6@media screen { ... }
7@media screen { ... }
8@media screen { ... }
9@media screen { ... }
0@media print { .navigation { display: none; } }
Hãy xem xét một ví dụ cụ thể
5Bạn có thể chỉ định không chỉ nội dung mà cả các thuộc tính bổ sung như phông chữ hoặc đường viền
6Thông số kỹ thuật hiện đang ở giai đoạn Bản nháp của Biên tập viên [kể từ tháng 4/2020] và hiện tại. Hy vọng, điều này sẽ thay đổi trong tương lai gần. Bạn có thể theo dõi sự cố Chrome tương ứng. Các phần cũ hơn của thông số kỹ thuật này đã được triển khai [chẳng hạn như đặt lề trang], nhưng nội dung tùy chỉnh cho hộp lề vẫn chưa xuất hiện
Xử lý in trong JS
Với JavaScript, bạn không cần phải dựa vào người dùng để bắt đầu in trang của mình. Bạn có thể tự kích hoạt nó bằng cách sử dụng
7Bạn có thể muốn sử dụng nút in của riêng mình nếu bạn cần thực hiện một số logic JS tùy chỉnh trước khi in - chẳng hạn như thao tác DOM, tải dữ liệu mới, v.v.
Vấn đề là bạn không thể đảm bảo rằng người dùng sẽ sử dụng nút của bạn thay vì in trình duyệt gốc
Đối với những trường hợp như vậy, khi bạn cần thực hiện một số logic tùy chỉnh trước [hoặc thậm chí sau khi] in, có hai sự kiện hữu ích
- bản in trước
- dấu vết
Như tên gợi ý, hộp thoại đầu tiên được kích hoạt trước khi bạn vào hộp thoại in, vì vậy bạn có thể làm bất cứ điều gì cần thiết. Cái thứ hai được kích hoạt sau khi quá trình in kết thúc và bạn có thể sử dụng nó để hoàn nguyên về trạng thái ban đầu
Bạn có thể đăng ký trình nghe sự kiện của mình như thế này [tất nhiên, điều này có thể khác nếu sử dụng khung]
8Người ta thường ưu tiên làm càng nhiều càng tốt trong CSS, nhưng đôi khi việc sử dụng JS có thể là cần thiết
Bản xem trước bản in của Công cụ dành cho nhà phát triển
Có thể tốn thời gian để mở hộp thoại xem trước bản in trong trình duyệt của bạn bất cứ khi nào bạn thực hiện thay đổi và muốn kiểm tra xem trang của bạn trông như thế nào khi in. May mắn thay, trong Công cụ dành cho nhà phát triển, bạn có thể dễ dàng mô phỏng giao diện của trang khi in mà không cần kích hoạt hộp thoại in
Trình duyệt Chrome
Trong Chrome Devtools, bạn có thể chuyển sang chế độ xem in
- Mở Devtools của bạn
- Nhấn hoặc Ctrl+Shift+P [hoặc ⌘+⇧+P trên máy Mac]
- Tìm kiếm
1@media print { .navigation { display: none; } }
- Chọn
2 và nhấn Enter@media print { .navigation { display: none; } }
Một cửa sổ
3 mới sẽ xuất hiện@media print { .navigation { display: none; } }
Ở đây bạn có thể chọn
9Mặc dù không liên quan đến in ấn, nhưng bạn có thể mô phỏng một số tùy chọn kết xuất thú vị hơn trong tab này, chẳng hạn như người dùng thích chủ đề sáng hay tối hay giảm chuyển động, bạn có thể hiển thị FPS, v.v.
firefox
Trong Firefox, bạn chỉ cần nhấp vào nút
4 được đánh dấu màu đỏ trong hình ảnh sau@media print { .navigation { display: none; } }
Phần kết luận
Hỗ trợ in ấn thường bị bỏ qua và không được thực hiện. Nhiều người dùng vẫn in các trang web và bạn nên chú ý thiết kế các trang của mình sao cho thân thiện với máy in. Nó thường không khó lắm, nhưng nó có thể nâng cao đáng kể trải nghiệm người dùng và khả năng sử dụng trang web của bạn
Ngay cả khi người dùng không in các trang của bạn trên giấy, họ vẫn có thể in chúng thành PDF để sau này có thể đọc ngoại tuyến trên máy tính bảng hoặc trình đọc sách điện tử của họ. Đối với những trường hợp này, biểu định kiểu in cũng hữu ích
Chúng tôi có thể áp dụng CSS cho trang để in không?
Bạn có thể sử dụng CSS để thay đổi giao diện của trang web khi được in trên giấy . Bạn có thể chỉ định một phông chữ cho phiên bản màn hình và một phông chữ khác cho phiên bản in.Làm cách nào để sử dụng CSS để in?
Công cụ dành cho nhà phát triển. DevTools [ F12 hoặc Cmd/Ctrl + Shift + I ] có thể mô phỏng các kiểu in, mặc dù ngắt trang sẽ không được hiển thị. Trong Chrome, mở Công cụ dành cho nhà phát triển và chọn Công cụ khác, sau đó chọn Kết xuất từ menu biểu tượng ba chấm ở trên cùng bên phải. Thay đổi Phương tiện giả lập CSS để in ở cuối bảng điều khiển đó.