2015-01-10 9 views
38

Ich habe versucht, ein paar Pseudo-Elemente zu IE zu arbeiten, aber es lässt mich einfach nicht.IE streichen Pseudo-Element CSS?

Es durchstreicht die CSS und verhält sich als wäre es nicht da, was mich irgendwie aggregiert.

Würde jemand wissen, was ich falsch mache?

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

Screenshot von dem, was passiert:

+6

Umwerfend, streicht es nicht die '-Webkit-' Bits. – BoltClock

+4

Pfff, erzähl mir davon. Es wagt mich absichtlich, ich wette. Dummes IE. – Kairowa

+1

Wie auch immer, in welcher Version von IE testen Sie und was sagt Ihnen der Dokumentmodus/Browsermodus? Ich habe nie wirklich verstanden, warum IE sich so verhält, aber hoffentlich werden diese Dinge einige Hinweise geben. – BoltClock

Antwort

30

Dies ist ein bekanntes Problem, aber die Stile sind in der Tat angewendet werden. Die Entwickler-Tools denken, dass die Pseudo-Element-Stile von den entsprechenden Stilen der Eltern-Elemente überschrieben werden. Dies ist leicht nachgewiesen durch Prüfen der Computed Stil des Eltern-Element und betrachten (was die F12-Tools glauben zu sein) konkurrierende Arten:

enter image description here

Wiederum jedoch sind diese Arten in der Tat zu sein auf die richtigen Elemente angewendet - unabhängig davon, was die Entwickler-Tools glauben oder vorschlagen. You can confirm this durch über die Eltern-Element ausgeführt wird und die beide Pseudo-Elemente und ihre berechnete Höhe Anmeldung:

(function() { 

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

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

}()); 

Ich werde überprüfen, um zu sehen, ob wir bereits eine interne Ausgabe dieses Bug-Tracking haben, und fügen Sie diese Frage . Im Allgemeinen versuchen wir, solchen Dingen die Aufmerksamkeit zu geben, die proportional zum Ausmaß der Trauer ist, die das Problem in der realen Welt verursacht. Wenn Sie also Ihre Frage als neue Ergänzung auf dem Ticket haben, können Sie uns helfen, eine Lösung weiter zu leiten.

+7

Ich sehe das gleiche Problem in IE11, aber Pseudoelementstile werden nicht angewendet. Auch wenn die angenommenen Parental-Overrides im Bedienfeld "Berechnet" deaktiviert werden, werden Pseudoelementstile nicht angewendet. Der einzige Teil des gesamten gerenderten Blocks ist die Inhaltsregel, alles andere wird ignoriert. – gps03

+0

In den Berechneten konnte ich auf eine Eigenschaft klicken und feststellen, dass es überschrieben wurde. Ich überging den Hintergrund für einen Th und die Caret-Symbole wurden nicht zum Sortieren angezeigt (Datatables). Vielen Dank! – Exzile

+0

Alle ':: after'-Pseudostile in meinem Code sind in IE11 und Edge durchgestrichen. Alle Regeln werden tatsächlich angewendet :-) Alle außer einem: 'cursor: pointer'. Es ist für ein mobiles Hamburger-Menü, so dass ich den Zeiger loslassen kann (da ich nicht viel erwarte, dass er auf dieser Bildschirmgröße schwebt). –

14

Ich hatte genau dieses gleiche Problem! Sie müssen Ihren :before und :after Pseudoelementen eine display Eigenschaft geben.

Fügen Sie zu den :before und :after Folgendes hinzu.

display: block; 

Dies sollte Ihr Problem beheben. :)

+1

funktioniert nicht für mich :( – Hazlo8

+0

teilen, was Eigenschaften, die Sie derzeit festgelegt haben. Ich werde vermuten, dass Sie entweder die Inhaltseigenschaft nicht festgelegt haben oder Sie versuchen, ein Pseudoelement auf Elemente festlegen, die keine Pseudos ermöglichen – Freddie

+0

Dies behoben Die Eigenschaften sind immer noch in Dev Tools durchgestrichen, aber das Element erscheint jetzt richtig –