在不使用任何其他 jquery 插件的情况下,我希望不断地闪烁/更改 div 的边框颜色。所以它应该从白色开始,然后在 1 秒后变为橙色,然后重复。
问问题
7989 次
3 回答
11
CSS:
#my-div { border: 1px solid white; }
#my-div.orange-border { border: 1px solid #f93; }
html:
<div id="my-div"></div>
JavaScript:
var flashInterval = setInterval(function() {
$('#my-div').toggleClass('orange-border');
}, 1000);
停止闪烁:
window.clearInterval(flashInterval);
无闪光灯解决方案:
$('#my-div').css({ border: '1px solid white' });
setInterval(function() {
var isWhite = $('#my-div').css('border-color') == 'rgb(255, 255, 255)';
$('#my-div').css({ 'border-color' : isWhite ? '#f93' : '#fff' });
}, 1000);
rgb 比较看起来有点骇人听闻。有一个来回切换的标志可能会更整洁,也许是一个数据属性:
$('#my-div').css({ border: '1px solid white' }).data('white', true);
setInterval(function() {
var isWhite = $('#my-div').data('white');
$('#my-div').css({ 'border-color' : isWhite ? '#f93' : '#fff' }).data('white', !isWhite);
}, 100);
于 2012-06-20T13:30:15.180 回答
1
function makewhite() {
setTimeout(function() {
$('#problem').css('border-color','#ffffff');
makeOrange();
}, 1000);
}
function makeOrange() {
setTimeout(function() {
$('#problem').css('border-color','#F37543');
makewhite();
}, 1000);
}
makewhite();
到处找,找不到任何直接解决我的问题的方法,所以我构建了上面的方法。
我相信有一个更快的方法来写这个......
于 2012-06-20T13:30:10.513 回答
1
根据您的兼容性要求,您可以仅使用 css 执行此操作:
@-webkit-keyframes DIV-BORDER {
0% { border-color: orange }
50% { border-color: white }
100% { border-color: orange }
}
div {
border: 1px solid;
-webkit-transition: all 1s;
-webkit-animation: DIV-BORDER 2s infinite;
}
相应地添加供应商前缀。
编辑:在 webkit 浏览器中工作的示例小提琴。
于 2012-06-20T13:45:20.007 回答