【问题标题】:Transitions on pseudo-elements :after and :before not working伪元素上的转换 :after 和 :before 不起作用
【发布时间】:2015-01-04 02:20:28
【问题描述】:

我知道之前有人问过这个问题,但我有一个具体问题,我似乎无法与其他问题中回答的解决方案一起使用。

我有一个缩略图图像,并且在其顶部有一个 :after 播放图标,仅在悬停时显示它是一个视频,但不透明度转换仅适用于图像。

有人知道解决办法吗?

.play-icon:hover:after {
position:absolute;
cursor: pointer;
top:0; 
left:0;
content:'';
width: 100%;
height: 100%;
background: url("http://www.kiddyjunction.ca/support/images/ilightbox/light-skin/thumb-overlay-play.png");
background-repeat: no-repeat;
background-position: center center;
background-color: transparent;   
z-index: 9999;
}

这里是fiddle

【问题讨论】:

    标签: html css hover transition pseudo-element


    【解决方案1】:

    我假设 <img> 是您想要在此处设置动画的,因此向该元素添加过渡样式:

    :hover {
        text-decoration: none;
        -webkit-transition: all 0.2s ease-in-out;
           -moz-transition: all 0.2s ease-in-out;
            -ms-transition: all 0.2s ease-in-out;
             -o-transition: all 0.2s ease-in-out;
                transition: all 0.2s ease-in-out;
    }
    .play-icon:hover:after {
        position:absolute;
        cursor: pointer;
        top:0;
        left:0;
        content:'';
        width: 100%;
        height: 100%;
        background: url("http://www.kiddyjunction.ca/support/images/ilightbox/light-skin/thumb-overlay-play.png");
        background-repeat: no-repeat;
        background-position: center center;
        background-color: transparent;
        z-index: 9999;
    }
    .thumb-grid {
        display: block;
        width: 100%;
        padding: 0 0 0 0;
        margin: 5em 0 2.5em 0;
        list-style-type: none;
        background-color: transparent;
    }
    .thumb-grid:after {
        content:'';
        width: 0;
        display: block;
        clear: both;
    }
    .thumb-grid li {
        position: relative;
        cursor: pointer;
        overflow: hidden;
        width: 13%;
        margin: 0 8.75% 0 0;
        display: block;
        float: left;
        padding-bottom: 13%;
    }
    .thumb-grid li:nth-child(5n) {
        margin-right: 0;
    }
    .thumb-grid img {
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale");
        /* Firefox 3.5+ */
        filter: gray;
        /* IE6-9 */
        -webkit-filter: grayscale(100%);
        /* Chrome 19+ & Safari 6+ */
        -webkit-transition: all 0.2s ease-in-out;
           -moz-transition: all 0.2s ease-in-out;
            -ms-transition: all 0.2s ease-in-out;
             -o-transition: all 0.2s ease-in-out;
                transition: all 0.2s ease-in-out;
    }
    .thumb-grid li:hover img {
        opacity: 0.5;
    }
    <ul class="thumb-grid">
        <li id="gallery" class="play-icon">
            <img src="http://placehold.it/250x250" />
        </li>
        <li>
            <img src="http://placehold.it/250x250" />
        </li>
        <li>
            <img src="http://placehold.it/250x250" />
        </li>
        <li>
            <img src="http://placehold.it/250x250" />
        </li>
        <li>
            <img src="http://placehold.it/250x250" />
        </li>
    </ul>

    JSFiddle

    【讨论】:

    • 谢谢伙计!奇怪的是,我的所有悬停的 :hover 不适用于 :after 元素。
    • 过渡与伪元素配合得很好。但是您不是在为伪元素设置动画,而是在为 &lt;img&gt; 元素设置动画。很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 2021-11-03
    • 2015-09-12
    • 1970-01-01
    • 2018-09-23
    • 2020-09-20
    • 1970-01-01
    相关资源
    最近更新 更多