Як перевернути фонове зображення за допомогою 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.