web-dev-qa-db-ja.com

IEは、疑似要素CSSを消しますか?

私は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>

何が起こるかのスクリーンショット:

63
Kairowa

これは既知の問題ですが、実際にはスタイルが適用されています。開発者ツールは、疑似要素のスタイルが、対応するスタイルの親要素によってオーバーライドされていると考えています。これは、親要素のComputedスタイルを調べ、競合するスタイル(F12ツールが信じているもの)を調べることで簡単に実証できます。

enter image description here

ただし、開発者ツールが何を信じているか、または示唆しているに関係なく、これらのスタイルは実際には正しい要素に適用されています。 これを確認できます 親要素と2つの擬似要素を実行し、計算された高さを記録することで:

(function () {

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

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

}());

このバグを追跡する内部問題がすでにあるかどうかを確認し、この質問を追加します。一般的に言えば、私たちはこのような問題に、現実の世界で問題が引き起こしている悲嘆の量に比例する注意の量を与えようとします。そのため、チケットに新しい追加として質問があると、修正を進めることができます:)

51
Sampson

私はこれとまったく同じ問題を抱えていました! :beforeおよび:after疑似要素にdisplayプロパティを指定する必要があります。

以下を:beforeおよび:afterに追加します。

display: block; 

これで問題が解決するはずです。 :)

36
Freddie

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";
1
Christian

上記の答えに追加します。 display:blockを試しましたが、問題は背景画像がゆがんでいることでした。代わりに私は以下を使用しました:

display: inline-block;

これにより、:before:after内の歪んだ画像に関する問題が修正されました

1
Edmund Park

このリンク「 http://stackoverflow.com/questions/2587669/can-i-use-the-after-pseudo-element-on-an-input-field 」をご覧ください。このリンク

:afterおよび:beforeは、Internet Explorer 7以下ではどの要素でもサポートされていません。

また、フォーム要素(入力)や画像要素などの置換された要素で使用することも意図していません。

つまり、純粋なCSSでは不可能です。

/ * *トリックは次のとおりです。*このセレクターは、「入力テキスト(+)の後の最初のdom要素を取得し、そのbeforeコンテンツを*値(:before)に設定します。* /

input#myTextField + *:before {
       content: "????";
    } 
0
pjain