IE가 가상 요소 CSS를 넘나들나요?


81

나는 IE에서 작동하기 위해 몇 가지 의사 요소를 얻으려고 노력했지만 그렇게 할 수는 없습니다.

그것은 CSS를 지우고 거기에없는 것처럼 행동합니다.

내가 뭘 잘못하고 있는지 아는 사람이 있습니까?

.newbutton {
  border-radius: 50%;
  width: 74px;
  height: 74px;
  position: relative;
  background-color: black;
  margin: 60px 0px 25px 17px;
  overflow: visible;
}

.newbutton:before {
  content: "f";
  width: 80px;
  height: 80px;
  position: absolute;
  border-radius: 50%;
  z-index: -1;
  top: 37px;
  left: 37px;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
  -webkit-animation-name: fadecolor;
  -webkit-animation-duration: 5s;
  -webkit-animation-iteration-count: infinite;
  animation-name: fadecolor;
  animation-duration: 5s;
  animation-iteration-count: infinite;
}

.newbutton:after {
  content: "";
  width: 80px;
  height: 80px;
  position: absolute;
  border-radius: 50%;
  z-index: -2;
  top: -3px;
  left: -3px;
  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#01BAE8), to(#0183D5));
}
<div class="starttour">
  <div class="newbutton headerbutton">
    <span class="iconhead icon-02-arrow-icon"></span>
  </div>
  <p>START TOUR</p>
</div>

일어나는 일의 스크린 샷 :


11
유쾌하게도 -webkit-비트를 지우지 않습니다 .
BoltClock

5
Pfff, 그것에 대해 말해줘. 일부러 저를 트롤링하고 있습니다. 멍청한 IE.
Kairowa

1
어쨌든 어떤 버전의 IE에서 테스트하고 있으며 문서 모드 / 브라우저 모드에 대해 무엇을 알려 줍니까? 나는 IE가 왜 이런 식으로 행동하는지 이해하지 못했지만, 이러한 것들이 단서를 제공하기를 바랍니다.
BoltClock

1
IE11. 불행히도 문서 모드에서 IE9, IE10 및 Edge를 사용해 보았습니다.
Kairowa

답변:


60

이것은 알려진 문제이지만 실제로 스타일이 적용되고 있습니다. 개발자 도구는 유사 요소 스타일이 부모 요소에 해당하는 스타일에 의해 재정의되고 있다고 생각합니다. 이는 상위 요소 의 계산 된 스타일을 검사하고 경쟁 스타일 (F12 도구가 믿는 것) 을 살펴보면 쉽게 입증됩니다 .

여기에 이미지 설명 입력

그러나 이러한 스타일은 실제로 개발자 도구가 믿거 나 제안하는 것과 관계없이 올바른 요소에 적용됩니다. 부모 요소와 두 개의 의사 요소를 실행하고 계산 된 높이를 로깅하여 이를 확인할 수 있습니다 .

(function () {

    var el = document.querySelector( ".newbutton" );

    [ "", "::before", "::after" ].forEach(function ( e ) {
        // Output: 74px, 80px, 80px
        console.log( window.getComputedStyle( el, e ).height );
    });

}());

이 버그를 추적하는 내부 문제가 이미 있는지 확인하고이 질문을 추가하겠습니다. 일반적으로 말해서, 우리는 현실 세계에서 그 문제가 야기하는 슬픔의 정도에 비례하여 이와 같은 문제에주의를 기울이려고합니다. 따라서 귀하의 질문을 티켓에 새로 추가하면 수정을 진행하는 데 도움이 될 수 있습니다. :)


15
IE11에서 동일한 문제가 발생하지만 의사 요소 스타일이 적용되지 않습니다. 계산 됨 패널에서 가정 된 보호자 재정의를 끄더라도 유사 요소 스타일이 적용되지 않습니다. 렌더링되는 전체 블록의 유일한 부분은 콘텐츠 규칙이며 나머지는 모두 무시됩니다.
gps03 2015 년

Computed로 이동하여 속성을 클릭하고 재정의되고 있음을 알 수있었습니다. 나는 th의 배경을 덮어 썼고 정렬을 위해 캐럿 아이콘이 표시되지 않았습니다 (Datatables). 감사!
Exzile

::after내 코드의 모든 의사 스타일은 IE11과 Edge에서 교차했습니다. 실제로 적용되는 모든 규칙 :-) 하나를 제외하고 모두 : cursor: pointer. 모바일 햄버거 메뉴 용이므로 포인터를 놓을 수 있습니다 (그 화면 크기에서 많은 호버링을 기대하지 않기 때문입니다).
마이클 벤자민

@Michael_B 그것은 알려진 버그입니다. 나는 의사 요소 스타일 이 부모 요소 스타일과 충돌한다고 생각한다고 생각 합니다. 따라서 유사 요소에 설정된 모든 항목, 즉 상위 요소에도 설정된 것은 모두 줄이 그어져 있습니다.
Sampson

안녕하세요, 해결책은 무엇입니까? 나는 ... IE11 11.321.14393.0와 IE 내 의사 클래스를 겹쳐 사용하고 있습니다
Hazlo8

42

나는 똑같은 문제가 있었다! 사용자 :before:after유사 요소에 display속성을 제공해야합니다 .

:before및에 다음을 추가합니다 :after.

display: block; 

문제가 해결 될 것입니다. :)


1
현재 설정 한 속성을 공유합니다. I는 콘텐츠 속성 세트가 당신에게 하나 해달라고 추측거야 아니면 그나마 pseudos을 허용하는 요소에 대한 의사 요소를 설정하려고
프레디

1
이것은 나를 위해 문제를 해결했습니다! 속성은 여전히 ​​Dev Tools에서 줄이 그어져 있지만 이제 요소가 제대로 나타납니다.
Nikki Erwin Ramirez

감사합니다! 처음에는이 작업을했지만 도움이되지 않았지만 왼쪽 속성을 설정하지 않은 것을 알았습니다. 그래서 display : block; 왼쪽 : 0; IE를 치유했습니다!
Max Kurtz

1
또 다른 날, 또 다른 IE11 트릭! 잠깐 ... 벌써 2020 년이야 ...
신경 전달 물질

2

위의 답변에 추가하려면. 나는 display : block을 시도했지만 내 문제는 배경 이미지가 뒤틀린 것입니다. 대신 아래에서 사용했습니다.

display: inline-block;

이것은 내 : before : after 내에서 뒤틀린 이미지 문제를 해결했습니다.


2

Material Font와 IE11에서 동일한 문제가 발생하여 위의 솔루션으로 해결할 수 없었기 때문에 더 멀리 보았습니다.

머티리얼 디자인 아이콘에 대한 문서는 사용을 언급합니다.

<i class="material-icons">&#xE87C;</i>

합자를 지원하지 않는 브라우저의 경우. 각 항목의 코드 포인트는 여기에 나열되어 있습니다. https://github.com/google/material-design-icons/blob/master/iconfont/codepoints

: after 요소의 문제점은 content-Tag의 HTML 이 & # x ..를 표시하는 일반 텍스트로 렌더링되므로 다음과 같이 \ 이스케이프를 사용해야합니다.

content:  "\e5c5";

유니 코드 문자를 사용하여 내 문제를 해결했습니다. 그러나 가상 요소 스타일은 줄이 그어진 것처럼 보이지만 실제로 IE11에 적용된다는 점은 주목할 가치가 있습니다. 이 대답과 함께 받아 들여진 대답은 그것을 보는 데 도움이되었습니다.
samnau

0

나는 똑같은 문제가 있었다! 유사 요소의 상위 요소에 overflow : visible속성을 제공해야합니다 .


-1

이 링크 에서 인용 한 " http://stackoverflow.com/questions/2587669/can-i-use-the-after-pseudo-element-on-an-input-field " 링크를 확인하십시오.

: after 및 : before는 Internet Explorer 7 이하에서는 모든 요소에서 지원되지 않습니다.

또한 양식 요소 (입력) 및 이미지 요소와 같은 대체 요소에 사용하기위한 것이 아닙니다.

즉, 순수한 CSS로는 불가능합니다.

/ * * 트릭은 여기에 있습니다. *이 선택자는 "입력 텍스트 (+) 뒤의 첫 번째 dom 요소를 가져와 * 이전 내용을 * 값 (: before)으로 설정합니다. * /

input#myTextField + *:before {
       content: "👍";
    } 

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