我想知道如何使用 javascript/css 在对象的边缘周围构建“类似蛇”的效果。
这种效果将围绕一个对象创建一个不断进行的动画,看起来像一个在对象边缘移动的微小的白色蛞蝓(看起来像一个发光体)
(一旦我学会了正确的措辞,将编辑这个问题)
我想知道如何使用 javascript/css 在对象的边缘周围构建“类似蛇”的效果。
这种效果将围绕一个对象创建一个不断进行的动画,看起来像一个在对象边缘移动的微小的白色蛞蝓(看起来像一个发光体)
(一旦我学会了正确的措辞,将编辑这个问题)
我有一个小的 CSS3 版本:
一个小容器和一条我们的蛇:
<div id="cont"></div>
<div class="snake"></div>
这是 CSS 魔术:
#cont {
width: 150px;
height: 150px;
background: #000;
margin: 10px;
}
.snake {
width: 5px;
height: 5px;
background: #f00;
position: absolute;
top: 5px;
left: 15px;
animation: around 5s infinite;
}
@keyframes around
{
0% { left: 15px; top: 5px; }
25% { left: 165px; top: 5px; }
50% { top: 160px; left: 165px; }
75% { left: 15px; top: 160px; }
100% { top: 5px; left: 15px; }
}
可能这可能会有所帮助
下面的代码在指定的边界内移动一个点。请看:通过调整同一个点的宽度和高度,你可能有一个像蛇一样的生物看看小提琴
<html>
<head>
<style>
#midDiv{
float:left;
width: 100px;
height: 100px;
background:rgb(0,0,0);
}
#topDiv,#bottomDiv{
float:left;
width: 110px;
height:5px;
background: red;
position:relative;
}
#leftDiv, #rightDiv{
width:5px;
float:left;
height: 100px;
background: blue;
position:relative;
}
#bodyWrapper{
width: 120px;
height: 120px;
}
#centerDiv{
float:left;
}
.animateObject{
z-index:2;
background: white;
}
</style>
<script src="http://code.jquery.com/jquery-1.10.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#topDiv").on("animcomplete", function(){
$(".animateObject").remove();
var div = document.createElement("div");
$(div).width(5).height(5);
div.className = "animateObject";
$("#rightDiv").append(div);
$(div).css({position: "absolute"});
$(div).animate({
top: 100
},
2000, function(){
$("#rightDiv").trigger({type: "animcomplete", time: new Date() });
});
});
$("#rightDiv").on("animcomplete", function(){
$(".animateObject").remove();
var div = document.createElement("div");
$(div).width(5).height(5);
div.className = "animateObject";
$("#bottomDiv").append(div);
$(div).css({position: "absolute", right: 0});
$(div).animate({
right: 100
},
2000, function(){
$("#bottomDiv").trigger({type: "animcomplete", time: new Date() });
});
});
$("#bottomDiv").on("animcomplete", function(){
$(".animateObject").remove();
var div = document.createElement("div");
$(div).width(5).height(5);
div.className = "animateObject";
$("#leftDiv").append(div);
$(div).css({position: "absolute", bottom: -5});
$(div).animate({
bottom: 100
},
2000, function(){
$("#leftDiv").trigger({type: "animcomplete", time: new Date() });
});
});
$("#leftDiv").on("animcomplete", function(){
$(".animateObject").remove();
var div = document.createElement("div");
$(div).width(5).height(5);
div.className = "animateObject";
$("#topDiv").append(div);
$(div).css({position: "absolute", left: 0});
$(div).animate({
left: 105
},
2000, function(){
$("#topDiv").trigger({type: "animcomplete", time: new Date() });
});
});
$("#topDiv").trigger({type: "animcomplete", time: new Date() });
});
</script>
</head>
<body>
<div id="bodyWrapper">
<div id="topDiv"></div>
<div id="centerDiv">
<div id="leftDiv"></div>
<div id="midDiv"></div>
<div id="rightDiv"></div>
</div>
<div id="bottomDiv"></div>
</div>
</body>
这会在指定的边界内移动一个点。请看:通过调整同一个点的宽度和高度,你可能有一个像蛇一样的生物
这是对@Starx 答案的改进。我已经使#snake
维度独立,并给它一个带有盒子阴影的发光效果。演示
<div id="cont">
<div class="snake"></div>
</div>
#cont {
/* some dimensions */
position: relative;
}
.snake {
position: absolute;
z-index: -1;
width: 0px;
height: 0px;
background: #f00;
border-radius: 5px;
box-shadow: 0px 0px 15px 15px red;
animation: around 4s linear infinite,
glow .7s alternate-reverse ease-in-out infinite;
}
@keyframes around {
0% { left: 0; top: 0; }
25% { left: 100%; top:0; }
50% { left: 100%; top: 100%; }
75% { left: 0; top: 100%; }
100% { left: 0; top: 0; }
}
@keyframes glow {
0% { opacity: .2; }
100% { opacity: 1; }
}
多条蛇:-)
在 javascript/css3 动画快速谷歌之后干草。
看看这个演示
上一个关于stackoverflow的问题涉及边框发光效果。
https://stackoverflow.com/questions/15008931/animated-glowing-border-using-css-js 链接
您还可以使用 javascript 动画库,例如 createjs 。 http://www.createjs.com/#!/TweenJS
创建四个图像,它们应该正好比项目大一点,所以当你看它时,项目是具有“蛇形”边框的背景上的前景。
创建一个具有固定颜色的。并使其在边界周围“蜿蜒”。确保它比物品本身大一点。
下一个图像应该是不同的颜色,即更亮,以创建发光效果。
下一张图片应该是第一张图片中使用的颜色,但完全相反。第一个图像中的所有波峰都必须是波谷(为了使它变成蛇形)。
第四张图片与第三张相同,但颜色较浅。
现在,使用 JQuery,使用“动画”,并更改项目的背景并按顺序在这四个图像之间循环。这会产生某种“发光和爬行”效果。
您可以将其扩展到四个图像之外,添加更多图像以进一步提高效果。