CSSを使用して背景画像を反転するには?


224

CSSを使用して背景画像を反転するには?出来ますか?

私はこの矢印画像を使用していcurrenty background-imageliCSSに

ここに画像の説明を入力してください

オン: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
Webキットブラウザーのみを検討している場合-webkit-transform: scaleX(-1);は、それだけで十分ですか?
Jitendra Vyas

@Jitendraこれは、ベンダー以外の接頭辞付きプロパティでなければなりません。
アレックス2011

25
@alex-この問題の1つ。内部にあるテキストも反転しています<a>。背景画像だけを反転したいのですが。あなたが与えるコードは要素全体を反転させることです
Jitendra Vyas '24

3
@Jitendra背景画像をひっくり返すだけでは見えません。spanただし、アイコンをaに配置し、それを反転させることができます。
アレックス2011

1
@alex-OKこのコードを使用<li><a href="#"><span>text</span></a></li>すると、テキストも反転するので、テキストのフリップを解除するためのギブコードの反対になるのでli a span { }、CSSでのフリップ解除コードを記述できます
Jitendra Vyas

86

アレックスの答えを裏返す手がかりを見た後、要素全体ではなく背景のみを裏返す方法を見つけました。あなたの答えをありがとうアレックス

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コードはテキストをめくっていますか?それはあなたが望むものですか、それとも単に背景画像ですか?
マンザ2014

1
あなたのjsfiddleはコードと同じではありません、あなたはそれを更新できますか?
Royi Namir 2015

1
@JitendraVyas 2016年からこんにちは!jsfiddleのURLを修正するための編集を提案することを検討していましたが、ここでは回答のコードとは異なるコードにリンクしています。投稿を編集するか、リンクを削除しますか?ありがとう:)
totallyNotLizards 2016年

-webkit-transform:scaleX(-1);クローム用
ウェズリー・スミス

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 +でベンダープレフィックスを使用して動作するはずです。

他の回答が: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);
}

つまり、要素を反転させてから、そのすべての子を再度反転させます。ネストされた要素でも機能します。


1
答えてくれてありがとう!これは私にとって最も効果的でした。なぜなら、他の人もすべての子供をひっくり返すか、ひっくり返すためにもっと複雑なトリックを必要としたからです。
オースティンサルガット2015年

この回答がターゲット要素の内部のすべてを反転させる場合は、それを別の要素に押し下げてください。つまり、反転させたくないコンテンツを新しい<div>要素の中にラップします。
Onosa、2018年


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

スニペット

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 '21 / 04/16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.