16

titleにリンクの属性を表示しています:hover。title 属性は、… を介してリンクに追加され:afterます。</p>

:after今、ホバリングインとホバリングアウト時に疑似要素の不透明度をアニメーション化する方法を考えています。

html

<a class="link" href="#" title="something"></a>​

CSS

.link {
    display:block;
    width:50px;
    height:50px;
    background:red;
}

.link:after {
    position:relative; 
    content: attr(title); 
    top:55px; 
    color:$blue; 
    zoom: 1; 
    filter: alpha(opacity=00); 
    opacity: 0;
    -webkit-transition: opacity .15s ease-in-out;
    -moz-transition: opacity .15s ease-in-out;
    -ms-transition: opacity .15s ease-in-out;
    -o-transition: opacity .15s ease-in-out;
    transition: opacity .15s ease-in-out;
}

.link:hover:after { 
    zoom: 1; 
    filter: alpha(opacity=100); 
    opacity: 1;
}

デモをご覧ください: http://jsfiddle.net/d2KrC/

これが機能しない理由はありますか?</p>

4

2 に答える 2

10

WebKit (Chrome、Safari) は疑似要素の遷移をサポートしていません。

Firefox で動作するはずです。

編集: WebKit の問題は解決されました。このパッチはすでに Chrome Carnery に導入されているため、バージョン 26 以降でサポートされます。サファリは知りません。

于 2012-05-14T06:58:03.340 に答える
5

この Webkit バグには、疑似クラスでトランジションを機能させるかなり簡単な回避策があります。これについての素晴らしいブログ投稿があります: http://xiel.de/webkit-fix-css-transitions-on-pseudo-elements/

基本的に、webkit はトランジションを直接サポートしていませんが、変更したいトランジションとスタイルをその親要素に適用できます。次に、疑似クラスに、影響を与えたい同じスタイル プロパティを配置しますが、値を継承します。これにより、トランジションを含むすべての親要素の値が継承されます。

:after 要素を上下にアニメーション化するために行ったサンプルを次に示します。

a { 
    position: static; /* explicitly defined so not to forget that it can't be relative or :after transition hack will not work */
    top: 1px; /*doesnt move it because it is position static */
    -webkit-transition: top 200ms ease 0;
}
a:after {
    content: '';
    position: absolute;
    top: inherit;
}
a:hover {
    top: 3px;
}

*更新 このバグは Chrome Canary では修正されていますが (2 月現在)、Safari ではまだ壊れているようです。ここでステータスを確認し、最新情報を入手できます: https://code.google.com/p/chromium/issues/detail?id=54699

于 2012-12-16T20:51:52.680 に答える