Як перевернути фонове зображення за допомогою CSS?


224

Як перевернути будь-яке фонове зображення за допомогою CSS? Це можливо?

Я на даний момент реалізовано з допомогою цієї стрілки зображення в background-imageз liв CSS

введіть тут опис зображення

Увімкнено:visited мені потрібно перевернути цю стрілку по горизонталі. Я можу це зробити, щоб зробити ще одне зображення стрілки, Але мені просто цікаво знати, чи можна перевернути зображення в CSS для:visited


3
Гарне питання! це може стати в нагоді в багатьох різних випадках.
AshBrad

@AshBrad - Дякую за коментарі. так, це може бути корисним у багатьох умовах
Джітендра Вяс

Відповіді:


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 Це повинно бути, плюс властивість, яка не має постачальника.
alex

25
@alex - одна проблема в цьому. це гортає текст також, який знаходиться всередині, <a>і я хочу лише перевернути фонове зображення. Код, який ви надаєте, - це перевернути весь елемент
Джітндра Вяс

3
@Jitendra Це не схоже на те, що ви можете просто перевернути фонове зображення. Ви можете помістити піктограму в a, spanа потім перевернути її.
alex

1
@Alex - КІ , якщо я використовую цей код <li><a href="#"><span>text</span></a></li>це гортати текст теж так , що буде навпаки ваших піддавки коди unflip тексту так , що я можу написати unflip коду li a span { }в CSS
Jitendra Віас

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 Чи можете ви, будь ласка, перевірте URL-адресу Jsfiddle. Я думаю, це не той самий код, який ви
написали

3
Код jsfiddle, який ви публікуєте, - це гортаючий текст? це те, що ти хочеш, або просто фонове зображення?
мандза

1
ваш jsfiddle не те саме, що код, ви можете, будь ласка, оновити його?
Рой Намір

1
@JitendraVyas привіт з 2016 року! Я розглядав пропозицію редагування, щоб виправити URL-адресу jsfiddle, оскільки вона все ще посилається на інший код, ніж є у вашій відповіді тут - хочете відредагувати публікацію чи видалити посилання? Дякую :)
повністюNotLizards

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

Інші відповіді, які використовуються: перед тим, як зупинити його від перегортання внутрішнього вмісту. Я використовував це в нижньому колонтитулі (щоб вертикально відобразити зображення з мого заголовка):

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

А з властивістю переходу ви можете отримати крутий фліп

    -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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.