jquery - 使用 "transform: rotate"动画不能跨浏览器

标签 jquery css

我正在制作一个动画,以便在滚动时旋转元素,只需让它在 webkit 中工作,但不能在其他浏览器中工作:

jQuery

var $cog = $('#cog'),
    $body = $(document.body),
    bodyHeight = $body.height();

$(window).scroll(function () {
    $cog.css({
        // this work
        'transform': 'rotate(' + ($body.scrollTop() / bodyHeight * 360) + 'deg)',

        // this not work
        '-moz-transform': 'rotate(' + ($body.scrollTop() / bodyHeight * 360) + 'deg)',
        '-ms-transform': 'rotate(' + ($body.scrollTop() / bodyHeight * 360) + 'deg)',
        '-o-transform': 'rotate(' + ($body.scrollTop() / bodyHeight * 360) + 'deg)'
    });
});

JSFIDDLE

最佳答案

问题不在于转换。如果您尝试记录scrollTop值,您将看到firefox总是返回0,那是因为ff将滚动附加到html,而不是正文。 这是一个跨浏览器解决方案:

http://jsfiddle.net/jonigiuro/kDSqB/9/

var $cog = $('#cog'),
    $body = $('body'),
    bodyHeight = $body.height();

function getScrollTop(){
    if(typeof pageYOffset!= 'undefined'){
        //most browsers except IE before #9
        return pageYOffset;
    }
    else{
        var B= document.body; //IE 'quirks'
        var D= document.documentElement; //IE with doctype
        D= (D.clientHeight)? D: B;
        return D.scrollTop;
    }
}

$(window).scroll(function () {
    var scroll = getScrollTop();
    $cog.css({
        'transform': 'rotate(' + (scroll / bodyHeight * 360) + 'deg)',
        '-webkit-transform': 'rotate(' + (scroll / bodyHeight * 360) + 'deg)',
        '-moz-transform': 'rotate(' + (scroll / bodyHeight * 360) + 'deg)',
        '-ms-transform': 'rotate(' + (scroll / bodyHeight * 360) + 'deg)',
        '-o-transform:rotate': 'rotate(' + (scroll / bodyHeight * 360) + 'deg)'
    });
});

关于jquery - 使用 "transform: rotate"动画不能跨浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593969/

相关文章:

jquery - 单击它时像按钮一样动画

html - 输入标签在小型设备中不显示文本框的值

jquery - 悬停在图像上时显示共享图标

javascript - 平板电脑显示先前从输入字段输入的值,即使已将自动完成和自动更正设置为 'off'

javascript - 使用 jQuery 在具有多个类的 div 的内容中搜索嵌套在元素中的字符串

javascript - Angular 6-在同一组件的变量更改时动态更改 *ngFor 元素的 css 属性

html - Bootstrap 3 网格系统偏移

html - 在正确的位置减少 CSS 注释

c# - 单击按钮激活/停用 javascript

javascript - 禁用按钮仍然监听点击事件