CSS를 사용하여 텍스트를 미러링 / 플립 할 수 있습니까?


235

CSS / CSS3를 사용하여 텍스트를 미러링 할 수 있습니까?

구체적으로,이 가위 문자“✂”( ✂)가 있는데, 왼쪽이 아닌 오른쪽을 가리키는 것으로 표시하고 싶습니다.


9
어떤 이유로 가위 이미지가 제대로 작동하지 않으면 % <및> %로 위조 된 것을 보았습니다
Pete Wilson


3
Micheal의 답변이 더 정확합니다. 정답을 업데이트 할 수 있습니까? 정답으로 표시 한 답은 거울이 아니라 180도 회전하기 때문입니다.
Sanket Sahu

@PeteWilson,? ✂ 문자가 너무 일반적입니까? 무엇을 위해 사용 되었습니까?
Pacerier

4
그림 이모티콘 구현에 따라 회전이 다릅니다. 사과 이모티콘에서 아래쪽을 가리키고 있습니다.
Akkumulator

답변:


411

이를 위해 CSS 변환을 사용할 수 있습니다. 수평 플립은 다음과 같이 div 스케일링을 포함합니다.

-moz-transform: scale(-1, 1);
-webkit-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);

그리고 수직 뒤집기는 div를 다음과 같이 스케일링하는 것을 포함합니다.

-moz-transform: scale(1, -1);
-webkit-transform: scale(1, -1);
-o-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);

데모:

span{ display: inline-block; margin:1em; } 
.flip_H{ transform: scale(-1, 1); color:red; }
.flip_V{ transform: scale(1, -1); color:green; }
<span class='flip_H'>Demo text &#9986;</span>
<span class='flip_V'>Demo text &#9986;</span>


4
이것이 정답이어야합니다! (수직 축을 따라 거울, 수평 축에 대해 scale (1, -1))
디자인 : Adrian

불행히도 우리는 이것이 실제로 모든 사용 사례에서 실제로 작동하는 세상에 살고 있지는 않습니다.
Chris Sobolewski

접두사가 아닌 마지막으로 실제 브라우저 접두사를 답변에 포함시킬 수 있습니까? 제공 한 CSS가 작동하지 않습니다.
Serrano

@SerranoPereira는 정말 제안에 감사드립니다. 답변이 수정되었습니다.
methodofaction

11
참고 CSS 변환은 인라인 요소에 대한 작업을하지 않는 인라인 블록 : 당신은 또한 다음 줄 표시하지 않는 한, 재단의 제안 <I> 태그있다.
enigment

66
-moz-transform: scale(-1, 1);
-webkit-transform: scale(-1, 1);
-o-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);

두 개의 매개 변수는 X 축과 Y 축, -1은 미러이지만 필요에 따라 원하는 크기로 조정할 수 있습니다. 거꾸로되어 있습니다 (-1, -1).

2011 년에 크로스 브라우저 지원에 사용 가능한 최상의 옵션에 관심이 있으시면 이전 답변을 참조하십시오 .


21
기술적으로 이것은 거울이 아닙니다. 회전. 그래서거야 요소의 몇 가지 유형 만 일
borisrorsvort

4
Chrome에 표시를 추가 할 때까지 몇 가지 문제가있었습니다. 인라인 블록을 스팬에 추가 (pictos 글꼴 사용)
Clarence Liu

1
이 질문을 받았을 때 브라우저 변환이 널리 지원되지 않았기 때문에 이것이 올바른 대답이라고 주장합니다. 실제로 변환은 IE 9까지 지원되지 않으므로 적어도 이것이 조금 이상 정답이라고 주장합니다.
Chris Sobolewski 21

이 답변은 잘못되었습니다. 거울이 아닙니다. 예제에 제공된 기호가 세로 비대칭이기 때문에이 경우에만 작동합니다.
gregtczap

이것이 그 자체로는 유용하지만 정확한 질문에 대한 답은 아닙니다. 이미지를 가로로 뒤집기를 원했기 때문에 검색 엔진을 통해이 질문을 찾았습니다. OPs 가위처럼 대칭이 아닙니다.
gillytech

58

실제 거울 :

.mirror{
    display: inline-block; 
    font-size: 30px;

    -webkit-transform: matrix(-1, 0, 0, 1, 0, 0);
    -moz-transform: matrix(-1, 0, 0, 1, 0, 0);
    -o-transform: matrix(-1, 0, 0, 1, 0, 0);
    transform: matrix(-1, 0, 0, 1, 0, 0);
}
<span class='mirror'>Mirror Text<span>


14
당신은해야한다 항상 표준이 브라우저에 의해 채택 될 때, 그래서 그것은 (나이, buggier) 접두사 버전 대신 표준 기반의 버전을 사용하는 것, 마지막으로 표준을 준수하는 (비 접두사) 속성을 넣어. 이 경우 "변환 : 행렬 (-1, 0, 0, 1, 0, 0);"을 의미합니다. 마지막 속성 이어야합니다 . (이 내용을 반영하여 답변을 편집했습니다.)
Jay Dansand

7
이것이 정답인지 질문인지 모르겠지만 fontawesome / bootstrap 사용자에게 fa-flip-horizontaland fa-flip-vertical속성 에 대해 알리고 싶습니다
lol

1
훌륭한 답변. 그러나 display : block; 꼭 필요한 것은 아닙니다.
길리

6
...... 표시 : 차단; 또는 인라인 차단이 필요합니다
dGo

이것은 Y 축을 따라 회전 할 때 요소 뒷면의 올바른 텍스트 방향을 유지하는 데 실제로 도움이되었습니다. 예를 들면 다음과 같습니다.backface-visibility: visible; transform-origin: center center; transform-style: preserve-3d; transform: matrix(-1, 0, 0, 1, 0, 0) rotateY(180deg) ;
국회

12

당신은 사용자 중 하나를 사용할 수 있습니다

.your-class{ 
      position:absolute; 
      -moz-transform: scaleX(-1); 
      -o-transform: scaleX(-1); 
      -webkit-transform: scaleX(-1); 
      transform: scaleX(-1); 
      filter: FlipH;  
}

또는

 .your-class{ 
  position:absolute;
  transform: rotate(360deg) scaleX(-1);
}

공지 사항 해당 설정을 position하는 것은 absolute매우 중요합니다! 설정하지 않으면 설정해야합니다. display: inline-block;


7

나는 인터넷을 포함 하여이 솔루션을 함께 모았습니다.

이 솔루션은 IE6 +를 포함한 모든 브라우저에서 scale(-1,1)(적절한 미러)와 필요한 경우 적절한 filter/ -ms-filter속성 (IE6-8)을 사용하여 작동하는 것 같습니다 .

/* Cross-browser mirroring of content. Note that CSS pre-processors
  like Less cough on the media hack. 

  Microsoft recommends using BasicImage as a more efficent/faster form of
  mirroring, instead of FlipH or some kind of Matrix scaling/transform.
  @see http://msdn.microsoft.com/en-us/library/ms532972%28v=vs.85%29.aspx
  @see http://msdn.microsoft.com/en-us/library/ms532992%28v=vs.85%29.aspx
*/

/* IE8 only via hack: necessary because IE9+ will also interpret -ms-filter,
  and mirroring something that's already mirrored results in no net change! */
@media \0screen {
  .mirror {
    -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(mirror=1)";
  }
}
.mirror {
  /* IE6 and 7 via hack */
  *filter: progid:DXImageTransform.Microsoft.BasicImage(mirror=1);
  /* Standards browsers, including IE9+ */
  -moz-transform: scale(-1,1);
  -ms-transform: scale(-1,1);
  -o-transform: scale(-1,1); /* Op 11.5 only */
  -webkit-transform: scale(-1,1);
  transform: scale(-1,1);
}

6

크로스 브라우저 호환성을 위해이 클래스를 작성하십시오.

.mirror-icon:before {
    -webkit-transform: scale(-1, 1);
    -moz-transform: scale(-1, 1);
    -ms-transform: scale(-1, 1);
    -o-transform: scale(-1, 1);
    transform: scale(-1, 1);
}

아이콘 클래스에 추가하십시오.

<i class="icon-search mirror-icon"></i>

왼쪽에 손잡이가있는 검색 아이콘을 얻으려면


3

이를 위해 '변형'을 사용할 수 있습니다. http://jsfiddle.net/aRcQ8/

CSS :

-moz-transform: rotate(-180deg);
-webkit-transform: rotate(-180deg);
transform: rotate(-180deg);

3

rotateY실제 미러 미러 도 있습니다 .

transform: rotateY(180deg);

아마도 더 명확하고 이해할 수있는 것입니다.

편집 : 오페라에서 작동하지 않는 것 같습니다 ... 슬프게도. 그러나 Firefox에서는 제대로 작동합니다. 우리가 translate3d아마도 어떤 종류의 일을하고 있다고 암묵적으로 말해야 할 것 같습니까? 아니면 그런 것.


1
궁금한 사람들에게는 이것이 3D 변환입니다. 나는 그것이 이전에 주어진 스케일과 매트릭스 방법보다 확실히 더 읽기 쉽고 이해할 수 있다고 생각합니다.
gregtczap

회전이 거울 인 방법을 보지 못합니다. 특별한 경우에만 나타납니다.
cel sharp

@celsharp 그것은 Y 축에 있으므로 이미지 / 요소를 뒤쪽에서 볼 수 있습니다.
jeromej

1

수평 및 수직 미러 플립에 대한 실무 데모를 추가하기 만하면됩니다.

.horizontal-flip {
  -moz-transform: scale(-1, 1);
  -webkit-transform: scale(-1, 1);
  -o-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}

.vertical-flip {
  -moz-transform: scale(1, -1);
  -webkit-transform: scale(1, -1);
  -o-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
<div class="horizontal-flip">
  Hello, World
  <input type="text">
</div>
<hr>
<div class="vertical-flip">
  Hello, World
  <input type="text">
</div>


0

이것은 나를 위해 일한 것입니다 <span class="navigation-pipe">&gt;</span>

display:inline-block;
-moz-transform: rotate(360deg);
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=4);

인라인 블록 또는 회전하려면 표시가 필요합니다. 기본적으로 첫 번째 대답은 좋습니다. 그러나 -180은 효과가 없었습니다.



0

캐릭터를 뒤집는 방법에 대한 예를 하나 더 들겠습니다. 필요한 경우 공급 업체 접두사를 추가하지만 현재 모든 최신 브라우저는 접두사가없는 변환 속성을 지원합니다. Opera Mini 모드가 활성화 된 경우 (세계 사용자의 ~ 3 %) Opera 만 예외입니다.

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Text rotation</title>
  <style type="text/css" media="screen">
    .scissors {
      display: inline-block;
      font-size: 50px;
      color: red;
    }
    .original {
      color: initial;
    }
    .flipped {
      transform: rotateZ(180deg);
    }
    .upward {
      transform: rotateZ(-90deg);
    }
    .downward {
      transform: rotateZ(90deg);
    }
  </style>
  
</head>
<body>
  <ul>
    <li>Original: <span class="scissors original">&#9986;</span></li>
    <li>Flipped: <span class="scissors flipped">&#9986;</span></li>
    <li>Upward: <span class="scissors upward">&#9986;</span></li>
    <li>Downward: <span class="scissors downward">&#9986;</span></li>
  </ul>
</body>
</html>



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.