หมายความว่าอย่างไรเมื่อกฎ CSS เป็นสีเทาในตัวตรวจสอบองค์ประกอบของ Chrome


249

ฉันกำลังตรวจสอบh2องค์ประกอบบนหน้าเว็บโดยใช้ตัวตรวจสอบองค์ประกอบของ Google Chrome และกฎ CSS บางอย่างซึ่งดูเหมือนว่าจะนำไปใช้จะเป็นสีเทา ดูเหมือนว่าการหยุดงานประท้วงเป็นการระบุว่ากฎนั้นถูกเขียนทับ แต่มันหมายความว่าอย่างไรเมื่อสไตล์เป็นสีเทา?

คำตอบ:


96

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

ข้อความสีเทาหรือสีจางอาจมีความหมายเช่นกัน

  1. มันเป็นกฎ / คุณสมบัติเริ่มต้นที่เบราว์เซอร์ใช้ซึ่งรวมถึงคุณสมบัติระยะสั้นที่ผิดนัด
  2. มันเกี่ยวข้องกับการสืบทอดซึ่งซับซ้อนกว่าเล็กน้อย

มรดก

หมายเหตุ: แผงเครื่องมือ "สไตล์" ของ Chrome dev จะแสดงชุดกฎเนื่องจากกฎอย่างน้อยหนึ่งรายการจากชุดจะถูกนำไปใช้กับโหนด DOM ที่เลือกในปัจจุบัน ฉันเดาว่าเครื่องมือ dev จะแสดงกฎทั้งหมดจากชุดนั้นไม่ว่าจะถูกนำไปใช้หรือไม่ก็ตาม

ในกรณีที่กฎถูกนำไปใช้กับองค์ประกอบที่เลือกในปัจจุบันเนื่องจากการสืบทอด (เช่นกฎถูกนำไปใช้กับบรรพบุรุษและองค์ประกอบที่เลือกได้รับมรดกมา) โครเมี่ยมจะแสดงชุดกฎทั้งหมดอีกครั้ง

กฎที่ใช้กับองค์ประกอบที่เลือกในปัจจุบันจะปรากฏในข้อความปกติ

หากมีกฎอยู่ในชุดนั้น แต่ไม่ได้ใช้เพราะเป็นคุณสมบัติที่ไม่สามารถสืบทอดได้ (เช่นสีพื้นหลัง) มันจะปรากฏเป็นข้อความสีเทา / จาง

นี่คือบทความที่ให้คำอธิบายที่ดี - (หมายเหตุ: รายการที่เกี่ยวข้องอยู่ที่ด้านล่างของบทความ - รูปที่ 21 - น่าเสียดายที่ส่วนที่เกี่ยวข้องไม่มีหัวข้อ) - http://commandlinefanatic.com/cgi-bin /showarticle.cgi?article=art033

ตัดตอนมาจากบทความ

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


10
คำสั่ง "กฎที่สืบทอดมา แต่ไม่ได้นำไปใช้กฎเหล่านั้นจะปรากฏเป็นข้อความสีเทา / จาง" ไม่เป็นความจริง หากไม่ได้ใช้พวกเขาจะมีขีดฆ่า ฉันได้อัปเดตคำตอบของฉันด้วยภาพหน้าจอและตัวอย่างสด
Rob Sobers

10
นี่คือคำตอบที่ถูกต้อง !!! ประโยคสำคัญคือ ... "ถ้ามีกฎอยู่ในชุดนั้น แต่ไม่ได้ใช้เพราะมันเป็นคุณสมบัติที่ไม่สามารถสืบทอดได้ (เช่นสีพื้นหลัง) มันจะปรากฏเป็นข้อความสีเทา / จาง"
Niko Bellic

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

1
หากกฎเป็นสีเทาเมื่อไม่สามารถสืบทอดได้ทำไมองค์ประกอบ div ของฉันจึงมีกฎ 'ความกว้าง' เป็นสีเทา ความกว้างไม่สามารถสืบทอดได้ ฉันถามเรื่องนี้อย่างจริงจังโดยวิธีการ
moosefetcher

1
... ดังนั้นหากคุณเห็น Chrome เป็นกฎ CSS สีเทาซึ่งถูกนำไปใช้เป็นอย่างมากซึ่งคุณสามารถยกเลิกการเลือก (หรือเปลี่ยนค่า) และดูการเปลี่ยนแปลงที่สอดคล้องกันในหน้า - อาจเป็นไปได้ว่ากฎนั้นมีผลกับองค์ประกอบ แต่ไม่ได้ใช้กับองค์ประกอบนั้นโดยเฉพาะ แต่ให้กับผู้ปกครอง
Ben Wheeler

82

หมายความว่ากฎได้รับการสืบทอดมาแล้ว แต่ไม่สามารถใช้ได้กับองค์ประกอบที่เลือก:

http://code.google.com/chrome/devtools/docs/elements-styles.html#computed_style

บานหน้าต่างมีคุณสมบัติเฉพาะจากกฎที่ใช้โดยตรงกับองค์ประกอบที่เลือก เพื่อแสดงคุณสมบัติที่สืบทอดเพิ่มเติมให้เปิดใช้งานช่องทำเครื่องหมายแสดงการสืบทอด คุณสมบัติดังกล่าวจะปรากฏในแบบอักษรจาง

กฎที่เป็นสีเทานั้นสืบทอดมาจากบรรพบุรุษ

ตัวอย่างสด: ตรวจสอบองค์ประกอบที่มีข้อความ "Hello, world!"

div { 
  margin: 0;
}

div#foo { 
  margin-top: 10px; 
}
<div id="foo">Hello, world!</div>


13
@ Rob จะแม่นยำเมื่อสไตล์แสดงให้เห็นเป็นสีเทาก็หมายความว่าจะได้รับการสืบทอดมาจากบางองค์ประกอบครอบคลุมอื่น ๆ แต่ไม่สามารถใช้ได้กับองค์ประกอบที่เลือก จากเอกสารประกอบ: "บานหน้าต่างมีเฉพาะคุณสมบัติจากกฎที่ใช้โดยตรงกับองค์ประกอบที่เลือกเพื่อแสดงคุณสมบัติที่สืบทอดเพิ่มเติมให้เปิดใช้งานช่องทำเครื่องหมายแสดงการสืบทอดมาคุณสมบัติดังกล่าวจะแสดงในแบบอักษรจาง"
drkvogel

2
@RobSobers แต่น่าเสียดายที่ฉันไม่คิดว่าตัวอย่างของคุณแสดงให้เห็นถึงมรดก พ่อแม่ของบรรพบุรุษที่กองกำลังสืบทอดมาจากไหน? หากคุณเลื่อนลงในบานหน้าต่าง Styels ใน Chrome คุณจะเห็นหัวข้อ "สืบทอดมาจาก ... " กฎสีเทามีความหมายว่าอย่างไร คุณสามารถรวมสิ่งนั้นเข้ากับตัวอย่างได้หรือไม่?
Niko Bellic

8
ฉันไม่เข้าใจว่าทำไมคำตอบนี้คือ ทำเครื่องหมายว่าเป็นคำตอบที่ดีที่สุดและ มี upvotes มากมาย มันผิดอย่างชัดเจน ระยะขอบไม่ใช่คุณสมบัติที่สืบทอดได้ ( stackoverflow.com/a/5612360/24267 ) คำตอบของ Michael Coleman คือคำตอบที่ถูกต้อง โอ้คุณไม่ได้หมายถึงการสืบทอดจากองค์ประกอบบรรพบุรุษคุณหมายถึง ... ฉันไม่แน่ใจว่าคุณหมายถึงอะไรกันแน่ คำตอบนี้ไม่ถูกต้องในปี 2558 ด้วย Chrome 46
mhenry1384

3
เห็นได้ชัดว่าการโหวตนั้นมีไว้สำหรับเวทมนตร์ MS Paint ที่มีลูกศรและมีเอฟเฟกต์เงาของฟองสบู่ downvoted ไม่ถูกต้อง
David

2
@ mhenry1384 "a" สามารถอธิบายได้ง่าย: เพราะเขียนโดยบุคคลที่ถามคำถาม
Andrew Grimm

27

Michael Coleman มีคำตอบที่ถูกต้อง ฉันแค่ต้องการเพิ่มภาพง่าย ๆ เพื่อให้เข้ากับมัน ลิงก์ที่เขารวมมีตัวอย่างง่ายๆนี้: http://commandlinefanatic.com/art033ex4.html

HTML / DOM มีลักษณะเช่นนี้ ...

HTML

บานหน้าต่างสไตล์ใน Chrome มีลักษณะเช่นนี้เมื่อคุณเลือกองค์ประกอบ p ...

สไตล์บานหน้าต่าง

อย่างที่คุณเห็นองค์ประกอบของ p สืบทอดมาจากบรรพบุรุษ (divs) ทำไมสไตล์จึงเป็นbackground-color: blueสีเทา เนื่องจากเป็นส่วนหนึ่งของชุดกฎที่มีสไตล์อย่างน้อยหนึ่งอย่างที่สืบทอดได้ สไตล์ที่สืบทอดได้คือtext-indent: 1em

background-color:blueไม่สามารถสืบทอดได้ แต่เป็นส่วนหนึ่งของชุดกฎที่มีtext-indent: 1emสิ่งที่สืบทอดได้และนักพัฒนาของ Chrome ต้องการให้สมบูรณ์เมื่อแสดงชุดกฎ อย่างไรก็ตามในการแยกแยะความแตกต่างระหว่างสไตล์ในชุดกฏที่สืบทอดได้จากสไตล์ที่ไม่ได้สไตล์ที่ไม่สามารถสืบทอดได้จะเป็นสีเทา


1
นี่คือคำตอบที่ดีที่สุดเพราะให้การสาธิตอย่างง่าย เปิด URL ที่ในแท็บใหม่และใช้เครื่องมือสำหรับนักพัฒนา Chrome เพื่อเลือกต่างๆและdiv pคุณจะเห็นว่าจะไม่เป็นสีเทาสำหรับbackground-color div#twoแต่background-colorเป็นสีเทาสำหรับและdiv#three p
wisbucky

คำอธิบายที่ดี
Dirk Boer

10

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


นี่คือปัญหาของฉัน ขอบคุณ!
Chuck Le Butt

5

หมายความว่ากฎนั้นถูกแทนที่ด้วยกฎอื่นที่มีลำดับความสำคัญสูงกว่า ตัวอย่างสไตล์กับ:

h2 {
  color: red;
}
h2 {
  color: blue;
}

ผู้ตรวจสอบจะแสดงกฎเป็นcolor:red;สีเทาและcolor:blue;ตามปกติ

อ่านเกี่ยวกับการสืบทอด CSSเพื่อเรียนรู้ว่ากฎใดที่สืบทอดมา / มีลำดับความสำคัญสูงกว่า

แก้ไข:

การผสม: กฎสีเทาเป็นกฎที่ไม่ได้กำหนดซึ่งใช้สไตล์ชีทเริ่มต้นพิเศษที่ใช้กับองค์ประกอบทั้งหมด (กฎที่ทำให้องค์ประกอบสามารถแสดงผลได้เนื่องจากสไตล์ทั้งหมดต้องมีค่า)


ฉันเพิ่งทดสอบสิ่งนี้และฉันคิดว่ามันไม่ถูกต้อง ในกรณีที่กฎถูกแทนที่จะมีการประท้วง (ตามที่คำถามของฉันระบุ) ดู: yfrog.com/f/j3fooep
Rob Sobers

@ Rob: มีการผสมผสานตั้งแต่ devtools ไม่ได้เริ่มต้น ฉันได้รับมันทำงานและแก้ไขคำตอบของฉันด้วยคำตอบทดสอบของฉัน
tcooc

ฉันไม่แน่ใจว่าถูกต้องเช่นกัน กฎจาง ๆ นั้นเป็นกฎที่ฉันได้กำหนดไว้ในสไตล์ชีตของฉันเอง (เช่นfont-size: 20px;)
Rob Sobers

1

เมื่อใช้ webpack กฎ css หรือคุณสมบัติใด ๆ ที่มีการเปลี่ยนแปลงในซอร์สโค้ดจะเป็นสีเทาเมื่อเพจนั้นโหลดใหม่หลังจากการสร้างใหม่ มันน่ารำคาญจริงๆและบังคับให้ฉันโหลดหน้าซ้ำทุกครั้ง


0

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

นักพัฒนาซอฟต์แวร์ Chrome รุ่นใหม่จะแสดงตำแหน่งที่สืบทอดมา


0

ฉันตอบคำถามนานหลังจากที่มีอยู่แล้วมีคำตอบที่ถูกต้องจำนวนมากเพราะผมพบกรณีที่แตกต่างกันของการมีบล็อกของรหัส CSS สีเทาและไม่สามารถแก้ไขได้ใน Chome DevTools: บล็อกในคำถามที่มีตัวอักษร U + 200B ZERO ช่องว่างความกว้าง เมื่อฉันพบสิ่งเหล่านั้นและนำออกไปฉันสามารถแก้ไขบล็อกใน Chrome DevTools ได้อีกครั้ง สันนิษฐานว่าอาจเกิดขึ้นกับตัวละครที่ไม่ใช่คนอื่นเช่นกันฉันไม่ได้พยายามคิดออก

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