คำแนะนำสำหรับการดีบักสไตล์การพิมพ์หรือไม่


238

เมื่อไม่นานมานี้ฉันกำลังทำงานกับสไตล์การพิมพ์สำหรับเว็บไซต์และฉันรู้ว่าฉันกำลังสูญเสียวิธีที่มีประสิทธิภาพในการปรับแต่ง เป็นสิ่งหนึ่งที่ต้องมีวงจรการรีโหลดสำหรับการทำงานบนเค้าโครงบนหน้าจอ:

  • เปลี่ยนรหัส
  • คำสั่งแท็บ
  • โหลด

แต่กระบวนการทั้งหมดนั้นจะยากลำบากกว่าเดิมเมื่อคุณพยายามพิมพ์:

  • เปลี่ยนรหัส
  • คำสั่งแท็บ
  • โหลด
  • พิมพ์
  • เหล่ที่รูปภาพตัวอย่างก่อนพิมพ์
  • เปิด PDF ในหน้าตัวอย่างเพื่อตรวจสอบเพิ่มเติม

มีเครื่องมือที่ฉันขาดหายไปที่นี่? ผู้ตรวจสอบของ WebKit มีช่องทำเครื่องหมาย "แกล้งเป็นสื่อเพจ" หรือไม่ มีเวทมนต์ที่ Firebug ( ตัวสั่น ) ทำอะไรได้บ้าง?


4
ฟังก์ชัน "ตัวอย่างก่อนพิมพ์" ของเบราว์เซอร์ที่รองรับ (เช่น Firefox) เป็นอย่างไร ฉันได้แก้ไขจุดบกพร่องบางส่วนของหน้าเว็บเพื่อพิมพ์ด้วย
Halil Özgür

2
ความเป็นไปได้ที่ซ้ำกันของคุณจะดีบัก CSS ที่พิมพ์ได้อย่างไร
outis

3
ใน Firefox เปิด "แถบเครื่องมือนักพัฒนา" พร้อม Shift + F2 พิมพ์ "media emulate print" (หรือ "emu" + Tab + "print"), Enter
Marcello Nuccio


@MarcelloNuccio นี่ควรเป็นคำตอบ stackoverflow.com/a/28873496/1696030ได้รับคะแนนโหวตค่อนข้างดีสำหรับการเปรียบเทียบ “ แถบเครื่องมือผู้พัฒนา” นั้นทำให้เข้าใจผิดเล็กน้อยเนื่องจากเป็นส่วนต่อประสานบรรทัดคำสั่ง
Volker E.

คำตอบ:


327

มีตัวเลือกสำหรับสิ่งนั้นในการตรวจสอบของ Chrome

  1. เปิดตัวตรวจสอบ DevTools (mac: Cmd+ Shift+ C, windows: Ctrl+ Shift+ C)
  2. คลิกที่ไอคอนโหมดสลับอุปกรณ์ปุ่มสลับโหมดอุปกรณ์ซึ่งอยู่ที่มุมซ้ายบนของแผง DevTools (windows: Ctrl+ Shift+ M, mac: Cmd+ Shift+ M)
  3. คลิกที่ไอคอนการแทนที่เพิ่มเติมที่ การแทนที่มากกว่ามุมขวาบนของเบราว์เซอร์วิวพอร์ตเพื่อเปิดลิ้นชัก devtools
  4. จากนั้นเลือกสื่อในลิ้นชักการจำลองและทำเครื่องหมายที่ช่องทำเครื่องหมายสื่อ CSS

    ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้ควรทำเคล็ดลับ

อัปเดต: เมนูมีการเปลี่ยนแปลงใน DevTools สามารถพบได้โดยคลิกที่เมนู "สามจุด" ที่มุมขวาบน> เครื่องมือเพิ่มเติม> การตั้งค่าการแสดงผล> สื่อจำลอง> พิมพ์

ที่มา: หน้า Google DevTools *


5
ขอบคุณนั่นคือสิ่งที่ฉันกำลังค้นหาไม่พบ: / ทางลัดไม่ทำงานอีกต่อไป ฉันเพิ่งทำไอคอน F12 + เกียร์ที่มุมล่างขวาจากนั้นการตั้งค่าจะอยู่ภายใต้แท็บการแทนที่
Aurelien

18
น่าเสียดายที่มันไม่ถูกต้อง 100% :(
maazza

9
ใน Chrome 32.0.1700.14 beta-m Aura, "Emulate CSS media [print]" หายไป :(
Rocket Hazmat

11
คำตอบนี้ต้องได้รับการแก้ไข ตั้งแต่ Chrome 48 ตัวจำลองสไตล์การพิมพ์จะไม่อยู่ภายใต้ "การจำลอง" อีกต่อไป แต่ภายใต้ "การแสดงผล"
chharvey

13
เมนูสามจุด (ด้านขวา) ในตัวตรวจสอบ> เครื่องมือเพิ่มเติม> การตั้งค่าการแสดงผล> เลียนแบบสื่อ> พิมพ์
allicarn

74

ฉันสมมติว่าคุณต้องการควบคุมหน้าต่างที่พิมพ์ออกมาให้มากที่สุดโดยไม่ต้องใช้วิธี HTML เป็น PDF ... ใช้หน้าจอ @media เพื่อดีบัก - @media print สำหรับ css ขั้นสุดท้าย

เบราว์เซอร์ที่ทันสมัยสามารถให้ภาพอย่างรวดเร็วสำหรับสิ่งที่จะเกิดขึ้นในเวลาที่พิมพ์โดยใช้นิ้วและจุด@media queryใน

@media screen and (max-width:8.5in) { /* resize your window until the event is triggered */
    html { width:8.5in; }
    body { font: 9pt/1.5 Arial, sans-serif; } /* Roughly 12px font */
 ...
}

เมื่อเบราว์เซอร์ของคุณแสดง "นิ้ว" คุณจะมีความคิดที่ดีขึ้นเกี่ยวกับสิ่งที่คาดหวัง วิธีนี้ควรทั้งหมด แต่จบวิธีการแสดงตัวอย่างก่อนพิมพ์ เครื่องพิมพ์ทั้งหมดจะทำงานร่วมกับptและinหน่วยและการใช้เทคนิค @media จะช่วยให้คุณเห็นสิ่งที่จะเกิดขึ้นและปรับได้อย่างรวดเร็ว Firebug (หรือเทียบเท่า) จะทำให้กระบวนการนั้นเร็วขึ้น เมื่อคุณเพิ่มการเปลี่ยนแปลงใน @media คุณจะได้รับรหัสทั้งหมดที่คุณต้องการสำหรับไฟล์ CSS ที่ลิงก์โดยใช้media = "print"แอตทริบิวต์ - เพียงแค่คัดลอก / วางกฎหน้าจอ @media ลงในไฟล์ที่อ้างอิง

โชคดี. เว็บไม่ได้ถูกสร้างขึ้นสำหรับการพิมพ์ การสร้างโซลูชันที่ให้เนื้อหาทั้งหมดของคุณมีสไตล์เท่ากับสิ่งที่เห็นในเบราว์เซอร์เป็นไปไม่ได้ตลอดเวลา ตัวอย่างเช่นเลย์เอาท์แบบของเหลวสำหรับผู้ชมส่วนใหญ่ 1280 x 1024 ไม่ได้แปลเป็นเครื่องพิมพ์เลเซอร์ขนาด 8.5 x 11 ที่ง่ายดาย

การอ้างอิง W3C สำหรับการปฏิเสธ: http://www.w3.org/TR/css3-mediaqueries/


แค่ต้องการแสดงความคิดเห็นว่าวิธีนี้ค่อนข้างฉลาด ปรับขนาดหน้าต่างเป็นสไตล์การพิมพ์แบบ "สลับ" ได้ง่ายกว่าการใช้ฟังก์ชั่นตัวอย่างก่อนพิมพ์ ในขณะที่คุณยังต้องทำเช่นนั้นบางครั้งเพื่อความเข้ากันได้กับ IE และนี่เป็นสิ่งที่ยอดเยี่ยมสำหรับการเริ่มต้นรูปแบบการพิมพ์ซ้ำ
chucknelson

@Chuck ขอบคุณชาย เฮ้ฉันรู้ว่าการสาธิตของฉันไม่ออนไลน์ดังนั้นฉันจึงสร้างซอขึ้นมา jsfiddle.net/dNEmT
Dawson

20

Chrome 48คุณสามารถดีบักสไตล์การพิมพ์ได้ในแท็บการแสดงผล

คลิกบนไอคอนเมนูขวาของการตรวจสอบและการตั้งค่าการแสดงผล

แก้ไข
สำหรับ Chrome 58ตำแหน่งเปลี่ยนเป็น Web Inspector> เมนู> เครื่องมือเพิ่มเติม> การแสดงผล


4
Chrome 49: F12 (คอนโซลผู้พัฒนา) -> ESC (คอนโซล) -> การเรนเดอร์ -> เลียนแบบสื่อสิ่งพิมพ์
user1477388

19

ใน Chrome v41 มี แต่อยู่ในจุดที่ต่างออกไปเล็กน้อย

ป้อนคำอธิบายรูปภาพที่นี่


3
ใน v53 มันอยู่บนแท็บ Rendering แทนที่ด้านล่างมีช่องทำเครื่องหมายสำหรับ Emulate Media ซึ่งจะเปิดใช้งานแบบเลื่อนลงที่คุณสามารถเลือกพิมพ์ในคล้ายกับภาพหน้าจอที่ให้
James Gray

16

มีวิธีที่ง่ายในการแก้ไขข้อบกพร่องสไตล์การพิมพ์ของคุณโดยไม่ต้องเปลี่ยนแอตทริบิวต์สื่อใด ๆ ในรหัส HTML ของคุณ (แน่นอนว่ามันไม่ได้แก้ปัญหาความกว้าง / หน้า):

  • ใช้ส่วนขยาย Firefox + นักพัฒนาเว็บ
  • ในเมนู Web Developer เลือก CSS / Display CSS ตาม Media Type / Print
  • กลับไปที่เมนูนักพัฒนาเว็บเลือกตัวเลือก / คงคุณสมบัติ

ตอนนี้คุณกำลังดู CSS การพิมพ์และคุณสามารถโหลดหน้าเว็บซ้ำได้เรื่อย ๆ เมื่อเสร็จแล้วให้ยกเลิกการเลือก "คุณลักษณะคงอยู่" และโหลดซ้ำคุณจะได้รับหน้าจอ CSS อีกครั้ง

HTH


7
วาทกรรมที่แตกต่างจากตัวอย่างก่อนพิมพ์อย่างมาก บางทีนี่อาจเป็นเรื่องแปลกใน css ของฉัน ไม่ว่าในกรณีใดมันไม่สามารถแก้ปัญหาได้ ขอบคุณแม้ว่า
heartpunk

ใช่แตกต่างกันโดยสิ้นเชิงสำหรับฉันเช่นกัน ฉันติดตาม jsfiddle นี้ ( jsfiddle.net/2wk6Q/3 ) และตัวอย่างก่อนพิมพ์แสดงหน้าเว็บที่มีระยะขอบสีแดง แต่นี่แตกต่างอย่างสิ้นเชิง
duality_

1
ฉันต้องบอกว่า "การแก้ปัญหา" นี้ทำงานได้ดีที่สุดสำหรับฉัน บางทีฉันโชคดีและนั่นเป็นเหตุผลว่าทำไมมีความแตกต่างเพียงเล็กน้อยระหว่างหน้าจอการพิมพ์เนทีฟและหน้าจอการพิมพ์เว็บ แต่มันช่วยให้ฉันทราบได้อย่างชัดเจนว่าเหตุใดช่องว่างปรากฏและสิ่งที่สำคัญที่สุด - ฉันสามารถอ่านรหัสด้วย firebug เมื่อ
Erik Čerpnjak

13

UI ของ Chrome นั้นแตกต่างกันอีกครั้งตั้งแต่ v53

ฉันไม่จำเป็นต้องใช้คุณลักษณะนี้บ่อย ๆ แต่เมื่อใดก็ตามที่ฉันทำฉันจะต้องใช้เวลาตลอดไปในการพิจารณาว่าทีม Chrome ย้ายไปที่ใดตั้งแต่ครั้งสุดท้ายที่ฉันเขียนวงจรที่พยายามติดตามมัน

โปรดสังเกตว่าเป็นเมนู ... ในบานหน้าต่าง Dev Tools ไม่ใช่เมนู ... ในบานหน้าต่างเบราว์เซอร์ Chrome

ภาพตัวอย่างเครื่องพิมพ์ตั้งแต่ v53 บน MacOS

ตอนนี้เลื่อนลงในส่วนการแสดงผล มันมักจะอยู่ใต้รอยพับ


1
คุณเพิ่งบันทึกวันของการดีบัก print.css ฉัน คุณยอดเยี่ยมมาก!
zazvorniki

8

ติดตามคำตอบโดย rflnogueira การตั้งค่า Chrome ปัจจุบัน (40.0. *) จะมีลักษณะดังนี้:

chrome การจำลอง css


ฉันใช้เวลาเล็กน้อยในการระบุแท็บ "สื่อ" ฉันค้นหามันในแท็บ "อุปกรณ์"
Lorin Rivers

5

เพียงแสดงสไตล์การพิมพ์ในเบราว์เซอร์ของคุณโดยใช้media="screen"ในขณะที่การดีบั๊ก มุมมองตัวอย่างก่อนพิมพ์ใช้เอนจิ้นการแสดงผลเช่นเดียวกับโหมดการเรียกดูปกติเพื่อให้คุณได้รับผลลัพธ์ที่แม่นยำโดยใช้สิ่งนั้น


14
ยกเว้นโหมดการเรียกดูปกติไม่มีหน้าดังนั้นฉันจึงไม่รู้ว่าเนื้อหาจะไหลไปทางไหน โหมดการเรียกดูปกติมีความกว้างของพิกเซลจำนวนหนึ่งในขณะที่หน้ามีความกว้างของจำนวนนิ้วหรือเซนติเมตร มีความแตกต่างที่ไม่ขึ้นอยู่กับการใช้งานพื้นฐานระหว่างหน้าจอและการพิมพ์ การดีบักระหว่างสิ่งเหล่านั้นคือสิ่งที่ฉันตามมา
Jim Puls

1
บน Chrome การแสดงผลค่อนข้างแตกต่างกันโดยใช้คำแนะนำนี้เพียงอย่างเดียว จะไม่ทำงาน
heartpunk

ความกว้าง "หน้า" ไม่ยากที่จะตอกตะปูความสูงของมันยากจริงๆ ทั้งเบราว์เซอร์และเครื่องพิมพ์จะมีบทบาทในการปวดหัว 11in หน้าเว็บมีความยาวต่อเนื่อง หากไม่มีการรับประกันประเภทของอุปกรณ์แสดงผลและเบราว์เซอร์ฉันไม่คิดว่าคุณจะเคยเห็นมันบนเครื่องหมายทุกครั้ง การใช้วิธี HTML เป็น PDF จะใช้งานได้ แต่ไม่เกินคำถามของคุณ
Dawson

3

2019 - คำแนะนำที่ปรับปรุงแล้ว

  1. เปิดตัวตรวจสอบ Chrome
    • จากMac => option+ command+i
    • จากWindows =>F12
  2. คลิกที่จุดเล็ก ๆ 3 จุด customize and control devTools ป้อนคำอธิบายรูปภาพที่นี่

  3. เลือก More Tools

  4. เลือก Rendering

  5. เลื่อนไปที่ด้านล่างเพื่อ Emulate CSS Media

  6. เลือกprintจากลูกศรลง

ป้อนคำอธิบายรูปภาพที่นี่


0

หากคุณมีฟังก์ชั่นการพิมพ์ที่เขียนเนื้อหาของหน้าไปที่หน้าต่างใหม่ด้วยสไตล์ชีทการพิมพ์ของคุณที่อ้างอิงคุณจะได้รับความคิดที่ดีขึ้นว่าจะมีลักษณะเป็นอย่างไรบนกระดาษและคุณจะสามารถแก้ไขข้อบกพร่องได้ กับไลค์ของ firebug ด้วย

นี่คือตัวอย่างของวิธีการนี้สามารถทำได้ด้วย JavaScript / jquery

        $("#Print").click(function () {
            var a = window.open('', '', 'scrollbars=yes,width=1024,height=768');
            a.document.open("text/html");
            a.document.write("<html><head>");
            a.document.write('<link rel="stylesheet" href="css/style.css" />');
            a.document.write('<link rel="stylesheet" href="css/print.css" />');
            a.document.write("</head><body>");
            a.document.write($('#Content').html());
            a.document.write('</body></html>');
            a.document.close();
            a.print();
        });

2
ปัญหาของวิธีนี้คือหากผู้ใช้เลือก "พิมพ์ ... " ในเบราว์เซอร์ฟังก์ชันจาวาสคริปต์นี้จะไม่ถูกเรียกใช้
Ken Liu

คุณไม่จำเป็นต้องแสดงฟังก์ชั่นการพิมพ์ให้กับผู้ใช้คุณสามารถใช้มันเพื่อการดีบักได้ตามต้องการ
Blowsie

นี่เป็นวิธีแก้ปัญหาที่ผ่านการออกแบบทางวิศวกรรมให้กับสิ่งที่เบราว์เซอร์ทำอยู่ เพียงใช้media="print"และ media="screen"ตามลำดับสำหรับสไตล์ชีทของคุณและใช้เมนูเบราว์เซอร์หรือคอมโบคีย์เพื่อเรียกใช้ตัวอย่างก่อนพิมพ์ (ในกรณีนี้ไม่แตกต่างจากการเปิดป๊อปอัป) และหากคุณเพิ่งทำการดีบั๊กให้ใช้แอ media="screen"ททริบิวกับสไตล์การพิมพ์ของคุณจนกว่าคุณจะทำการดีบั๊กเสร็จแล้ว
ORANIA

-1

ป้อนคำอธิบายรูปภาพที่นี่

ใน DreamWeaver มีแถบเครื่องมือที่แสดงตัวเลือกการเรนเดอร์ใด ๆ ที่คุณต้องการ: หน้าจอ, การพิมพ์, สื่อมือถือ, หน้าจอการฉาย, สื่อทีวี, สไตล์ชีทเวลาอื่น ๆ นี่คือสิ่งที่ฉันใช้โดยเฉพาะอย่างยิ่งเพราะมันแสดงตัวอย่างทันทีด้วย 1 กดปุ่มเพียงครั้งเดียว


1
เป็นการดีที่จะทราบ แต่จะต้องใช้เครื่องมือการแสดงผลที่แตกต่างจากสิ่งที่เราพัฒนาและยังต้องการมากกว่าการโหลดซ้ำ ขอบคุณแม้ว่า
heartpunk

1
ย้อนกลับไปในปี 2011 ซอฟต์แวร์นี้เป็นกรรมสิทธิ์เฉพาะการซื้อเฉพาะบนแพลตฟอร์มที่มี จำกัด ซึ่งคุณต้องจ่ายเงินเพื่อรับฟังก์ชั่นที่ร้องขอเพื่อแก้ไขข้อบกพร่องของเว็บเปิด
Volker E.

-7

ฉันใช้มาโครส่งการกดแป้นและการคลิกเมาส์ซ้ำ ๆ ใน Windows AutoHotKey เป็นซอฟต์แวร์ที่ยอดเยี่ยมและใน OS X คุณสามารถอ่านเกี่ยวกับ Automator AHK สำหรับ OsX ทางเลือกได้

ภายใต้ Windows (แทนที่ Ctrl โดย Cmd ภายใต้ OS X) "Ctrl-s / สลับไปที่หน้าต่าง Fx ไม่ว่าจะอยู่ที่ไหนในรายการของหน้าต่างที่เปิด / Ctrl-r" ซึ่งผูกไว้กับคีย์ที่ไม่ได้ใช้ 1 อันเพื่อหลีกเลี่ยงความยุ่งยาก จากRSI :)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.