質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.87%

IE10,11で擬似クラスが反映されないのですが、どうすればよろしいでしょうか。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 5,469

KyutoYosihama

score 28

CSSだけで動くキラっと光るアイコンを作ったのですが
下記コードがIE環境下だと上手く動きません。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style media="screen">
/* --- Newアイコン 20170429--- */
span.newIcon-a{
display: block;
font-size: 14px;
height: 19px;
width: 56px;
padding: 2px 3px;
margin-left: 20px;
display: block;
position: relative;
z-index: 2;
overflow: hidden;
border-radius: 5px;
background-color: #FEBC01;
color: #ffffff;
text-align: center;
text-decoration: none;
cursor: default;
transition: .25s linear;
-webkit-transition: .25s linear;
-moz-transition: .25s linear;
}
span.newIcon-a::before {
display: block;
position: absolute;
z-index: -1;
left: -30%;
top: -50%;
content: " ";
width: 30px;
height: 100px;
transform: rotate(30deg);
-webkit-transform: rotate(30deg);
-moz-transform: rotate(30deg);
background-image: linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%,rgba(255,255,255,0) 100%);
background-image: -webkit-gradient(linear, left bottom, right bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(50%,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));
background-image: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, #ffffff rgba(255,255,255,1),rgba(255,255,255,0) 100%);
animation: shiny 3s infinite linear;
-webkit-animation: shiny 3s infinite linear;
-moz-animation: shiny 3s infinite linear;
}
@media all and (-ms-high-contrast:none){
span.newIcon-a::before {
display: block;
position: absolute;
z-index: -1;
left: -30%;
top: -50%;
content: " ";
width: 30px;
height: 100px;
transform: rotate(30deg);
background-image: linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%,rgba(255,255,255,0) 100%);
animation: shiny 3s infinite linear;
}
}

span.newIcon-s{
display: block;
font-size: 14px;
height: auto;
width: 54px;
padding: 4px 3px 3px;
margin-left: 20px;
display: block;
position: relative;
z-index: 2;
overflow: hidden;
border-radius: 5px;
background-color: #FEBC01;
color: #ffffff;
text-align: center;
text-decoration: none;
cursor: default;
transition: .25s linear;
-webkit-transition: .25s linear;
-moz-transition: .25s linear;
}
span.newIcon-s::before {
display: block;
position: absolute;
z-index: -1;
left: -30%;
top: -50%;
content: " ";
width: 30px;
height: 100px;
transform: rotate(30deg);
-webkit-transform: rotate(30deg);
-moz-transform: rotate(30deg);
background-image: linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%,rgba(255,255,255,0) 100%);
background-image: -webkit-gradient(linear, left bottom, right bottom, color-stop(0%,rgba(255,255,255,0)), color-stop(50%,rgba(255,255,255,1)),color-stop(100%,rgba(255,255,255,0)));
background-image: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, #ffffff rgba(255,255,255,1),rgba(255,255,255,0) 100%);
animation: shiny 3s infinite linear;
-webkit-animation: shiny 3s infinite linear;
-moz-animation: shiny 3s infinite linear;
}
@media all and (-ms-high-contrast:none){
span.newIcon-s::before {
display: block;
position: absolute;
z-index: -1;
left: -30%;
top: -50%;
content: " ";
width: 30px;
height: 100px;
transform: rotate(30deg);
background-image: linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%,rgba(255,255,255,0) 100%);
animation: shiny 3s infinite linear;
}
}
@keyframes shiny {
0% {
  left: -30%;
}
20% {
  left: 120%;
}
100% {
  left: 120%;
}
}
@-webkit-keyframes shiny {
0% {
  left: -30%;
}
20% {
  left: 120%;
}
100% {
  left: 120%;
}
}
@-moz-keyframes shiny {
0% {
  left: -30%;
}
20% {
  left: 120%;
}
100% {
  left: 120%;
}
}


/* --- Newアイコン 20170429--- */
</style>
</head>

<body>
  <span class="newIcon-a">NEW!</span>
  <br>
  <span class="newIcon-s">NEW!</span>
</body>

</html>


chrome,
Firefox,
Safari
では動きました。

DOCKTYPE宣言したり、
ベンダープレフィクスつけたり、
したのですが、上手くいきません。

どうしたら良いでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

background-image: にIE用のベンダープレフィックスを付けるとうまくいきました。
background-image: -ms-linear-gradient(...);
IE11で確認。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/02 14:21

    試してみたらできました!
    ありがとうございます!
    ただ、デベロッパー画面でみると、各項目に横線が入って、効いていない状態のままなんですよね。
    なんでだろう...

    キャンセル

  • 2017/05/02 14:28

    今回の件は試していませんが、F12 開発者ツールを開いた状態だと(エミュレーションが正しくても)意図しない結果になることがよくありました。IEを開きなおすと正常に戻ります。バグなんでしょうかねぇ?

    キャンセル

  • 2017/05/02 15:46

    私の方では開きなおしても消えなかったです。
    バグかもしれないです(^^;

    キャンセル

+1

ベンダープレフィックスの書順が、無し 有り のようになっていますが、CSSは後から出るものを優先するので 有り 無し が良いと思います。(表示に特に問題が出ることは少ないと思いますが)

animation を全部ばらして指定してみるとかどうでしょう。

span.newIcon-s::before {
    animation-name: shiny;
    animation-duration: 3s;
    animation-timing-function: linear;
    animation-delay: 0;
    animation-iteration-count: infinite;
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/02 16:00

    バラして指定してみたんですけどダメでした。
    自分が無知で申し訳ないのですが、
    ベンダープレフィクスの書き順の有り無しってどういうことなのでしょうか?

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



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

    というふうに書くということでしょうか?

    キャンセル

  • 2017/05/02 16:04

    > というふうに書くということでしょうか?
    そうです。

    キャンセル

  • 2017/05/02 16:28

    なるほど!
    ただ書き順を変えてもダメでした。
    やはりbackground-image: にIE用のベンダープレフィックスを付ける方法しかなさそうです。
    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.87%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる