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

Jit*_*yas 213 css css3 mobile-webkit

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

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

在此输入图像描述

开:visited我需要水平翻转此箭头.我可以这样做另一个箭头图像我只是好奇知道是否可以在CSS中翻转图像:visited

ale*_*lex 219

你可以用CSS水平翻转它......

a:visited {
    -moz-transform: scaleX(-1);
    -o-transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    transform: scaleX(-1);
    filter: FlipH;
    -ms-filter: "FlipH";
}
Run Code Online (Sandbox Code Playgroud)

jsFiddle.

如果你想垂直翻转......

a:visited {
    -moz-transform: scaleY(-1);
    -o-transform: scaleY(-1);
    -webkit-transform: scaleY(-1);
    transform: scaleY(-1);
    filter: FlipV;
    -ms-filter: "FlipV";
}
Run Code Online (Sandbox Code Playgroud)

来源.

  • @alex - 这个问题.它也在翻转`<a>中的文本,我只想翻转背景图像.你给出的代码是翻转整个元素 (21认同)
  • @Jitendra看起来你不能只是翻转背景图片.然而,您可以将图标放在"span"中,然后将其翻转. (3认同)

Jit*_*yas 77

我发现在看到亚历克斯的回答中有一个线索后,我只能翻转背景而不是整个元素.谢谢亚历克斯的答案

HTML

<div class="prev"><a href="">Previous</a></div>
<div class="next"><a href="">Next</a></div>
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

请参见此处的示例http://jsfiddle.net/qngrf/807/

  • @Jitendra你能查看Jsfiddle URL吗?我认为你没有在你的答案中发布相同的代码+它不起作用.. (7认同)
  • 您发布的jsfiddle代码是将文本翻转到?它是你想要的,还是只是背景图像? (3认同)

jdf*_*the 18

根据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>
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

所以你最终会翻转元素,然后重新翻转所有孩子.也适用于嵌套元素.


Bor*_*sky 11

对于它的价值,对于基于Gecko的浏览器,:visited由于产生的隐私泄漏,您无法解决这个问题.见http://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/


Fi *_*Ras 5

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

    -moz-transform: scaleX(-1) scaleY(-1);
    -o-transform: scaleX(-1) scaleY(-1);
    -webkit-transform: scaleX(-1) scaleY(-1);
    transform: scaleX(-1) scaleY(-1);
Run Code Online (Sandbox Code Playgroud)

通过过渡属性,您可以获得一个很酷的翻转

    -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;
Run Code Online (Sandbox Code Playgroud)

实际上它翻转了整个元素,而不仅仅是background-image

SNIPPET

function flip(){
	var myDiv = document.getElementById('myDiv');
	if (myDiv.className == 'myFlipedDiv'){
		myDiv.className = '';
	}else{
		myDiv.className = 'myFlipedDiv';
	}
}
Run Code Online (Sandbox Code Playgroud)
#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);
}
Run Code Online (Sandbox Code Playgroud)
<div id="myDiv">Some content here</div>

<button onclick="flip()">Click to flip</button>
Run Code Online (Sandbox Code Playgroud)