ปิด / ปิดการเปลี่ยน CSS3 ที่สืบทอดมา


117

ดังนั้นฉันจึงมีการเปลี่ยน css ต่อไปนี้ที่แนบมากับองค์ประกอบ:

a { 
     -webkit-transition:color 0.1s ease-in, background-color 0.1s ease-in ;  
     -moz-transition:color 0.1s ease-in, background-color 0.1s ease-in;  
     -o-transition:color 0.1s ease-in, background-color 0.1s ease-in;  
     transition:color 0.1s ease-in, background-color 0.1s ease-in; 
}

มีวิธีปิดการใช้งานช่วงการเปลี่ยนภาพที่สืบทอดมาในองค์ประกอบเฉพาะหรือไม่?

a.tags { transition: none; } 

ดูเหมือนจะไม่ได้ทำงาน

คำตอบ:


166

การใช้transition: noneดูเหมือนว่าจะได้รับการสนับสนุน (ที่มีการปรับเฉพาะสำหรับ Opera) ที่กำหนด HTML ต่อไปนี้:

<a href="#" class="transition">Content</a>
<a href="#" class="transition">Content</a>
<a href="#" class="noTransition">Content</a>
<a href="#" class="transition">Content</a>

... และ CSS:

a {
    color: #f90;
    -webkit-transition:color 0.8s ease-in, background-color 0.1s ease-in ;  
    -moz-transition:color 0.8s ease-in, background-color 0.1s ease-in;  
    -o-transition:color 0.8s ease-in, background-color 0.1s ease-in;  
    transition:color 0.8s ease-in, background-color 0.1s ease-in; 
}
a:hover {
    color: #f00;
    -webkit-transition:color 0.8s ease-in, background-color 0.1s ease-in ;  
    -moz-transition:color 0.8s ease-in, background-color 0.1s ease-in;  
    -o-transition:color 0.8s ease-in, background-color 0.1s ease-in;  
    transition:color 0.8s ease-in, background-color 0.1s ease-in; 
}
a.noTransition {
    -moz-transition: none;
    -webkit-transition: none;
    -o-transition: color 0 ease-in;
    transition: none;
}

สาธิต JS ซอ

ทดสอบกับ Chromium 12, Opera 11.x และ Firefox 5 บน Ubuntu 11.04

การปรับให้เข้ากับ Opera เป็นการใช้งาน-o-transition: color 0 ease-in;ที่กำหนดเป้าหมายไปที่คุณสมบัติเดียวกันกับที่ระบุไว้ในtransitionกฎอื่น ๆแต่กำหนดเวลาในการเปลี่ยนแปลง0ซึ่งจะป้องกันไม่ให้สังเกตเห็นการเปลี่ยนแปลงได้อย่างมีประสิทธิภาพ การใช้a.noTransitionตัวเลือกเป็นเพียงการระบุตัวเลือกเฉพาะสำหรับองค์ประกอบโดยไม่มีการเปลี่ยน


แก้ไขเพื่อทราบว่าคำตอบของ @ Frédéric Hamidiโดยใช้all(สำหรับ Opera อย่างน้อย) นั้นกระชับกว่าการระบุชื่อคุณสมบัติแต่ละรายการที่คุณไม่ต้องการให้มีการเปลี่ยนแปลง

อัปเดตการสาธิต JS Fiddle ซึ่งแสดงการใช้งานallใน Opera:-o-transition: all 0 noneหลังจากการลบคำตอบของ@ Frédéricด้วยตนเอง


อ่าฉันต้องเพิ่มแท็กเฉพาะของเบราว์เซอร์ก่อนที่จะเปลี่ยน ชั่วร้ายไชโย!
Scotty

ขอบคุณสำหรับข้อมูลโอเปร่าไม่มีการเปลี่ยนแปลง
pedro_sland

5
Opera น่าเบื่อจริงๆกับความแตกต่างนี้
Junior Mayhé

1
ทำไมคุณทำบางอย่างไม่ได้เช่น: การเปลี่ยนสี: ไม่มีสีพื้นหลังสี 0.1 วินาทีในง่าย;

26

หากคุณต้องการปิดใช้งานคุณสมบัติการเปลี่ยนครั้งเดียวคุณสามารถทำได้:

transition: color 0s;

(เนื่องจากการเปลี่ยนศูนย์วินาทีจะเหมือนกับการไม่มีการเปลี่ยนแปลง)


ผู้ควบคุมประสิทธิภาพอาจมีความผิด แต่ดูเหมือนว่าถูกกฎหมายสำหรับการปิดใช้งานคุณสมบัติเดียว
doublejosh

ตอนนี้ใช้งานไม่ได้สำหรับฉันใน Chrome นี่เป็นการปิดใช้งานการเปลี่ยนที่สืบทอดมาทั้งหมด
ผกผัน

คุณช่วยยกตัวอย่างได้ไหม @Inversion
Will Madden

@WillMadden ที่นี่jsfiddle.net/312bu8poลองสถานะเริ่มต้นจากนั้นยกเลิกการใส่ข้อคิดเห็นบรรทัดที่เตรียมไว้ใน css - การเปลี่ยนสำหรับleftจะถูกลบออก
ผกผัน

2

อีกวิธีหนึ่งในการลบการเปลี่ยนทั้งหมดคือการใช้unsetคีย์เวิร์ด:

a.tags {
    transition: unset;
}

ในกรณีของtransition, unsetเทียบเท่ากับinitialเนื่องจากtransitionไม่ได้เป็นทรัพย์สินมรดกที่ได้รับ:

a.tags {
    transition: initial;
}

ผู้อ่านที่รู้เกี่ยวกับunsetและสามารถบอกได้ว่าการแก้ปัญหาเหล่านี้ถูกต้องทันทีโดยไม่ต้องคิดเกี่ยวกับไวยากรณ์ที่เฉพาะเจาะจงของinitialtransition


unset & initial ไม่รองรับ IE อย่างดี
allenski

caniuse.com/#feat=css-unset-value - ฉันอาจจะเริ่มต้นด้วยถ้าคุณต้องการการสนับสนุน IE11
Nick Middleweek

0

นอกจากนี้คุณยังสามารถกำจัดการเปลี่ยนแปลงทั้งหมดภายในองค์ประกอบที่มี:

CSS:

.noTrans *{
-moz-transition: none;
-webkit-transition: none;
-o-transition: color 0 ease-in;
transition: none;
}

HTML:

<a href="#">Content</a>
<a href="#">Content</a>
<div class="noTrans">
<a href="#">Content</a>
</div>
<a href="#">Content</a>

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

นี่เป็นวิธีแก้ปัญหาที่มีประโยชน์มากสำหรับฉันเมื่อเร็ว ๆ นี้ในการลบการเปลี่ยนแปลงทั่วโลกจากองค์ประกอบแผนที่ Google ซึ่งเพิ่มความแปลกประหลาดให้กับพฤติกรรมแผนที่
freeworlder

0

ตามค่าการเปลี่ยนเริ่มต้นของ W3schools คือ: all 0s ease 0sซึ่งควรเป็นวิธีที่เข้ากันได้กับข้ามเบราว์เซอร์ในการปิดใช้งานการเปลี่ยนแปลง

นี่คือลิงค์: https://www.w3schools.com/cssref/css3_pr_transition.asp

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