我想知道是否有人可以帮助我在两秒后将 div 的颜色从黑色更改为白色,然后在两秒后从白色更改为黑色,然后再返回等等,只要 div 存在。换句话说,div 仅在用户单击并拖动表面时显示(就像桌面选择区域一样),我的目标是在用户仍在进行选择时更改边框的颜色,如上所述就像调整 div 的大小一样。
问问题
24670 次
4 回答
14
如果您的浏览器要求允许您使用 css3,那么您根本不需要任何 javascript。
HTML:
<div class="blinkdiv">
</div>
CSS:
@-webkit-keyframes blackWhite {
0% { background-color: white; }
50% { background-color: white; }
51% { background-color: black; }
100% { background-color: black; }
}
.blinkdiv {
height: 100px;
background-color: black;
-webkit-animation-name: blackWhite;
-webkit-animation-iteration-count: infinite;
-webkit-animation-duration: 2s;
}
这是一个例子:http: //jsfiddle.net/tommcquarrie/w3Qy9/1/
于 2013-09-03T01:04:57.773 回答
4
这将在每 2 秒后将背景颜色从黑色转换为白色,然后重复..
body {
-webkit-animation:name 2s infinite;
}
@-webkit-keyframes name {
0% {background-color:black;}
100% {background-color:white;}
}
jsFiddle 演示.. 尚未在许多浏览器中对其进行测试 .. 适用于 Chrome。
于 2013-09-03T00:59:25.257 回答
0
有几种方法可以做到这一点。您可以使用setTimeout始终生成另一个 setTimeout(直到div
消失),或者您可以使用setInterval并切换颜色(如果应该删除元素,则使用clearInterval停止转换)。我觉得后一种方法更简单一些,所以我将使用它:
var toggleIntervalId = setInterval( function() {
var $div = $('#toggleMe');
if( $div.length ) {
$div.attr( 'background-color', $div.attr('background-color')=='black'
? 'white' : 'black' );
} else {
clearInterval( toggleIntervalId );
}, 2000 );
于 2013-09-03T01:01:12.063 回答
0
根据您对 CSS3 的要求和使用(或缺少 CSS3),您可能希望使用 Javascript/jQuery 执行此操作,特别是使用 jQuery,您可能希望查看jQueryUI。
我建议你看看这个 StackOverflow 问题。
但是,至于一些即时的满足感,这里有一个从上述问题修改的跨浏览器小提琴可能就足够了,或者至少给你一个很好的起点(没必要,我仍然建议你进一步研究一下并查看链接也提供...)
小提琴的代码:
查询:
function changeColor(element, curNumber){
curNumber++;
if(curNumber > 2){
curNumber = 1;
}
console.log(curNumber);
element.addClass('color' + curNumber, 500);
element.attr('class', 'color' + curNumber);
setTimeout(function(){changeColor(element, curNumber)}, 1000);
}
changeColor($('#testElement'), 0);
CSS:
.color1{
background: white;
color: black;
}
.color2{
background: black;
color: white;
}
HTML:
<div id="testElement">This will change colors</div>
于 2013-09-03T01:05:43.877 回答