首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery等效于css选择器进度::-webkit-过程-值

jQuery等效于css选择器进度::-webkit-过程-值
EN

Stack Overflow用户
提问于 2013-04-17 07:39:11
回答 2查看 1.4K关注 0票数 2

我需要调整带有JS ( HTML5 <progress>-Bar,jQuery )的<progress>-Bar的转换时间,但是在jQuery中找不到正确的选择器。

我目前的尝试是:

CSS

代码语言:javascript
复制
progress::-webkit-progress-value {
    -webkit-transition: all 0.5s;
    -moz-transition: all 0.5s;
    -o-transition: all 0.5s;
    -ms-transition: all 0.5s;
    transition: all 0.5s; /* Works like a charm */
}

JavaScript (没有成功):

代码语言:javascript
复制
// These lines do nothing when the progress value changes:
$(".progressSelectorClass[progress-value]").css({"-webkit-transition" : "all 6s"}); 
$(".progressSelectorClass > *").css({"-webkit-transition" : "all 6s"}); 
$(".progressSelectorClass").css({"-webkit-transition" : "all 6s"});

// This gets an error:
$(".progressSelectorClass::-webkit-progress-value").css({"-webkit-transition" : "all 6s"});

是否有机会在progress::-webkit-progress-value中选择JavaScript (有或没有jQuery)?

在这个jsFiddle中,您将更清楚地看到我试图做什么:http://jsfiddle.net/rD5Mc/1/

更新:

通过向data-animation-time __-元素添加/更改一个<progress>参数,并创建了以下几个css-类,我得到了一个丑陋的解决方案:

代码语言:javascript
复制
progress[data-animation-time="5"]::-webkit-progress-value { -webkit-transition: all 5s; }
progress[data-animation-time="10"]::-webkit-progress-value {    -webkit-transition: all 10s;    }
progress[data-animation-time="15"]::-webkit-progress-value {    -webkit-transition: all 15s;    }
progress[data-animation-time="20"]::-webkit-progress-value {    -webkit-transition: all 20s;    }
progress[data-animation-time="25"]::-webkit-progress-value {    -webkit-transition: all 25s;    }
...

这很管用,但我对我的解决方案很不满意。一定有更好的方法..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-19 23:32:28

您可以使用javascript修改css规则!

代码语言:javascript
复制
var rule;

$(".animationtimeFirst").change(function() {
    time = $(this).val();


    // Write out out full CSS selector + declaration
    s = '.progressselector::-webkit-progress-value { -webkit-transition: all ' + time + 's; }';

    // Check the rules
    // If there's no rules,
    if ((!rule && rule !== 0) || !document.styleSheets[0].cssRules.length) {
        // Make one! -- Insert our CSS string into the page stylesheet
        rule = document.styleSheets[0].insertRule(s, 0);
        // I think this code is different in IE, beware!
        console.log('Our rule is #' + rule);
    } else {
    // If we already have a rule we can change the style we've implement for the psuedo class
    document.styleSheets[0].rules[rule].style.webkitTransitionDuration = time.toString() + 's';
    }
});

这里有一个更新的小提琴:http://jsfiddle.net/trolleymusic/MHYY8/3/ --希望它能有所帮助:)

票数 3
EN

Stack Overflow用户

发布于 2013-04-24 21:51:22

progress::-webkit-progress-value不是DOM元素(不过它是Shadow的一部分)。因此,您不能使用jQuery或任何DOM方法来访问它。

这一切都取决于你这样的解决办法。

编辑:

事实证明,在最近版本的Chrome中,您实际上可以使用webkitShadowRoot属性访问Shadow。不幸的是,它不适用于<progress />元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16054255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档