วิธีพลิกภาพพื้นหลังโดยใช้ CSS


224

วิธีพลิกภาพพื้นหลังโดยใช้ CSS? เป็นไปได้ไหม?

ฉันกำลังใช้ภาพลูกศรนี้เป็นbackground-imageของliใน CSS

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

บน: visitedฉันต้องพลิกลูกศรนี้ในแนวนอน ฉันสามารถทำสิ่งนี้เพื่อสร้างภาพลูกศรอีกภาพหนึ่งแต่ฉันแค่อยากรู้ว่าจะสามารถพลิกภาพใน CSS สำหรับ:visited


3
คำถามที่ดี! สิ่งนี้อาจมีประโยชน์ในหลาย ๆ กรณี
AshBrad

@AshBrad - ขอบคุณสำหรับความคิดเห็น ใช่มันอาจมีประโยชน์ในหลาย ๆ เงื่อนไข
Jitendra Vyas

คำตอบ:


234

คุณสามารถพลิกมันในแนวนอนด้วย CSS ...

a:visited {
    -moz-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
    filter: FlipH;
    -ms-filter: "FlipH";
}

jsFiddle

หากคุณต้องการพลิกแนวตั้งแทน ...

a:visited {
    -moz-transform: scaleY(-1);
    -o-transform: scaleY(-1);
    -webkit-transform: scaleY(-1);
    transform: scaleY(-1);
    filter: FlipV;
    -ms-filter: "FlipV";
}

แหล่ง


1
หากฉันพิจารณาเบราว์เซอร์ของเว็บคิทเท่านั้น-webkit-transform: scaleX(-1);ก็เพียงพอแล้วใช่ไหม
Jitendra Vyas

@Jitendra มันควรจะเป็นบวกกับคุณสมบัตินำหน้าผู้ขายที่ไม่ใช่
alex

25
@alex - ปัญหาหนึ่งในเรื่องนี้ มันพลิกข้อความที่อยู่ข้างใน<a>และฉันต้องการพลิกภาพพื้นหลังเท่านั้น รหัสที่คุณให้คือการพลิกองค์ประกอบทั้งหมด
Jitendra Vyas

3
@Jitendra ดูเหมือนว่าคุณจะไม่สามารถพลิกภาพพื้นหลังได้ คุณสามารถวางไอคอนในspanและจากนั้นพลิกที่อย่างไรก็ตาม
alex

1
@alex - ตกลงถ้าฉันใช้รหัสนี้<li><a href="#"><span>text</span></a></li>มันจะพลิกข้อความด้วยดังนั้นสิ่งที่จะตรงข้ามกับการให้รหัสของคุณเพื่อ unflip ข้อความเพื่อให้ฉันสามารถเขียนรหัส unflip สำหรับli a span { }ใน CSS
Jitendra Vyas

86

ฉันพบว่าฉันจะพลิกเฉพาะพื้นหลังไม่ใช่องค์ประกอบทั้งหมดหลังจากเห็นเบาะแสเพื่อพลิกคำตอบของอเล็กซ์ ขอบคุณ 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/


7
@Jitendra คุณช่วยกรุณาตรวจสอบ Jsfiddle URL ฉันคิดว่ามันไม่ได้มีรหัสเดียวกับที่คุณโพสต์ในคำตอบของคุณ + มันไม่ทำงาน ..
sachinjain024

3
รหัส jsfiddle ที่คุณโพสต์กำลังพลิกข้อความเป็น? มันเป็นสิ่งที่คุณต้องการหรือเพียงแค่ภาพพื้นหลัง?
mandza

1
jsfiddle ของคุณไม่เหมือนกับโค้ดคุณช่วยอัพเดทได้ไหม?
Royi Namir

1
@JitendraVy สวัสดีปี 2559! ฉันกำลังพิจารณาที่จะแนะนำการแก้ไขเพื่อแก้ไข jsfiddle URL เพราะมันยังเชื่อมโยงไปยังรหัสอื่นที่ไม่ใช่คำตอบของคุณที่นี่ - สนใจที่จะแก้ไขโพสต์หรือลบลิงค์? ขอบคุณ :)
totallyNotLizards

-webkit-transform:scaleX(-1);สำหรับ chrome
Wesley Smith

19

ตาม 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>&copy; 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);
}

ดังนั้นคุณจะต้องพลิกองค์ประกอบแล้วพลิกลูกทั้งหมดอีกครั้ง ทำงานร่วมกับองค์ประกอบที่ซ้อนกันเช่นกัน


1
ขอบคุณสำหรับคำตอบ! อันนี้ใช้ได้ดีที่สุดสำหรับฉันเนื่องจากคนอื่น ๆ พลิกเด็กทุกคนด้วยหรือต้องใช้กลอุบายที่ซับซ้อนมากขึ้นในการกลับด้าน
Austin Salgat

หากคำตอบนี้พลิกทุกอย่างภายในองค์ประกอบที่กำหนดเป้าหมายของคุณเพียงแค่ผลักมันลงไปในองค์ประกอบอื่น กล่าวอีกนัยหนึ่งคือหุ้มเนื้อหาที่คุณไม่ต้องการให้พลิกเข้าไปในองค์ประกอบ <div> ใหม่
Onosa


5

คุณสามารถพลิกได้ทั้งแนวตั้งและแนวนอนในเวลาเดียวกัน

    -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>


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