如何使用CSS翻转背景图片?


224

如何使用CSS翻转任何背景图片?可能吗?

currenty我使用这个箭头图像中background-imageliCSS中

在此处输入图片说明

开启:visited我需要水平翻转此箭头。我可以这样做来制作另一个箭头图像,我只是好奇地知道是否有可能在CSS中翻转图像:visited


3
好问题!在许多不同的情况下,这可能会派上用场。
AshBrad

@AshBrad-感谢您的评论。是的,它在许多情况下都可能有用
Jitendra Vyas 2012年

Answers:


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
如果我只考虑Web-kit浏览器,那么-webkit-transform: scaleX(-1);就足够了吗?
Jitendra Vyas

@Jitendra应该加上非供应商前缀属性。
alex

24
@alex-这是一个问题。它也在翻转里面的文本<a>,我只想翻转背景图像。您提供的代码是翻转整个元素的方法
Jitendra Vyas

3
@Jitendra它看起来好像不能翻转背景图像。您可以将图标放在中span,然后将其翻转。
alex

1
@alex-好吧,如果我使用此代码,<li><a href="#"><span>text</span></a></li>它也将文本翻转,因此与您给定代码相反的内容将文本翻转,以便我可以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 2014年

1
您的jsfiddle与代码不同,您可以更新它吗?
罗伊·纳米尔

1
@JitendraVyas你好,2016年!我正在考虑建议修改jsfiddle URL,因为它仍然链接到与您在此处的答案不同的代码-关心编辑帖子或删除链接吗?谢谢:)
totallyNotLizards's

-webkit-transform:scaleX(-1);
Wesley Smith,

19

根据w3schools:http//www.w3schools.com/cssref/css3_pr_transform.asp

Internet Explorer 10,Firefox和Opera中支持transform属性。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
感谢你的回答!这个对我来说效果最好,因为其他人要么也翻转了所有孩子,要么需要更复杂的技巧来扭转翻转。
奥斯丁·萨尔加特

如果此答案确实将目标元素内的所有内容翻转了,请将其向下推到另一个元素中。换句话说,将不想翻转的内容包装在新的<div>元素内。
小野


5

您可以翻转垂直和水平的同时

    -moz-transform: scaleX(-1) scaleY(-1);
    -o-transform: scaleX(-1) scaleY(-1);
    -webkit-transform: scaleX(-1) scaleY(-1);
    transform: scaleX(-1) scaleY(-1);

借助transition属性,您可以轻松翻页

    -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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.