วิธีพลิกภาพพื้นหลังโดยใช้ CSS? เป็นไปได้ไหม?
ฉันกำลังใช้ภาพลูกศรนี้เป็นbackground-image
ของli
ใน CSS
บน: visited
ฉันต้องพลิกลูกศรนี้ในแนวนอน ฉันสามารถทำสิ่งนี้เพื่อสร้างภาพลูกศรอีกภาพหนึ่งแต่ฉันแค่อยากรู้ว่าจะสามารถพลิกภาพใน CSS สำหรับ:visited
วิธีพลิกภาพพื้นหลังโดยใช้ CSS? เป็นไปได้ไหม?
ฉันกำลังใช้ภาพลูกศรนี้เป็นbackground-image
ของli
ใน CSS
บน: visited
ฉันต้องพลิกลูกศรนี้ในแนวนอน ฉันสามารถทำสิ่งนี้เพื่อสร้างภาพลูกศรอีกภาพหนึ่งแต่ฉันแค่อยากรู้ว่าจะสามารถพลิกภาพใน CSS สำหรับ:visited
คำตอบ:
คุณสามารถพลิกมันในแนวนอนด้วย CSS ...
a:visited {
-moz-transform: scaleX(-1);
-o-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
transform: scaleX(-1);
filter: FlipH;
-ms-filter: "FlipH";
}
หากคุณต้องการพลิกแนวตั้งแทน ...
a:visited {
-moz-transform: scaleY(-1);
-o-transform: scaleY(-1);
-webkit-transform: scaleY(-1);
transform: scaleY(-1);
filter: FlipV;
-ms-filter: "FlipV";
}
-webkit-transform: scaleX(-1);
ก็เพียงพอแล้วใช่ไหม
<a>
และฉันต้องการพลิกภาพพื้นหลังเท่านั้น รหัสที่คุณให้คือการพลิกองค์ประกอบทั้งหมด
span
และจากนั้นพลิกที่อย่างไรก็ตาม
<li><a href="#"><span>text</span></a></li>
มันจะพลิกข้อความด้วยดังนั้นสิ่งที่จะตรงข้ามกับการให้รหัสของคุณเพื่อ unflip ข้อความเพื่อให้ฉันสามารถเขียนรหัส unflip สำหรับli a span { }
ใน CSS
ฉันพบว่าฉันจะพลิกเฉพาะพื้นหลังไม่ใช่องค์ประกอบทั้งหมดหลังจากเห็นเบาะแสเพื่อพลิกคำตอบของอเล็กซ์ ขอบคุณ alex สำหรับคำตอบของคุณ
HTML
<div class="prev"><a href="">Previous</a></div>
<div class="next"><a href="">Next</a></div>
CSS
.next a, .prev a {
width:200px;
background:#fff
}
.next {
float:left
}
.prev {
float:right
}
.prev a:before, .next a:before {
content:"";
width:16px;
height:16px;
margin:0 5px 0 0;
background:url(http://i.stack.imgur.com/ah0iN.png) no-repeat 0 0;
display:inline-block
}
.next a:before {
margin:0 0 0 5px;
transform:scaleX(-1);
}
ดูตัวอย่างได้ที่นี่http://jsfiddle.net/qngrf/807/
-webkit-transform:scaleX(-1);
สำหรับ chrome
ตาม w3schools: http://www.w3schools.com/cssref/css3_pr_transform.asp
คุณสมบัติการแปลงได้รับการสนับสนุนใน Internet Explorer 10, Firefox และ Opera Internet Explorer 9 รองรับคุณสมบัติอื่น -ms-transform (การแปลง 2D เท่านั้น) Safari และ Chrome สนับสนุนทางเลือกคุณสมบัติ -webkit-transform (การแปลง 3D และ 2D) Opera รองรับการแปลง 2D เท่านั้น
นี่คือการแปลง 2D ดังนั้นจึงควรใช้งานได้กับคำนำหน้าของผู้ขายใน Chrome, Firefox, Opera, Safari และ IE9 +
คำตอบอื่น ๆ ที่ใช้: ก่อนที่จะหยุดไม่ให้พลิกเนื้อหาภายใน ฉันใช้สิ่งนี้ในส่วนท้ายของฉัน (เพื่อสะท้อนภาพในแนวตั้งจากส่วนหัวของฉัน):
HTML:
<footer>
<p><a href="page">Footer Link</a></p>
<p>© 2014 Company</p>
</footer>
CSS:
footer {
background:url(/img/headerbg.png) repeat-x 0 0;
/* flip background vertically */
-webkit-transform:scaleY(-1);
-moz-transform:scaleY(-1);
-ms-transform:scaleY(-1);
-o-transform:scaleY(-1);
transform:scaleY(-1);
}
/* undo the vertical flip for all child elements */
footer * {
-webkit-transform:scaleY(-1);
-moz-transform:scaleY(-1);
-ms-transform:scaleY(-1);
-o-transform:scaleY(-1);
transform:scaleY(-1);
}
ดังนั้นคุณจะต้องพลิกองค์ประกอบแล้วพลิกลูกทั้งหมดอีกครั้ง ทำงานร่วมกับองค์ประกอบที่ซ้อนกันเช่นกัน
สำหรับสิ่งที่คุ้มค่าสำหรับเบราว์เซอร์ที่ใช้ Gecko คุณไม่สามารถแก้ไขปัญหานี้ได้:visited
เนื่องจากการรั่วไหลของข้อมูลส่วนบุคคล ดูhttp://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/
คุณสามารถพลิกได้ทั้งแนวตั้งและแนวนอนในเวลาเดียวกัน
-moz-transform: scaleX(-1) scaleY(-1);
-o-transform: scaleX(-1) scaleY(-1);
-webkit-transform: scaleX(-1) scaleY(-1);
transform: scaleX(-1) scaleY(-1);
และด้วยคุณสมบัติการเปลี่ยนแปลงคุณจะได้รับการพลิกที่ยอดเยี่ยม
-webkit-transition: transform .4s ease-out 0ms;
-moz-transition: transform .4s ease-out 0ms;
-o-transition: transform .4s ease-out 0ms;
transition: transform .4s ease-out 0ms;
transition-property: transform;
transition-duration: .4s;
transition-timing-function: ease-out;
transition-delay: 0ms;
อันที่จริงมันพลิกองค์ประกอบทั้งหมดไม่เพียงbackground-image
SNIPPET
function flip(){
var myDiv = document.getElementById('myDiv');
if (myDiv.className == 'myFlipedDiv'){
myDiv.className = '';
}else{
myDiv.className = 'myFlipedDiv';
}
}
#myDiv{
display:inline-block;
width:200px;
height:20px;
padding:90px;
background-color:red;
text-align:center;
-webkit-transition:transform .4s ease-out 0ms;
-moz-transition:transform .4s ease-out 0ms;
-o-transition:transform .4s ease-out 0ms;
transition:transform .4s ease-out 0ms;
transition-property:transform;
transition-duration:.4s;
transition-timing-function:ease-out;
transition-delay:0ms;
}
.myFlipedDiv{
-moz-transform:scaleX(-1) scaleY(-1);
-o-transform:scaleX(-1) scaleY(-1);
-webkit-transform:scaleX(-1) scaleY(-1);
transform:scaleX(-1) scaleY(-1);
}
<div id="myDiv">Some content here</div>
<button onclick="flip()">Click to flip</button>