การแปลง CSS3 ไม่ทำงาน


123

ฉันกำลังพยายามเปลี่ยนรายการเมนูโดยหมุน 10 องศา CSS ของฉันทำงานใน Firefox แต่ฉันไม่สามารถจำลองเอฟเฟกต์ใน Chrome และ Safari ได้ ฉันรู้ว่า IE ไม่รองรับคุณสมบัติ CSS3 นี้ดังนั้นจึงไม่ใช่ปัญหา

ฉันใช้ CSS ต่อไปนี้:

li a {
   -webkit-transform:rotate(10deg);
   -moz-transform:rotate(10deg);
   -o-transform:rotate(10deg); 
}

ใครช่วยแนะนำหน่อยได้ไหมว่าฉันผิดพลาดตรงไหน

ขอบคุณ


2
FYI, IE รองรับคุณสมบัติ CSS3 นี้คุณเพียงแค่ต้องมีคำนำหน้า:-ms-transform:rotate(10deg);
Joshua Pinter


2
เนื่องจากยังไม่มีใครพูดถึงเรื่องนี้เนื่องจากตอนนี้เป็นปี 2559 ตรวจสอบให้แน่ใจว่าคุณวางกฎ CSS transform: rotate(10deg);เวอร์ชันที่ไม่ได้เติมคำนำหน้า(เช่น) ไว้ข้างใต้เวอร์ชันใดก็ตามที่คุณเลือกสนับสนุน
Maximillian Laumeister

คำตอบ:


303

นี่เป็นเพียงการคาดเดาที่มีการศึกษาโดยไม่เห็นส่วนที่เหลือของ HTML / CSS ของคุณ:

คุณสมัครdisplay: blockหรือdisplay: inline-blockยังli a? ถ้าไม่ลองดู

มิฉะนั้นให้ลองใช้กฎการแปลง CSS3 liแทน


22
ผมรักคุณ! ความdisplay: inline-blockช่วยเหลือ
Bugs Bunny

2
คำอธิบายจะเป็นประโยชน์ :)
scitronboy

56

ในเบราว์เซอร์ที่ใช้ webkit (Safari และ Chrome) -webkit-transform จะถูกละเว้นองค์ประกอบแบบอินไลน์ . ตั้งค่าdisplay: inline-block;เพื่อให้ใช้งานได้ เพื่อวัตถุประสงค์ในการสาธิต / ทดสอบคุณอาจต้องการใช้มุมลบหรือtransformation-originเพื่อไม่ให้ข้อความหมุนออกจากพื้นที่ที่มองเห็นได้


ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันขอบคุณ! ฉันใช้มันกับ <span> & copy </span> เพื่อสร้างสัญลักษณ์ copyleft
Elisabeth

@ เอลิซาเบ ธ นั่นเป็นแอปพลิเคชั่นที่ยอดเยี่ยม โปรดทราบว่าการอ้างอิงเอนทิตีจำเป็นต้องยุติโดยเซมิโคลอนแม้ว่า (เหมือนใน<span>&copy;</span>) แม้ว่าเบราว์เซอร์ส่วนใหญ่จะแสดงผลทั้งสองวิธี
phihag

ทราบอีก: ถ้าคุณกำลังใช้การแปลงสำหรับรัฐปฏิสัมพันธ์ (เช่น:hoverหรือ:active) คุณจะต้องใช้องค์ประกอบในรัฐเริ่มต้นเช่นinline-block a { display: inline-block; } a:active { transform: translateY(0.125em); }การใช้inline-blockสถานะการโต้ตอบเพียงอย่างเดียวดูเหมือนจะไม่ได้ผล อย่างน้อยใน Chrome ก็ใช้งานได้ดีใน Firefox
Paul d'Aoust

1
ขอบคุณที่ชี้ให้เห็นความจริงที่ใช้-webkit-transformไม่ได้กับรายการแบบอินไลน์ เคยติดเรื่องนี้มาก่อน
pbojinov

@phihag จุดที่ยอดเยี่ยมคุณช่วยฉันดึงผมที่สำคัญ! เป็นที่น่าสังเกตว่าสิ่งนี้อาจทำให้องค์ประกอบของคุณหายไปหลังจากที่ภาพเคลื่อนไหวทำงานแล้ว
texelate

21

เนื่องจากไม่มีใครอ้างถึงเอกสารที่เกี่ยวข้อง:

CSS Transforms Module ระดับ 1 - คำศัพท์ - องค์ประกอบที่เปลี่ยนแปลงได้

องค์ประกอบที่เปลี่ยนแปลงได้คือองค์ประกอบหนึ่งในประเภทต่อไปนี้:

  • องค์ประกอบที่มีเลย์เอาต์อยู่ภายใต้รูปแบบกล่อง CSS ซึ่งเป็นองค์ประกอบในระดับบล็อกหรือระดับอะตอมหรือที่คุณสมบัติการแสดงผลคำนวณเป็นแถวตารางกลุ่มแถวตารางตารางส่วนหัวกลุ่มส่วนท้ายของตาราง -group, table-cell หรือ table-caption
  • องค์ประกอบในเนมสเปซ SVG และไม่ได้อยู่ภายใต้การควบคุมโดยโมเดลกล่อง CSS ซึ่งมีแอตทริบิวต์ transform "patternTransform" หรือ gradientTransform

ในกรณีของคุณ<a>องค์ประกอบจะเป็นไปinlineตามค่าเริ่มต้น

การเปลี่ยนdisplayค่าของคุณสมบัติเพื่อinline-blockแสดงองค์ประกอบเป็นองค์ประกอบระดับอะตอมแบบอินไลน์ดังนั้นองค์ประกอบจึงกลายเป็น"เปลี่ยนแปลงได้"ตามคำจำกัดความ

li a {
   display: inline-block;
   -webkit-transform: rotate(10deg);
   -moz-transform: rotate(10deg);
   -o-transform: rotate(10deg); 
   transform: rotate(10deg);
}

ดังที่ได้กล่าวมาแล้วสิ่งนี้ดูเหมือนจะใช้ได้เฉพาะใน-webkitเบราว์เซอร์ที่ใช้เนื่องจากดูเหมือนว่าจะทำงานใน IE / FF โดยไม่คำนึงถึง


0

คุณกำลังพยายามหมุนลิงก์โดยเฉพาะหรือไม่? เนื่องจากการทำบนแท็ก LIดูเหมือนจะทำงานได้ดี

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


-4

-webkit-transform ไม่จำเป็นอีกต่อไป

ms แล้วรองรับการหมุน ( -ms-transform: rotate(-10deg);)

ลองสิ่งนี้:

li a {
   ...

    -webkit-transform: rotate(-10deg);
    -moz-transform: rotate(-10deg);
    -o-transform: rotate(-10deg);
    -ms-transform: rotate(-10deg);
    -sand-transform: rotate(10deg);
    display: block;
    position: fixed;
    }

1
ระหว่างการทดสอบวันนี้ฉันสังเกตเห็นว่า-webkit-transformChrome ไม่จำเป็นอีกต่อไป อย่างไรก็ตามยังคงจำเป็นใน Safari 8
John Slegers

-sand-transform คืออะไร? การค้นหาโดย Google สั้น ๆ ไม่พบอะไรเลย
พีท

Google "CSS Sandpaper" ซึ่งเกี่ยวข้องกับคำถามและอาจทำให้สิ่งต่างๆง่ายขึ้น เป็นการแฮ็กที่ใช้การสนับสนุนการแปลง CSS มาตรฐานสำหรับ IE เวอร์ชันเก่า
Pedro Justo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.