2015-01-10 9 views
38

Я пытался получить несколько псевдо-элементов для работы с IE, но это меня просто не пускает.IE, пересекающий псевдоэлемент CSS?

Он вычеркивает 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>

Скриншот, что происходит:

+6

Как ни странно, он не вычеркивает биты '-webkit-'. – BoltClock

+4

Pfff, расскажи мне об этом. Держу пари, это меня троллирует. Глупый IE. – Kairowa

+1

В любом случае, какую версию IE вы тестируете, и что это говорит о режиме документа/браузера? Я никогда не понимал, почему IE решил действовать таким образом, но, надеюсь, эти вещи предоставят некоторые подсказки. – BoltClock

ответ

30

Это известная проблема, но стили на самом деле применяются. Инструменты разработчика думают, что стили псевдоэлементов переопределяются соответствующими стилями родительских элементов. Это легко показать, осматривая компьютерной стиль родительского-элемент и, глядя на (то, что F12 инструменты считают) конкурирующие стили:

enter image description here

Опять же, однако, эти стили на самом деле являются применяется к правильным элементам - независимо от того, что инструменты разработчика считают или предлагают. You can confirm this переезжая родительском-элемента и двух псевдо-элементов и протоколирование их вычисленная высота:

(function() { 

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

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

}()); 

Я проверю, чтобы увидеть, если у нас уже есть внутренний вопрос отслеживания эту ошибку, и добавить этот вопрос к нему , Вообще говоря, мы стараемся дать такие вопросы, как объем внимания, пропорциональный количеству горя, вызываемого проблемой в реальном мире. Так что ваш вопрос как новое дополнение в билете может помочь нам переместить исправление вперед :)

+7

Я вижу ту же проблему в IE11, но стили псевдоэлементов не применяются. Даже при отключении предполагаемых родительских переопределений на панели «Вычислить» стили псевдоэлементов не применяются. Единственная часть всего отображаемого блока - это правило содержимого, все остальное игнорируется. – gps03

+0

Входя в вычисление, я смог нажать на свойство и обнаружить, что он был переопределен. Я перепробовал фон для th, а значки каретки не показывались для сортировки (Datatables). Благодаря! – Exzile

+0

Все стили ':: after' в моем коде, вычеркнутые в IE11 и Edge. Все правила действительно применяются :-) Все, кроме одного: 'cursor: pointer'. Это для мобильного меню гамбургеров, поэтому я могу позволить указателю идти (поскольку я не ожидаю, что он будет сильно зависеть от этого размера экрана). –

14

У меня была такая же проблема! Вы должны предоставить свои :before и :after псевдо элементы a display.

Добавить следующее в :before и :after.

display: block; 

Это должно исправить вашу проблему. :)

+1

не работает для меня :( – Hazlo8

+0

Делитесь какими свойствами вы уже установили. Я собираюсь угадать, что у вас либо нет свойства содержимого, либо вы пытаетесь установить псевдоэлемент на элементах, которые не разрешают псевдоним – Freddie

+0

Это фиксировало вещь для меня! Свойства все еще вычеркнуты в Dev Tools, но теперь элемент выглядит правильно. –

Смежные вопросы