ฉันจะตรวจสอบและปรับแต่ง: before and: after pseudo-elements in-browser ได้อย่างไร?


92

ฉันได้สร้างองค์ประกอบ DOM ที่ค่อนข้างซับซ้อนโดยมี an: after pseudo-element และฉันต้องการตรวจสอบและปรับแต่งองค์ประกอบเหล่านี้ใน Chrome Inspector หรือ Firebug หรือเทียบเท่า

แม้จะมีการกล่าวถึงคุณลักษณะนี้ในบล็อกโพสต์ WebKit / Safari (ลงวันที่ 2010) แต่ฉันไม่พบคุณลักษณะนี้เลยใน Chrome หรือ Safari อย่างน้อย Chrome ก็มีช่องทำเครื่องหมายเพื่อตรวจสอบ: hover,: เยี่ยมและ: สถานะที่ใช้งานอยู่ แต่: before and: after จะไม่มีให้เห็น

นอกจากนี้บล็อกโพสต์นี้ (ลงวันที่ 2009!) กล่าวถึงความสามารถนี้ที่มีอยู่ในเครื่องมือ IE dev แต่ตอนนี้ฉันใช้ Mac OS ดังนั้นนี่จึงไม่ช่วยฉัน นอกจากนี้ IE ไม่ใช่เบราว์เซอร์ที่ฉันกำหนดเป้าหมายเป็นหลัก

มีวิธีใดในการตรวจสอบองค์ประกอบหลอกเหล่านี้หรือไม่?

แก้ไข: นอกเหนือจากความผิดพลาดเกี่ยวกับ Firebug ที่ไม่สามารถตรวจสอบองค์ประกอบเหล่านี้ได้ฉันพบว่า Opera ค่อนข้างดีในการตรวจสอบ: before และ: after องค์ประกอบนอกกรอบ


1
ด้วย firebug คุณสามารถตรวจสอบรูปแบบของ pseudoelements เหล่านั้น
Fabrizio Calderan

@ F.Calderan อย่างไร มันจะอัปเดตเพจหรือไม่หากฉันแก้ไข
majackson

ใช่ฉันสามารถเปลี่ยนคุณสมบัติของ pseudoelements ผ่าน firebug 1.9.1 บน Fx11 / MacOS
Fabrizio Calderan

ใช่ฉันเห็นมันด้วย ขออภัยฉันเข้าใจผิดว่า Firefoxes เครื่องมือ dev inbuilt ใหม่ (ซึ่ง Id ไม่เคยใช้มาก่อน) สำหรับการออกแบบ Firebug บางประเภทโดยมีคุณสมบัติน้อยลงอย่างอธิบายไม่ถูก ฉันยืนแก้ไข;)
majackson

ตรวจสอบคำตอบนี้เพื่อทดสอบ pseudoelements ใน chrome และ firefox stackoverflow.com/a/20716179/1868660
Subodh Ghulaxe

คำตอบ:


62

ในเครื่องมือ Dev ของ Chromeรูปแบบขององค์ประกอบหลอกจะปรากฏในแผงควบคุม:

มิฉะนั้นคุณสามารถป้อนบรรทัดต่อไปนี้ในคอนโซล JavaScript และตรวจสอบCSSStyleDeclarationวัตถุที่ส่งคืน:

getComputedStyle(document.querySelector('html > body'), ':before');

9
ฉันไม่เห็นสิ่งนี้ คุณกำลังตรวจสอบองค์ประกอบใดเพื่อให้สิ่งนี้ปรากฏในแผงควบคุม นอกจากนี้คุณกำลังใช้ Chrome เวอร์ชันใดอยู่
majackson

@majackson Chrome 18.0 Ubuntu 11.10 ตรวจสอบxในการสาธิตนี้: jsfiddle.net/2M6JA
Rob W

ฉันเห็น pseudoclasses ในการสาธิตของคุณ แต่ไม่อยู่ในรหัสของฉันซึ่งทำให้ฉันสงสัยว่าฉันมีปัญหาอื่นที่แตกต่างออกไป ไม่ว่าในกรณีใดเห็นได้ชัดว่าคุณถูกต้องดังนั้นฉันจะทำเครื่องหมายว่าแก้ไขแล้ว - ขอบคุณมาก!
majackson

มันเย็บไม่สามารถตรวจสอบลักษณะ: หลอกได้ในบางกรณี ตรวจสอบทางแยกของ@Rob W fiddle: jsfiddle.net/RQsY6 => ไม่สามารถตรวจสอบองค์ประกอบหลอกบนแท็กได้
Fabien Quatravaux

1
@FabienQuatravaux อย่างน้อยใน Chrome 23 ผมเห็นdiv::beforeด้วยcontent: 'x';- หน้าจอ: i.stack.imgur.com/nQ2TZ.png แก้ไข: ซอของเราไม่แตกต่างกันเลย คุณต้องการแทนที่divด้วยaหรือไม่? ยังคงสามารถตรวจสอบองค์ประกอบหลอกได้: jsfiddle.net/RQsY6/1 (เพียงแค่เลือกแท็กจุดยึดในโครงสร้าง DOM)
Rob W

33

เนื่องจากองค์ประกอบหลอกของ Chrome 31 แสดงในแผงองค์ประกอบเป็นองค์ประกอบลูกของผู้ปกครองดังที่แสดงในภาพต่อไปนี้:

ภาพหน้าจอ

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

ดูเหมือนว่าสไตล์ CSS ที่สืบทอดมาจะไม่สามารถดูได้และคุณไม่สามารถแก้ไขเนื้อหา CSS จากแผงองค์ประกอบได้


22

Chrome จะไม่แสดง: ก่อนและ: หลังองค์ประกอบหลอกในโครงสร้าง DOM หากพลาดแอตทริบิวต์ "เนื้อหา" ควรตั้งค่าแม้ว่าจะตั้งค่าเป็นอะไรก็ตาม

สิ่งนี้จะไม่ปรากฏขึ้น:

:after {
  background-color: red;
}

สิ่งนี้จะปรากฏในตัวตรวจสอบ:

:after {
  content: "";   
  background-color: red;    
}

หวังว่าจะช่วยได้


5

หลังจากหงุดหงิดมากฉันพบว่า firefox ไม่แสดงองค์ประกอบหลอกในโครงสร้างเอกสารเลยแต่ถ้าคุณเลือกองค์ประกอบที่แน่นอนซึ่งมีการกำหนดองค์ประกอบหลอกแล้วสไตล์สำหรับองค์ประกอบหลอก (s) ) จะแสดงในส่วนกฎสไตล์ทางด้านขวา นี่เป็นเรื่องจริงสำหรับทั้ง firebug และการตรวจสอบในตัว ("Q") และฉันรู้สึกตกใจที่ไม่มีใครใส่ใจที่จะอธิบายเรื่องนี้อย่างชัดเจนมาก่อน

เห็นได้ชัดว่าการจัดการองค์ประกอบหลอกของโครเมี่ยม / โครเมียมนั้นเหนือกว่าอย่างมากเนื่องจากสามารถเลือกได้ (ทั้งในโครงสร้างเอกสารและในหน้าโดยตรง) และตรวจสอบเช่นเดียวกับองค์ประกอบทั่วไปโดยมีเค้าโครงคุณสมบัติและทุกอย่างอื่น ๆ โดยไม่ขึ้นกับ "เจ้าของ ".

เวอร์ชันเบราว์เซอร์ที่ฉันใช้อยู่ในปัจจุบัน: Chromium 40.0.2214.91, Firefox 31.3.0


1

Firefox มีคุณลักษณะนี้มาระยะหนึ่งแล้วเพียงคลิกขวา "ตรวจสอบองค์ประกอบ" และดูองค์ประกอบก่อนและหลังในแผงด้านขวาของตัวตรวจสอบ


1
ฉันไม่เห็น:afterและ:beforeหลอกองค์ประกอบใน "แม่" เครื่องมือตรวจสอบ - การสลับองค์ประกอบหลอกให้ฉันhover, activeและfocusเพียง ฉันเห็นพวกเขาใน Firebug แม้ว่า
เหมือนกัน

@sameers คุณกำลังพูดถึงการสลับบนเมนูคลิกขวาหรือไม่? เนื่องจาก: before and: after ไม่ใช่สิ่งที่คุณสลับที่นั่นจึงควรปรากฏในตัวตรวจสอบ css
NoBugs

0

เลือกองค์ประกอบ -> เลือกโฮเวอร์ที่เลือก ---> คุณสามารถดู :: ก่อนและหลังองค์ประกอบ เลือกองค์ประกอบ -> เลือกโฮเวอร์ที่เลือก ---> คุณสามารถดู :: ก่อนและหลังองค์ประกอบ


0

อย่างน้อยเนื่องจาก Chrome 62 มีการตั้งค่าใน DevTools เป็น 'แสดงเงาตัวแทนผู้ใช้ DOM' ซึ่งแสดงองค์ประกอบหลอกเพิ่มเติมเช่นตัวยึดตำแหน่งอินพุตซึ่งจะไม่ปรากฏในโครงสร้าง DOM เป็นอย่างอื่น

ข้อมูลเพิ่มเติม: https://stackoverflow.com/a/26853319/3963594

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