Laying down the underlying HTML
First of all we need to build out the page that'll contain our sliding puzzle. The initial page will be a shell with mostly just a few containers; the draggable elements that will make up the individual pieces of the puzzle can all be created dynamically when required.
Prepare for Lift Off
We'll use a standard starting point for all of the different projects throughout this book, so we'll look at this briefly now to save showing it in every project:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title></title> <link rel="stylesheet" href="css/common.css" /> </head> <body> <script src="js/jquery-1.9.0.min.js"></script> </body> </html>
Tip
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Each project we cover will be contained in a page that starts out exactly like this. Save a copy of the previous file now in your local project folder and call it template.html
. At the start of each project I'll say something like "save a copy of the template file as project-name.html
". This is the file I'll be referring to.
So in this case, save a copy of the previous HTML (or template.html
if you wish) in the main project directory (jquery-hotshots
) and call it sliding-puzzle.html
.
We'll also be using a common style sheet for basic styling that each project will utilize. It contains things such as an HTML5 reset, clearfix, and other utilities, as well as some basic typographical fixtures and theming for consistency between projects. While I won't go into detail on that here, you can take a look at the common.css
source file in the accompanying download of this book for more information.
Each project will also need its own style sheet. These will be covered where applicable and will be discussed on a per-project basis as and when required. We can create the custom style sheet we'll be using in this project now.
Create a new file and call it sliding-puzzle.css
, then save it in the css
folder. We can link to this file in the <head>
of the page using the following code:
<link rel="stylesheet" href="css/sliding-puzzle.css" />
This should appear directly after the common.css
style sheet reference.
We can also link to the script files that we'll be using in this project. First, the jQuery UI file we downloaded and copied into the js
folder can be linked to using the following code:
<script src="js/jquery-ui-1.10.0.custom.min.js"></script>
Remember to always add the script for jQuery UI on the next line after the script for jQuery itself.
Lastly we can add the script file we'll use for this project. Create a new file and save it as sliding-puzzle.js
in the js
folder. We can link to it by adding the following <script>
element directly after the jQuery UI reference:
<script src="js/sliding-puzzle.js"></script>
Engage Thrusters
Save a copy of the template file as sliding-puzzle.html
in the root project folder and then add the following mark-up to the <body>
element (before the jQuery <script>
element):
<div id="puzzle" class="clearfix"> <figure> <img src="img/Flower.png" /> </figure> <div id="ui"> <p id="time">Current time: <span>00:00:00</span></p> <button id="start">Start!</button> </div> </div>
Objective Complete - Mini Debriefing
This simple HTML is all that's required to start with. As this is a book about JavaScript, I won't cover the HTML in much detail unless absolutely critical to the project at hand. In this case most of the elements themselves aren't significant.
The main thing is that we have a series of containers with id
attributes that make selecting them fast and easy. The only really important element is the <img>
, which displays the original image that we'll be turning into the puzzle.
Note
The awesome image used in this example was created by the extremely talented Mr. Eamon O'Donoghue. More examples of his fine work can be seen at http://eamonart.com/. The image used in this project can be found at http://eamonart.com/IMAGES/PINUPSLINKS/Space%20Girl%20Vera.html.