使用jQuery对伪元素进行动画处理

Lui*_*uis 9 javascript css jquery

我正在使用a:after,它包含right: Ypx.

我想animate在jQuery中使用方法将元素(a:after)从Ypx移动到Zpx,我该怎么办呢?

例如:

[link-text][after]
[link-text]-- moving > --[after]
Run Code Online (Sandbox Code Playgroud)

我知道如何在没有动画的情况下做到这一点,只是做了a:hover:after { right: Zpx }但动画怎么做?

met*_*ion 8

你要做的是非常hacky,我强烈建议你把make元素放在一起,而不是尝试动画伪元素.但是,为了将来参考:动画伪元素的唯一方法是插入style标记并更改实际CSS中的值,例如......

var styles = document.getElementById("pseudo-mover")
var distance = 100;

var move = function(){
    styles.innerHTML = ".box:after {left: " + distance + "px}";
    distance++;
    if (distance < 200) 
        setTimeout(move, 30);    
}

move()
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/X7aTf/

这是vanilla js,但你可以使用stepjquery中的回调animate来挂钩到jquery的缓动和计时功能.

  • 为什么,动画伪元素有什么问题? (3认同)
  • @BillyMathews因为使用CSS过渡/动画制作动画元素非常简单,在伪元素上进行操作需要处理更多,并且需要非常少量的js.我能看到的唯一情况是合理的,当你绝对无法触摸标记时,否则会使你的伪元素成为一个真正的元素并使其具有动画效果. (2认同)