Introduction
In this article we are going to create a stunning circular text motion effect with jQuery. We will be using the jQuery to animate a circular text movement on our web page. The idea is to have a rounded text with the movement of the cursor in our web page.
Description
This article shows how to make a textual message circle around your mouse cursor that follows the mouse cursor around using this DHTML script.
Step 1 : First we have to create a web Application.
- Go to Visual Studio 2010.
- New--> And select the web Application.
- Give it's a name whatever you want.
- Click OK.
Step 2 : Secondly you have to add a new page to the website.
- Go to the Solution Explorer.
- Right-click on the Project name.
- Select add new item.
- Add new web page and give it a name.
- Click OK.
Step 4 : In this step we will see how to add style sheet code. Whenever we write the style sheet code you have to be careful that it is written inside the <style></style> code and you have to place it inside the head section.
Style Code
<style type="text/css">
#outerCircleText
{
font-style: italic;
font-weight: bold;
font-family: 'comic sans ms' , verdana, arial;
color: #68228B;
position: absolute;
top: 0;
left: 0;
z-index: 3000;
cursor: default;
}
#outerCircleText div
{
position: relative;
}
#outerCircleText div div
{
position: absolute;
top: 0;
left: 0;
text-align: center;
}
</style>
Step 5 : In this step we have to write the script reference to the aspx page; let us see from where you have to write the script code.
Step 6 : Let us see the script code which you have to add inside the<script></script> and will be placed either in the head section or body section as you prefer.
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
Step 7 : In this step we have to write the jQuery code which is given below.
<script type="text/javascript">
(function () {
var msg = "Wecome to Csharpcorner.com!";
var size = 24;
var circleY = 0.75; var circleX = 2;
var letter_spacing = 5;
var diameter = 10;
var rotation = 0.4;
var speed = 0.3;
if (!window.addEventListener && !window.attachEvent || !document.createElement) return;
msg = msg.split('');
var n = msg.length - 1, a = Math.round(size * diameter * 0.208333), currStep = 20,
ymouse = a * circleY + 20, xmouse = a * circleX + 20, y = [], x = [], Y = [], X = [],
o = document.createElement('div'), oi = document.createElement('div'),
b = document.compatMode && document.compatMode != "BackCompat" ? document.documentElement : document.body,
mouse = function (e) {
e = e || window.event;
ymouse = !isNaN(e.pageY) ? e.pageY : e.clientY; // y-position
xmouse = !isNaN(e.pageX) ? e.pageX : e.clientX; // x-position
},
makecircle = function () { // rotation/positioning
if (init.nopy) {
o.style.top = (b || document.body).scrollTop + 'px';
o.style.left = (b || document.body).scrollLeft + 'px';
};
currStep -= rotation;
for (var d, i = n; i > -1; --i) { // makes the circle
d = document.getElementById('iemsg' + i).style;
d.top = Math.round(y[i] + a * Math.sin((currStep + i) / letter_spacing) * circleY - 15) + 'px';
d.left = Math.round(x[i] + a * Math.cos((currStep + i) / letter_spacing) * circleX) + 'px';
};
},
drag = function () { // makes the resistance
y[0] = Y[0] += (ymouse - Y[0]) * speed;
x[0] = X[0] += (xmouse - 20 - X[0]) * speed;
for (var i = n; i > 0; --i) {
y[i] = Y[i] += (y[i - 1] - Y[i]) * speed;
x[i] = X[i] += (x[i - 1] - X[i]) * speed;
};
makecircle();
},
init = function () {
if (!isNaN(window.pageYOffset)) {
ymouse += window.pageYOffset;
xmouse += window.pageXOffset;
} else init.nopy = true;
for (var d, i = n; i > -1; --i) {
d = document.createElement('div'); d.id = 'iemsg' + i;
d.style.height = d.style.width = a + 'px';
d.appendChild(document.createTextNode(msg[i]));
oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0;
};
o.appendChild(oi); document.body.appendChild(o);
setInterval(drag, 25);
},
ascroll = function () {
ymouse += window.pageYOffset;
xmouse += window.pageXOffset;
window.removeEventListener('scroll', ascroll, false);
};
o.id = 'outerCircleText'; o.style.fontSize = size + 'px';
if (window.addEventListener) {
window.addEventListener('load', init, false);
document.addEventListener('mouseover', mouse, false);
document.addEventListener('mousemove', mouse, false);
if (/Apple/.test(navigator.vendor))
window.addEventListener('scroll', ascroll, false);
}
else if (window.attachEvent) {
window.attachEvent('onload', init);
document.attachEvent('onmousemove', mouse);
};
})();
</script>
Step 8 : In this step we will see the complete code of the Default2.aspx page which is given below.
Code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title> Simple jQuery text Animation</title>
<style type="text/css">
#outerCircleText
{
font-style: italic;
font-weight: bold;
font-family: 'comic sans ms' , verdana, arial;
color: #68228B;
position: absolute;
top: 0;
left: 0;
z-index: 3000;
cursor: default;
}
#outerCircleText div
{
position: relative;
}
#outerCircleText div div
{
position: absolute;
top: 0;
left: 0;
text-align: center;
}
</style>
<script type="text/javascript" src="Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript">
(function () {
var msg = "Wecome to Csharpcorner.com!";
var size = 24;
var circleY = 0.75; var circleX = 2;
var letter_spacing = 5;
var diameter = 10;
var rotation = 0.4;
var speed = 0.3;
if (!window.addEventListener && !window.attachEvent || !document.createElement) return;
msg = msg.split('');
var n = msg.length - 1, a = Math.round(size * diameter * 0.208333), currStep = 20,
ymouse = a * circleY + 20, xmouse = a * circleX + 20, y = [], x = [], Y = [], X = [],
o = document.createElement('div'), oi = document.createElement('div'),
b = document.compatMode && document.compatMode != "BackCompat" ? document.documentElement : document.body,
mouse = function (e) {
e = e || window.event;
ymouse = !isNaN(e.pageY) ? e.pageY : e.clientY; // y-position
xmouse = !isNaN(e.pageX) ? e.pageX : e.clientX; // x-position
},
makecircle = function () { // rotation/positioning
if (init.nopy) {
o.style.top = (b || document.body).scrollTop + 'px';
o.style.left = (b || document.body).scrollLeft + 'px';
};
currStep -= rotation;
for (var d, i = n; i > -1; --i) { // makes the circle
d = document.getElementById('iemsg' + i).style;
d.top = Math.round(y[i] + a * Math.sin((currStep + i) / letter_spacing) * circleY - 15) + 'px';
d.left = Math.round(x[i] + a * Math.cos((currStep + i) / letter_spacing) * circleX) + 'px';
};
},
drag = function () { // makes the resistance
y[0] = Y[0] += (ymouse - Y[0]) * speed;
x[0] = X[0] += (xmouse - 20 - X[0]) * speed;
for (var i = n; i > 0; --i) {
y[i] = Y[i] += (y[i - 1] - Y[i]) * speed;
x[i] = X[i] += (x[i - 1] - X[i]) * speed;
};
makecircle();
},
init = function () {
if (!isNaN(window.pageYOffset)) {
ymouse += window.pageYOffset;
xmouse += window.pageXOffset;
} else init.nopy = true;
for (var d, i = n; i > -1; --i) {
d = document.createElement('div'); d.id = 'iemsg' + i;
d.style.height = d.style.width = a + 'px';
d.appendChild(document.createTextNode(msg[i]));
oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0;
};
o.appendChild(oi); document.body.appendChild(o);
setInterval(drag, 25);
},
ascroll = function () {
ymouse += window.pageYOffset;
xmouse += window.pageXOffset;
window.removeEventListener('scroll', ascroll, false);
};
o.id = 'outerCircleText'; o.style.fontSize = size + 'px';
if (window.addEventListener) {
window.addEventListener('load', init, false);
document.addEventListener('mouseover', mouse, false);
document.addEventListener('mousemove', mouse, false);
if (/Apple/.test(navigator.vendor))
window.addEventListener('scroll', ascroll, false);
}
else if (window.attachEvent) {
window.attachEvent('onload', init);
document.attachEvent('onmousemove', mouse);
};
})();
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Step 9 : In this step we are going to run the Default2.aspx page by pressing F5.
Now your text is moving along your cursor and in the end the text is moving in the circle form when you stop the cursor movement.
Resources