Html in tràn

Gần đây, một khách hàng đã gọi cho tôi phàn nàn rằng các trang của họ in không chính xác. Điều này chưa bao giờ là một vấn đề trước đây. Nhưng rõ ràng, bây giờ trang web đã hoạt động được một thời gian và có một số nội dung tốt, các trang đã ngừng in chính xác. Sau khi tự mình thử, tôi thực sự khó chịu khi thấy rằng trang đầu tiên được in nhưng sau đó không có trang nào khác được in. Và trên hết, trang đầu tiên thậm chí còn không được in đúng cách; . Và sau đó, không có gì sau đó

Tôi chưa bao giờ thấy hành vi này trước đây. Sau vài giờ tìm kiếm trên Google, tôi không tìm thấy câu trả lời, nhưng tôi đã tìm đúng đường dẫn. Tất cả các đề xuất để xử lý sự cố in tràn nội dung này đều nói về việc loại bỏ các kiểu FLOAT và làm cho màn hình trở nên "tĩnh" và thậm chí cố gắng đưa vào một số loại lệnh MS Word "luôn ngắt sau". Không cái nào hiệu quả với tôi, nhưng nó khiến tôi nghĩ về màn hình

Trước khi tôi nói về giải pháp, hãy xem thực tế vấn đề. Hãy tưởng tượng có một trang thực sự đơn giản có hai phần tử DIV;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
	<title>Print Style Cutoff Overflow Issues</title>
	<style type="text/css">

		div#pagewidth {
			margin: 0px auto 0px auto ;
			overflow: hidden ;
			width: 500px ;
			}

		div#sitecontent {}

	</style>
</head>
<body>

	<!-- BEGIN: Page Width. -->
	<div id="pagewidth">

		<!-- BEGIN: Site Content. -->
		<div id="sitecontent">

			<!---
				Make some really long content so that when we
				go to print, we will definitely be requiring
				more than once page.
			--->
			<cfloop
				index="intPara"
				from="1"
				to="20"
				step="1">

				<p>
					Strings of lights above the bed Curtains
					drawn and a glass of red All I ever get for
					Christmas is blue Saxophone on the radio
					Recorded forty years ago All I ever get for
					Christmas is blue When you play my song,
					play it slowly Play it like I'm sad and
					lonely Maybe you can solve my mystery, Wrap
					me in your arms and whisper You miss me With
					a man sex is miserable, But the snow is so
					beautiful All I ever get for christmas is
					blue It would take a miracle To get me out
					to a shopping mall All I really want for
					Christmas is you Let them ring the bells
					They won't miss us I'll be drinking down
					your kisses Deep into the night we'll go
					stealing Underneath the starry ceiling
					Revealing White lights on the Christmas tree
					Thank God you are here with me All I ever
					get for Christmas is blue
				</p>

			</cfloop>

		</div>
		<!-- END: Site Content. -->

	</div>
	<!-- END: Page Width. -->

</body>
</html>

Bây giờ, nếu chúng tôi cố gắng in trang này, chúng tôi sẽ gặp sự cố tràn nội dung thực sự kỳ lạ

Html in tràn

Chú ý từ trang 1 đến trang 2 nội dung tràn hết ra ngoài lề trang rồi không sang trang 2 nữa. Không có gì ngạc nhiên khi khách hàng của tôi hơi khó chịu. Điều này là hoàn toàn không thể chấp nhận được

Sự cố bắt nguồn từ các DIV, PageWidth và SiteContent lồng nhau. Tôi không chắc tại sao việc lồng nhau dường như lại gây ra sự cố, nhưng tôi biết rằng nếu tôi xóa PageWidth DIV gốc, riêng trang có SiteContent DIV sẽ được in bình thường. Tôi nghĩ nó có liên quan đến thực tế là cả hai phần tử đều là phần tử cấp khối. Một phần tử cấp khối bên trong một phần tử cấp khối khác phải gặp khó khăn trong việc tìm ra thời điểm ngắt bởi vì, theo quan điểm của phần tử cha, không có "ngắt trang" để chứa. Chỉ khi bản thân phần tử gốc có thể bao bọc độc đáo thì phần tử cấp độ khối bên trong cũng phải phá vỡ một cách độc đáo (. đây là tất cả lý thuyết ở đây, nhưng đó là cách tôi tìm ra giải pháp của mình)

Vì vậy, để khắc phục vấn đề này, chúng ta chỉ cần thay đổi cách DIV gốc, PageWidth, hiển thị. Sử dụng định nghĩa biểu định kiểu chỉ in (như được biểu thị bằng thuộc tính media="print" trong thẻ STYLE), chúng tôi sẽ thay đổi cách hiển thị của PageWidth thành "nội tuyến" khi ở trong ngữ cảnh của lệnh in. Việc hiển thị "nội tuyến" sẽ buộc thẻ PageWidth DIV hoạt động giống như một phần tử SPAN hoặc STRONG, về bản chất, sẽ tự động ngắt từ trang này sang trang khác khi được yêu cầu

<head>
	<title>Print Style Cutoff Overflow Issues</title>
	<style type="text/css">

		div#pagewidth {
			margin: 0px auto 0px auto ;
			overflow: hidden ;
			width: 500px ;
			}

		div#sitecontent {}

	</style>

	<!-- Print styles. -->
	<style type="text/css" media="print">

		div#pagewidth {
			display: inline ;
			}

	</style>
</head>

Vì thẻ STYLE có thuộc tính media="print", nên chúng ta không phải lo lắng về việc các kiểu đó ảnh hưởng đến giao diện thời gian chạy của trang. Điều này chỉ dành cho các kịch bản in. Có cái này tại chỗ, khi chúng tôi đi in

Html in tràn

bạn sẽ thấy rằng tất cả các nội dung kết thúc một cách thích hợp. Không chỉ vậy, vì chúng tôi đã thay đổi DIV thành một phần tử nội tuyến, điều đó có nghĩa là tất cả các quy tắc Chiều rộng trên đó không còn được áp dụng nữa (hầu hết các phần tử nội tuyến không thích có chiều rộng rõ ràng). Đây thực sự là một điều tốt vì phiên bản in của một trang có thể không được đặt bất kỳ chiều cao và chiều rộng nào, ngoại trừ bố cục của chính giấy in

Ghi chú. Nội dung trang bao gồm lời bài hát Over The Rhine, All I Ever Get For Christmas Is Blue - một bài hát tuyệt vời

Bạn muốn sử dụng mã từ bài đăng này?

Thích bài đăng này? . ❤️ Share the Love With Your Friends! ❤️

Tweet nội dung này Những suy nghĩ sâu sắc của @BenNadel - Sửa các DIV khiến nội dung bị cắt bớt khi in https. //www. đồng xu. com/go/851


Ý kiến ​​độc giả

Html in tràn
Ken Auenson

36 Bình luận

Bến
Chỉ nhìn thoáng qua, tôi đoán rằng những gì đang xảy ra có liên quan đến định nghĩa ẩn tràn
Nếu div bên ngoài của bạn được đặt rộng 500px và thứ duy nhất bên trong nó là div, thì lý do để có định nghĩa tràn là gì?
Trong bất kỳ trường hợp nào. biểu định kiểu in là công cụ tuyệt vời. Tôi luôn xác định một mục để loại bỏ những thứ như điều hướng nội dung (menu bên) và các mục khác can thiệp vào nội dung thực tế

Cảm ơn vì bài đăng

Html in tràn
Ben Nadel

15,364 bình luận

@Ken,

tràn. ẩn có nghĩa là ngăn trang bị hỏng nếu ai đó đưa vào nội dung không phù hợp (tức là. dán một bảng từ MS Word rộng 900px). Ví dụ này không chứng minh nhu cầu đó nhiều lắm, nhưng nếu bạn nghĩ đây là một phần của bố cục nhiều cột của hệ thống quản lý nội dung, thì tràn. ẩn sẽ quan trọng hơn nhiều

Và vâng, bạn đã đúng về việc loại bỏ tràn. ẩn giấu. Nếu tôi xóa cái đó cho biểu định kiểu In, nó cũng hoạt động. Chỉ là một cách khác để thay đổi DIV bằng cách nào đó để in. Mặc dù vậy, tôi thích quy tắc "nội tuyến" vì nó cũng sẽ loại bỏ các định nghĩa về chiều cao/chiều rộng (không thực sự hoạt động tốt với các phần tử nội tuyến). Nhưng chắc chắn, hai câu trả lời đúng cho cùng một vấn đề

Html in tràn
Glenn Engel

1 Bình luận

Tôi gặp vấn đề tương tự với Firefox về việc cắt bớt trang và thấy rằng tôi bị tràn trang. ẩn trong một div lồng nhau. Tuy nhiên, cài đặt hiển thị. inline không có tác dụng. Thay đổi để tràn. hiển thị cho kiểu in mặc dù đã khắc phục sự cố của tôi

Html in tràn
Richard Tanda

1 Bình luận

Này, tôi chỉ muốn cảm ơn bạn đã dành thời gian để viết bài viết này. Bạn đã giúp tôi giải quyết một vấn đề mà tôi đang cố gắng khắc phục

Vì vậy, cảm ơn bạn rất nhiều và tất cả những điều tốt đẹp nhất

Kịp các công việc tuyệt vời

Richard

Html in tràn
Ben Nadel

15,364 bình luận

@Richard,

Rất vui vì tôi có thể giúp. Mặc dù vậy, tôi vừa gặp một tình huống với Internet Explorer 7 mà cách này không khắc phục được sự cố. Cùng một trang hoạt động tốt trong IE6 và FireFox, nhưng không sao, IE7 phải khác. (

Html in tràn
Leandro Falanga

1 Bình luận

Tôi gặp sự cố này từ một tuần trước. Tôi đã tìm kiếm trên web trong vài ngày, tìm thấy các giải pháp "rất khó hiểu" không hiệu quả
Hãy dành một phút để giải thích rõ ràng về lỗi, điều đó quan trọng hơn là biết giải pháp. Khi tôi đọc lý do tại sao lại xảy ra, tôi hiểu mình nên làm gì
Cảm ơn vì đã rất chính xác và ngắn gọn, đó là những gì mọi người cần, bạn là người đàn ông của tôi

Html in tràn
Ben Nadel

15,364 bình luận

@Leandro,

vui mừng được giúp đỡ. Kể từ khi đăng bài này, tôi đã gặp phải một số tình huống mà điều này không giúp được gì trong IE7. Tuy nhiên, phần lớn, kiểu sửa lỗi này có vẻ hoạt động tốt

Html in tràn
Andrew Mager

1 Bình luận

Cảm ơn, mẹo tuyệt vời

Html in tràn
nó đẹp

1 Bình luận

Cảm ơn rất nhiều vì sở trường tuyệt vời
Tôi đang cố in ra một số nội dung ẩn trong thẻ div được đặt thuộc tính tràn. Đã thử nhiều lần nhưng lần nào cũng thất bại. Cuối cùng tôi tìm thấy blog của bạn và nó hoạt động ngay bây giờ. Công cụ tuyệt vời

Html in tràn
Jay

1 Bình luận

Tôi gặp sự cố tương tự nhưng khi tôi thử áp dụng phương pháp trên trang này, tôi có thể làm cho nó hoạt động tốt trong IE 7, nhưng sau đó mọi thứ đã bị xáo trộn trong Firefox

Cuối cùng tôi nhận thấy rằng bất cứ ai đã tạo ra bản in. css đã đặt một kiểu cho div chứa chính (được gọi là #uber) và đặt cho nó chiều rộng tự động. Tôi đã xóa dòng này và nó đã khắc phục sự cố của tôi trong IE và FireFox

Tôi không phải là chuyên gia CSS, vì vậy tôi không biết việc ném chiều rộng tự động vào div vùng chứa chính sẽ làm được điều này, nhưng div nội dung thực tế được lồng trong (3 hoặc 4 cấp độ) nên điều này cuối cùng đã ảnh hưởng đến nội dung của tôi khi in

Tôi đã dành toàn bộ thời gian để tập trung vào phong cách của div nội dung mà không nghĩ rằng vấn đề có thể đến từ một trong những div tổ tiên của nó

Chúng ta có thể quay lại trình duyệt dựa trên văn bản không?

Html in tràn
Ben Nadel

15,364 bình luận

@Jay,

tôi nghe thấy bạn. Khi tôi bắt đầu thử nghiệm trên IE7, toàn bộ nhiệm vụ này thậm chí còn khó hơn. Tôi đã rất khó chịu khi phát hiện ra rằng những thứ không in được trong IE6 đã gây rối trong IE7. Arrrg

Html in tràn
Đức Phật Soumpholphakdy

1 Bình luận

Cảm ơn rất nhiều, tôi không thể tin rằng tôi đã không thử hiển thị nội tuyến với css của mình, LOL cứu tôi với

Đức Phật Soumpholphakdy
giải trí ở tầng dưới

Html in tràn
Ted Graf

1 Bình luận

Này Ben,
Bản sửa lỗi này hoạt động tốt trong Firefox 3, nhưng như bạn đã nói, không phải trong IE7
Bạn đã gặp may mắn nào trong IE7 chưa?

Html in tràn
Ben Nadel

15,364 bình luận

@Ted,

Nó hoạt động đôi khi nhưng không phải những người khác. Tôi đoán đó chỉ là một trong những công cụ bạn có thể sử dụng khi cố gắng khắc phục sự cố in ấn, nhưng đó không phải là mục đích cuối cùng.

Html in tràn
Lisa

1 Bình luận

Cảm ơn, điều này đã giải quyết vấn đề một cách hoàn hảo

Html in tràn
manan shah

1 Bình luận

cái này không hoạt động với chiều cao của div

Tôi đã sửa chiều cao của div và tràn thành ẩn sau đó khi tôi in trang, nó sẽ in nội dung bị tràn

vì vậy bất cứ ai có thể giúp tôi?

cảm ơn,
manan shah

Html in tràn
Shean

1 Bình luận

Cảm ơn vì đã đăng bài này

Vấn đề của tôi đã được giải quyết bằng cách sử dụng

* {
tràn ra. hiện rõ. quan trọng;
}

div#tên {
trưng bày. nội tuyến;
}

Html in tràn
Dan Moore

1 Bình luận

Thanks. Giải pháp đã đăng phù hợp với tôi--Tôi không cần thực hiện bất kỳ thao tác gyratins nào được liệt kê bên dưới

Cảm ơn một lần nữa

Html in tràn
máy cạo râu

1 Bình luận

cảm ơn bạn đã chia sẻ, tràn. hiện rõ. quan trọng; . yêu công việc của bạn

Html in tràn
Ben Nadel

15,364 bình luận

@Dan, @Moshaver,

em yêu. )

Html in tràn
lính gầy

1 Bình luận

Tôi không thể sử dụng tràn. hiện rõ. quan trọng; . ẩn trên div chứa ảnh xem trước của các mục

Điều này làm cho tất cả các hình ảnh xem trước có cùng kích thước và mang lại vẻ ngoài đẹp mắt

* { tràn ra. hiện rõ. quan trọng;

rõ ràng sẽ phá vỡ điều đó và một vài thứ khác giống như nó

Ngoài ra một số người sử dụng tràn. ẩn để làm cho các div cha mẹ mở rộng xung quanh các con nổi của chúng

CSS cần một cách chính thức để làm cho các div gốc mở rộng xung quanh các div con nổi của chúng mà không cần xóa các bản hack như rõ ràng. cả trên các nhịp ở dưới cùng của div gốc hoặc lạm dụng tràn. ẩn giấu

Html in tràn
Đoạn văn

2 Bình luận

Giải pháp hoạt động tốt ở một mức độ nào đó trên firefox. nhưng IE vẫn có vấn đề. . (. có ai tìm ra giải pháp cho việc này không ??

cảm ơn trước

Html in tràn
David Brewer

1 Bình luận

Đã gặp vấn đề này một vài lần, tôi thấy việc đơn giản hóa bố cục và loại bỏ tràn, định vị và thả nổi (toàn bộ hoặc ở một mức độ nào đó) sẽ khắc phục được sự cố

Gỡ lỗi là một công việc khó khăn nhưng bạn có thể thử thêm đường viền để xem điều gì đang diễn ra tốt nhất có thể, lý tưởng nhất là loại bỏ bố cục bản in thành xương trần và giải thích cho khách hàng biểu định kiểu bản in không nhằm mục đích bắt chước trang web mà để cung cấp nội dung chính trong bản in

Hy vọng rằng sẽ giúp,
dave

Html in tràn
Đoạn văn

2 Bình luận

Tôi đã xóa Div đã thử đặt ô bảng. và loại bỏ phao. đã thử các giá trị khác nhau để tràn. không hoạt động. [. (]. rất cần giải pháp
Cảm ơn trước cho bất kỳ câu trả lời, đề xuất và giải pháp

Html in tràn
Ben Nadel

15,364 bình luận

@Parag,

Đôi khi nó chắc chắn cần một số sửa lỗi nghiêm trọng. Một nỗi đau. Tôi chỉ cố gắng tìm ra điều này khi khách hàng yêu cầu cụ thể;

Html in tràn
Matt Huggins

2 Bình luận

Rất cảm ơn, bài đăng của bạn đã giúp tôi khắc phục cùng một loại vấn đề mà một công ty tôi đang làm việc cũng gặp phải trên trang của họ. Bạn chắc chắn đã giúp hướng dẫn tôi đi đúng hướng để sửa lỗi này

Html in tràn
Ben Nadel

15,364 bình luận

@Matt,

Tuyệt vời - rất vui vì nó hoạt động tốt cho bạn

Html in tràn
WebNgười Đàn ÔngĐi Bộ

290 Bình luận

Thông tin mới quan trọng về "tràn" thuộc tính CSS

Vừa có một chiếc iPad, gần đây tôi đã sử dụng Safari đa chạm nhiều hơn (nghĩa là Safari dành cho iPod Touch, iPhone và iPad). Tôi đã phát hiện ra một thứ đã thoát khỏi sự chú ý của tôi trên iPod. Safari đa chạm không hỗ trợ tràn viền. tự động hoặc tràn. cuộn. Nó hoạt động giống như tràn. ẩn giấu

Xin thông tin cho bạn, vì điều này có thể sẽ trở thành một vấn đề khi iPad trở nên phổ biến hơn

Html in tràn
Ben Nadel

15,364 bình luận

@Steve,

Có thật không?? . Điều đó có vẻ giống như một thứ CSS cốt lõi; . Cảm ơn vì đã mang đến sự chú ý của tôi

Html in tràn
WebNgười Đàn ÔngĐi Bộ

290 Bình luận

Apple vừa thông báo rằng có trợ giúp iPad ở cuối dấu trang của iPad Safari. Tôi đã đến đó và điều hướng đến Safari> Thu phóng và cuộn. Ở đó họ đề cập rằng cách cuộn khung là bằng 2 ngón tay chứ không phải 1 ngón tay như phần còn lại của trang

Để đề phòng, tôi quay lại div có thể cuộn (cái có style="overflow. auto") và đã thử nó. Chắc chắn, nó đã làm việc. Vì vậy, vấn đề là Safari KHÔNG NÓI VỚI BẠN rằng nội dung có thể cuộn được bằng cách đặt các thanh cuộn. Không có phản hồi đó, người dùng tiếp tục sử dụng một ngón tay để cuộn và không biết rằng có nội dung mà họ không nhìn thấy

Nó giống như đặt văn bản màu trắng trên nền trắng. Nội dung ở đó, nhưng người dùng không biết nó ở đó

Vẫn là vi phạm CSS2 mà Safari không đặt thanh cuộn. Nhưng ít nhất, nếu bạn quen thuộc với một trang web và bạn biết rằng có nội dung ở đó mà bạn không nhìn thấy và bạn biết rằng bạn phải chuyển sang dùng 2 ngón tay, thì nội dung đó sẽ không thể truy cập được

Tôi vẫn nghĩ đó là một lỗi. Nhưng tôi hy vọng nó sẽ hữu ích để biết vấn đề thực sự là gì và cách giải quyết vấn đề bằng 2 ngón tay. (nghe nghịch quá. )

Tôi có thể buộc một trang không

Chúng tôi có thể thêm thẻ ngắt trang với kiểu "ngắt trang sau. luôn luôn" tại điểm mà chúng tôi muốn giới thiệu ngắt trang trong trang html .

Làm cách nào để xử lý ngắt trang khi in một bảng HTML lớn?

Để khắc phục điều này, chỉ cần thay đổi nó thành ngắt trang sau. tự động . Nó sẽ ngắt chính xác và không tạo thêm trang trống.

Làm cách nào để chỉ in một div?

Để in nội dung của div trong JavaScript, trước tiên hãy lưu trữ nội dung của div trong một biến JavaScript, sau đó nhấp vào nút in . Nội dung của phần tử div HTML sẽ được trích xuất.

Tại sao máy in của tôi bị cắt ở bên phải của trang?

Kiểm tra cài đặt lề trong Tệp>Thiết lập trang để đảm bảo rằng lề phải vẫn ổn . Ngoài ra, hãy kiểm tra định dạng đoạn văn để đảm bảo rằng bạn không có thụt lề phải âm có thể khiến văn bản kéo dài sang một khu vực mà máy in của bạn không thể in được.