ฉันจะลบคุณสมบัติ css ได้อย่างไร


109

โดยทั่วไปฉันมี css ภายนอกสองรายการในเพจของฉัน

ข้อแรกMain.cssมีกฎสไตล์ทั้งหมด แต่ฉันไม่สามารถเข้าถึงได้ดังนั้นฉันจึงไม่สามารถแก้ไขได้ ฉันสามารถเข้าถึงไฟล์ที่สองได้Template.cssดังนั้นฉันจึงต้องลบล้างMain.cssค่าของในtemplate.css.

นี่เป็นเรื่องง่ายที่ฉันต้องเปลี่ยนค่า แต่ฉันจะลบคุณสมบัติทั้งหมดได้อย่างไร

เช่นเดียวกับที่คลาส.c1มีheight: 40px;ฉันจะกำจัดคุณสมบัติความสูงนี้ได้อย่างไร


คำตอบ:


175

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

ในตัวอย่างของคุณคุณจะทำ:

.c1 {
    height: auto;
}

คุณควรค้นหาคุณสมบัติแต่ละรายการที่นี่:

https://developer.mozilla.org/en-US/docs/Web/CSS/Reference

สำหรับตัวอย่างเช่นheight :

ค่าเริ่มต้น: auto

อีกตัวอย่างmax-heightหนึ่ง:

ค่าเริ่มต้น: none


ในปี 2560 มีอีกวิธีหนึ่งคือunsetคำหลัก:

.c1 {
    height: unset;
}

เอกสารประกอบบางส่วน: https://developer.mozilla.org/en-US/docs/Web/CSS/unset

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

การสนับสนุนเบราว์เซอร์เป็นสิ่งที่ดี: http://caniuse.com/css-unset-value


3
+1 สำหรับคำตอบและข้อมูลอ้างอิงที่ดี ฉันคิดว่าลิงก์ได้เปลี่ยนเป็น: developer.mozilla.org/en-US/docs/Web/CSS/Reference
Paolo

การตั้งค่าเป็นอัตโนมัติดูเหมือนจะไม่ทำงานเมื่อไม่มีค่าเริ่มต้น ("ค่าเริ่มต้น: ไม่มี") ตัวอย่างเช่นเมื่อทำ "max-width: auto;" ฉันได้รับข้อผิดพลาดมูลค่าคุณสมบัติไม่ตรงกัน ฉันควรทำอย่างไรดี?
user1779563

3
@ user1779563 คุณตั้งค่าเป็น "ไม่มี"
AndreKR

1
ฉันอยากจะขอบคุณ @simhumileco สำหรับคำตอบของเขาที่ฉันขโมยไปอย่างไร้ยางอายเนื่องจากคำตอบของฉันได้รับการยอมรับและผู้คนไม่สามารถเลื่อนลงได้
สามสิบดอท

10
.c1 {
    height: unset;
}

unsetมูลค่าเพิ่มในCSS3ยังแก้ปัญหานี้และก็จะยิ่งสากลมากขึ้นวิธีการกว่าautoหรือinitialเพราะมันกำหนดคุณสมบัติ CSS ทุกค่าเริ่มต้นและยังเริ่มต้นของ behawior เทียบกับแม่ของมัน

โปรดทราบว่าinitialค่าจะทำลายพฤติกรรมดังกล่าว

จากMDN :

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


9

เช่นพูดว่าคลาส. c1 มีความสูง: 40px; ฉันจะกำจัดคุณสมบัติความสูงนี้ได้อย่างไร

น่าเศร้าที่คุณทำไม่ได้ CSS ไม่มีตัวยึดตำแหน่ง "เริ่มต้น"

ในกรณีนั้นคุณจะรีเซ็ตคุณสมบัติโดยใช้

 height: auto;

เนื่องจาก @Ben ชี้ให้เห็นอย่างถูกต้องในบางกรณีinheritเป็นวิธีที่ถูกต้องตัวอย่างเช่นเมื่อรีเซ็ตสีข้อความของaองค์ประกอบ (คุณสมบัตินั้นสืบทอดมาจากองค์ประกอบหลัก):

a { color: inherit }

3
ฉันจะ +1 ให้ นอกจากนี้ยังมีค่า "สืบทอด" ในบางลักษณะนอกเหนือจากความสูงการสืบทอดจะเหมาะสมกว่า
เบ็น

1
@meo คุณพูดถูก (คำถามที่เกี่ยวข้อง)ซึ่งดูเหมือนจะหมายความว่ามีคุณสมบัติที่ไม่สามารถรีเซ็ตเป็นค่าเริ่มต้นใน IE ได้ ... ช่างน่าเสียดาย
Pekka

7

initialคำหลักที่จะถูกเพิ่มเข้ามาใน CSS3 ที่จะอนุญาตให้ผู้เขียนที่จะระบุอย่างชัดเจนนี้ค่าเริ่มต้น


FYI: height:initial;ดูเหมือนจะไม่ทำงานใน IE9
Kris Hollenbeck

แล้วความแตกต่างระหว่างinitialและautoกับunsetคืออะไร?
ExillustX

2

ในการกำจัดคุณสมบัติความสูงคงที่คุณสามารถตั้งค่าเป็นค่าเริ่มต้น:

height: auto;

2

คุณจำเป็นต้องให้ตัวเลือกที่มีความสูงที่เฉพาะเจาะจงMain.cssมากกว่าหนึ่งใน ด้วยตัวเลือกดังกล่าวให้ตั้งค่าคุณสมบัติที่คุณต้องการเป็นค่าเริ่มต้นเช่น

body .c1 {
    height: auto;
}

ไม่มีค่า "เริ่มต้น" ที่จะใช้ได้กับคุณสมบัติทั้งหมดคุณต้องค้นหาว่าค่าเริ่มต้นคืออะไรสำหรับแต่ละคุณสมบัติและใช้ค่านั้น


1

ฉันมีปัญหาที่แม้ว่าฉันจะเขียนทับ "ความสูง" เป็น "ไม่ได้ตั้งค่า" หรือ "เริ่มต้น" แต่ก็ยังทำงานแตกต่างจากเมื่อฉันลบการตั้งค่าก่อนหน้านี้

ปรากฎว่าฉันต้องลบคุณสมบัติ min-height ด้วย!

height: unset;
min-height: none

แก้ไข: ฉันทดสอบบน IE 7 แล้ว แต่ไม่รู้จัก "unset" ดังนั้น "auto" จึงทำงานได้ดีกว่า "

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