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

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

我在css中的libackground-image中使用这个箭头图像

enter image description here

我需要水平翻转这个箭头。我可以这样做来制作另一个箭头的图像,我只是好奇是否可以在CSS中为:visited翻转图像

384153 次浏览

你可以用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";
}

在Alex的答案中看到翻转的线索后,我发现我只能翻转背景而不是整个元素。谢谢alex的回答

超文本标记语言

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

不管它的价值是什么,对于基于gecko的浏览器,由于导致的隐私泄漏,你不能将这个东西设置为:visited。看到http://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/

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

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+上使用供应商前缀。

其他答案使用:before来阻止它翻转内部内容。我在我的页脚上使用了这个(从我的页眉垂直镜像图像):

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);
}

所以你最终翻转了元素,然后再翻转它所有的子元素。也适用于嵌套元素。

你可以垂直和水平翻转同时

    -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

片段

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