Posts Tagged ‘simple’

jQuery Tag Cloud Plugin

May 27th, 2010

See Online Demo

This plugin will create a animated tag cloud out of the list of tags for your blog/site. It is based upon the jQuery framework. Although there are many tag cloud available in jQuery Plugin arsenal, I really felt the need to create this one. The plugin include font animation as well as tag animation in three ways (horizontal, vertical and random). The animation will stop when user mouse over on the tag cloud, restarts after sometime after mouse out. Very easy to implement and customize. You just need to write a simple line apply it on the <div> or <ul> containing list of tags.

See online demo | Download Tag Cloud Plugin

jQuery Tag Cloud Plugin

ScreenShot jQuery Tag Cloud Plugin

Usage

Step 1: Style tags container. The tags container can be div, ul or anything else. But you need to define these style properties for the tags container before using the plugin – Position, Width and Height. You can style <a> of the tags as you wish.

Step 2: Include latest jquery.js and jquery.tagcloud.min.js in <head> section of the page like following,

<script type=”text/javascript” src=”jquery.js”></script>
<script type=”text/javascript” src=”jquery.tagcloud.min.js”></script>

Step 3: Apply the tag cloud plugin on the tags container. like following

<script type=”text/javascript”>
$(function(){
$(“#tag-cloud”).tagCloud();
});
</script>

Instead of #tag-cloud, just give #<id of the tags container>

Customize

Direction: You can choose the direction of the tags movement. There are 3 options – “vertical” (see Example3), “horizontal” (see Example2) and “random” (see Example1). The default option is “random”. You can set it as following,

$(“#tag-cloud”).tagCloud({“direction”:”horizontal”});

See Example2 and Example3.

Easein: You can use various kinds of easing effects provided by the jquery easing plugin. The list of easing effects can be found at http://gsgd.co.uk/sandbox/jquery/easing/ . Please Note if you want to use this option, then first include the easing plugin before applying the plugin. See Example2 and Example3. You can set this option like,

<script type=”text/javascript” src=”http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js”></script>
<script type=”text/javascript”>
$(function(){
$(“#tag-cloud1″).tagCloud({ “easein”:”easeOutBounce”});
});
</script>

Speed: You can set the speed of the tags animation in the plugin. You simply need to set the speed option parameter. It only accept numeric value like 2000 (2 seconds). Keep it more than 2000 for smooth animation. It can be set as,

$(“#tag-cloud”).tagCloud({“speed”:2000});

Combination: You can set all the options at once like

$(“#tag-cloud”).tagCloud({“direction”:”vertical”, “easein”:”easeOutBack”, “speed”:2000});

See online demo | Download Tag Cloud Plugin

As you see its pretty straight to apply it and its effects are amazing. You can have as many tag cloud on your blog/site as you wish. I tried to keep it very simple, but if you still have some doubts/difficulties in implementing it or need help, feel free to post your comments. If anyone want to extend this plugin here is its uncompressed version . Hope it will help in making your blog/site more dazzling !!!

Build Calendar with PHP

May 5th, 2010

CLICK HERE TO SEE ONLINE DEMO

For my last project I required to use calendar in PHP. I searched of it online and there were lots of them. But all of them were complicated, packed with lots of features (appointments etc.) and lacks examples. There were calendar classes but of no use. So, instead of searching, I decided to create code for calendar myself in PHP. Working on logic I used for creating calendar, I didn’t find it hard to build it. On the other hand, it was way too easy to create it than it actually looks like. No doubts, I was very much helped by many date and time pre built functions provided by PHP. Hence I am providing you with the code that creates and displays calendar. The outcome of the code is below (Apologies for my poor styling skills),

Screenshot for php calendar

Screenshot for php calendar

 

The table head section shows the current month and year along with 2 links (Previous & Next Month) for navigating to different months. Below that there are columns for various days in week. The table body section consists of 6 rows and 7 columns. The reason behind 7 columns is easy, for 7 days in a week. The logic behind 6 rows lies in the fact that even if the 1 of the month (with 31 days) starts from the last day of week, the last day won’t go beyond 2 column of 6th row. I used some CSS classes like “.holiday” for Sundays “.day” for normal days of month and no class for blank <td>.

The logic starts with two loops with outer loop running 6 times (for weeks) and inner 7 times (for week days). In first loop we will put <td>&nbsp;</td> till it encounter the 1 day of the month (variable – $skip). Both the loop will run fine till the days in that month (variable – $daysInMonth). If it’s Sunday then we will add “.holiday ” class in <td> otherwise “. day ” class along with date. The next and previous month links is formed with adding year + month as string (e.g. 201005 for May, 2010) and pass it as parameter to the page itself. The rest of the code is self-explanatory. Below is the PHP code for the calendar ( or DOWNLOAD CODE)

<?php

// if ym is set, i.e. somebody clicked on next or previous months link
if(isset($_GET["ym"]))
{
$year = (int)substr($_GET["ym"], 0, 4);
$month = (int)substr($_GET["ym"], 4, 2);
}
else    // otherwise take current month & year
{
$month = date(“m”, mktime(0,0,0,date(‘m’),1,date(‘Y’)));
$year = date(“Y”, mktime(0,0,0,date(‘m’),1,date(‘Y’)));
}

$skip = date(“w”, mktime(0,0,0,$month,1,$year)); // days to skip in 1 row of week.
$daysInMonth = date(“t”, mktime(0,0,0,$month,1,$year));    // total number of dates in the month.
$calendar_head = ”;    // for calendar head
$calendar_body = ”;    // for calendar boday
$day = 1;    // For date in calendar

for($i = 0; $i < 6; $i++) // Outer loop for weeks
{
$calendar_body .= ‘<tr>’;    // start row tag
for($j = 0; $j < 7; $j++)    // Inner loop for week days
{
if(($skip > 0)||($day > $daysInMonth)) // display blank till 1 day of month or after total numnber of days in that month
{
$calendar_body .= ‘<td>&nbsp;</td>’;
$skip–;
}
else
{
if($j == 0)    // if its Sunday then add class holiday
$calendar_body .= ‘<td>’.$day.’</td>’;
else    // otherwise add day class
$calendar_body .= ‘<td>’.$day.’</td>’;

$day++; // Increment $day
}

}    // inner loop closes
$calendar_body .= ‘</tr>’; // end row tag
} // outer loop closes

// Calendar head section
$calendar_head = ‘
<tr>
<th colspan=”2″><a href=”?ym=’.date(“Ym”, mktime(0,0,0,$month-1,1,$year)).’”>&laquo; Previous Month</a></th>
<th colspan=”3″>’.date(“F, Y”, mktime(0,0,0,$month,1,$year)).’</th>
<th colspan=”2″><a href=”?ym=’.date(“Ym”, mktime(0,0,0,$month+1,1,$year)).’”>Next Month &raquo;</a></th>
</tr>
<tr>
<th>Sunday</th>
<th>Monday</th>
<th>Tuesday</th>
<th>Wednesday</th>
<th>Thursday</th>
<th>Friday</th>
<th>Saturday</th>
</tr>’;
// PHP code for calendar ends

?>

<!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>
<meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1″ />
<title>A Calendar Built in PHP</title>

<style type=”text/css”>

#calendar tbody tr{ height:100px; }
#calendar td{ width:100px; }
#calendar th{background-color:#CCCC99;}
.day{ background-color:#CCFFCC; }
.holiday{ background-color:#FFCC66; }

</style>

</head>

<body>

<h2>A Calendar Built in PHP</h2>

<!– Table to display calendar –>
<table id=”calendar” width=”710″ border=”1″ cellspacing=”0″ cellpadding=”5″>
<thead>
<?php echo $calendar_head; ?>
</thead>
<tbody>
<?php echo $calendar_body; ?>
</tbody>
</table>
<!– Table to display calendar –>

</body>
</html>

The code is pretty easy to understand and you can figure out where to put your code to display your required info in the calendar. I used very basic CSS in this which you can style it as you wish. Integrate it according to your requirements. Hope it would help you guys. Your feedback and suggestions are always welcomed.

Tutorial to build a simple Content Slider using jQuery

March 16th, 2010

Content Slider is very popular now-a-days and used in various websites. You may choose from a wide range of jQuery plugins available online, or you can write it on your own. Yes it’s not a rocket science to create the content slider. This simple tutorial will guide you to build your own content slider, with simple Javascript code and animate() function provided in jQuery. This tutorial is divided into 4 parts – the html code, the style code, the jQuery code and additional functions.

 

View Demo (online) | Download Source Code (Zip)

 

The HTML Code

Copy and paste the following code inside body code. The code has a div with id “content” which contains a list. In these li elements you can have any other content or images, which you want to show. The code also includes two buttons Previous and Next. We will bind functions to these buttons to slide the next or previous content with their onclick event. Instead of these buttons you can use any other element like anchor tag (place and style them as you wish), and add those functions on its onclick event. You can Copy Paste the code below inside <body> tag.

<div id="content">
<ul>
<li>Content for 1st li element.</li>
<li>Content for 2nd li element.</li>
<li>Content for 3rd li element.</li>
<li>Content for 4th li element.</li>
<li>Content for 5th li element.</li>
<li>Content for 6th li element.</li>
<li>Content for 7th li element.</li>
</ul>
</div>
<button>Previous</button>
<button>Next</button>

Now your page will look somewhat like html-code.html

The Style Code

The diagram below explains the basic logic of content slider.



Content Slider

Layout of Content Slider

The div will remain fixed and the ul will be moved left or right in the background. The movement will be such that a li element will always shows up in the div. For implementing it we need to follow the styling below.

  1. The div will be of fixed width and height. The overflow property of the div should be set to hidden, so other li elements are not visible.
  2. The ul should have position property relative and padding as 0px. It will help us in controlling its movement inside the div. The width of the ul should be multiplication of number of li elements and width of the div (3500px in our case).
  3. The height and width of the div should be same as that of the div. The list-style and float properties should be set as none and left respectively.

Therefore our style code will look like following. Copy Paste it into your page’s <head> section.

<style type="text/css">
#content { border: 1px solid blue; height: 300px; width: 500px; overflow: hidden; }
#content ul { position: relative; width: 3500px; padding: 0px; }
#content ul li { height: 300px; width: 500px; list-style: none;  float: left; }
</style>

After putting the code run the html on browser. You page will look like style-code.html. The first li element will be visible in the “content” div.

The jQuery Code

First include the jQuery library in the page.

<script type="text/javascript" src="jquery.js"></script>

Now we create functions inside the script tags. First let’s create the function to slide the content to show next li element in div. For that we need to move ul element in left. You need to keep following points in mind,

  1. Move ul to left using jQuery animate function. Initially the ul element left position is at 0px inside the div. Therefore we have to increment the left position of ul in negative.
  2. The movement should be such that the next li element completely fits into the “content” div. So, we will add -500px (width of the div) to the left position.
  3. When the last li element is reached, the function will do nothing. So, we need to check every time the function is called if the last element is reached or not. For that we need to see if the current position of the ul is greater than negative of the multiplication of width of div (500px) and one less in number of li element (which comes out to be -3000px in our case). If current position of ul is greater than -3000px then we can slide to next element. If current position of ul is equals to -3000px, its means the last li is visible in the div.

Below is the function to slide to next li, copy paste it into <head> section

<script type="text/javascript">
function slideNext(){
if(parseInt($("#content ul").css("left")) > -3000)
{
$("#content ul").animate({
left: parseInt($("#content ul").css("left"))-500+"px"
},1000);
}
}
</script>

For sliding to the previous li, the function needs to do following things,

  1. Move ul to right using jQuery animate function. We have to increment the left position of ul.
  2. The movement should be such that the previous li element completely fits into the “content” div. So, we will add 500px (width of the div) to the left position of ul.
  3. We need to check every time the function is called if the current li visible is first or not. For that we need to see if the current position of the ul is less than position of first li element i.e. 0px.

Below is the function slide to previous li, which needs to be added inside the script tag along with the above slidePrev() function.

function slideNext(){
if(parseInt($("#content ul").css("left")) < 0)
{
$("#content ul").animate({
left: parseInt($("#content ul").css("left"))+500+"px"
},1000);
}

}

Now we just have to add these functions to the buttons onclick events as below,

<button onclick="slidePrev();">Previous</button>
<button onclick="slideNext();">Next</button>

Now your page will look like jquery-code.html. That’s it, your content slider is ready. Now run the html page on browser and play with Next and Previous buttons. You can change the animation speed from 1000 to whatever you like to make the sliding slow or fast.

Additional Functions

You can add more functions to your content slider, like slide to the first element or slide to last element or slide to any particular li element. Copy paste following functions  into <script> tags along with previous functions.

function slideFirst(){
$("#content ul").animate({ left: "0px" },1000);
}
function slideLast(){
$("#content ul").animate({ left: "-3000px" },1000);
}
function slideTo(x){
$("#content ul").animate({
left: "-"+(500*x)+"px" // 500 is the width of the div
},1000);
}

Create buttons/anchor tags for these functions and add these functions to their onclick events. The final page will look somewhat like additional-code.html.

You can also use jQuery easing plugin and apply different easing effects on jQuery animate function. This will add great attraction to your content slider.

I tried to make this tutorial as simple as possible. If you have any difficulty or confusion at any step, feel free to post your queries. Also let me know if you need tutorial on any other topic or plug-in. Now create your own content sliders and have fun!!!

JQuery Pagination Plugin

January 7th, 2010

Downloaded more than 2000 times.

After using various jQuery plugins for pagination, I decided to write my own jQuery paginator plugin. While creating this plugin, I tried to overcome other plugin’s limitations and make it easy & highly customizable to meet demands of most of developers. Here are few features of this plugin,

1)      Very simple. Just 1 line of code to apply pagination on any div/container.

2)      No need for creating extra divs for pagination.

3)      4 styles of pagination.

4)      Various other options like jump to page, page info and change items per page on fly.

5)      Easy customization and styling.

6)      Nice fading effect during changing of page.

Why use it? Often you have large number of items/data in a div, which not only breaks your design but also looks ugly and lengthy. Apply this plugin on that div and you will get a nice seamless pagination on that div, which don’t break your design and visitors can easily navigate to all the items. You can style or it customize according to your requirements.   See Demo.

Implementation:

1)      Download latest jquery script and paginator.js

2)      Include both scripts in html document in head section.

<script src="js/jquery.js"></script>
<script src="js/paginator.js"></script>

3)      Initiate pagination by  writing following code in head section inside <script> tags,

<script>
$(function(){ $("#<id_of_div>").pagination(); });
</script>

// instead of <id_of_div>, type in id of the div on which you want to create pagination.

Its all you need to do. Load the page on browser and now you can see a simple, basic pagination on the page. See Demo.

Customization:

1)      Style Paginator: There are 3 classes – paginator (container for paginator), active (class for active pages) and inactive (class for current page). We can apply little css on these classes to make paginator looks pretty, either in document itself or in stylesheet. See demo

<style type="text/css">
.active
{
color:#0033CC;
border: solid 1px #0000FF;
padding:3px 5px;
margin:5px;
text-decoration:none;
}
.inactive
{
color:#000000;
cursor:default;
text-decoration:none;
border: solid 1px #0000FF;
background-color:#0099FF;
padding:3px 5px;
margin:5px;
}
</style>

2)      Paginator Style: Open paginator.js, there is a variable called paginatorStyle. This variable accepts values from 1 to 4, for displaying different styles of paginator.  More info is given in comments below that.

3)      Pagination Position: By default the position of paginator is below the div where pagination is applied. In paginator.js you can change paginatorPosition to ‘top’ if you want paginator to be on the top instead of bottom, or ‘both’ if you want it to be on both (top and bottom).

4)      Changing Symbols: Open paginator.js, there are variables like firstPageSymbol, previousPageSymbol, nextPageSymbol, lastPageSymbol. You can change these symbols, so instead of << as symbol for first page, you can write FIRST PAGE, or give img tag if you want fancy image for first page. Also, there is a variable called separator, which will appear in-between page options. Make it blank if you don’t want it.

5)      Changing Items per page and Start Page: By default there are 5 items per page and start page for pagination is first page. You can change them in paginator.js, the variables are named itemsPerPage and startPage.

6)      Enabling other options: There are 3 options available, like goto to page, change items per page, display page info. By default these are disabled, you can enable them according to your needs. You can enable them by replacing false with true as variables value, in paginator.js. More info is given in comments besides each option.

7)      Calling pagination again after changing content: If you change content, upon which pagination is applied in-between, just call initPaginator(); after changing content. It will apply pagination again on the new content with same previous settings.

8)      De-paginating Content : At any time, if you want to remove pagination from the content, just call $("#<id_of_div>").depagination(); You can call $("#<id_of_div>").pagination(); to apply pagination again on same or any other content. Kindly remember, at one time you can apply pagination on only one div or content. If you want to apply pagination on other div during program, first call depagination function on previous div and then pagination function on new div.

9)      Don’t want to open paginator.js: No worries, if you don’t want to change these variables in paginator.js, you can still change these variables in html documents just before calling the pagination function. Like See Demo.

$(function(){
itemsPerPage = 3;
paginatorStyle = 2;
paginatorPosition = 'both';
enableGoToPage = true;
$("#result").pagination();
});

That’s it. Apply it wherever you want. Play around it with, try different styles and options. Email me in case of any bug, error, confusion or you need any further assistance/customization. All kinds of feedbacks are appreciated and welcomed.

I also recently uploaded uncompressed version of the plugin for development purposes, download it. feel free to download and extend it. Also, I have uploaded this plugin on jquery plugin directory. Here is the link – http://plugins.jquery.com/project/jquery-pagination

Tested in all major Browsers

Tested in all major Browsers