In the olden days, creating a website from scratch was easy.
With a basic understanding of HTML, and maybe a little CSS, you could put together a pretty functional web page with very little effort. Throw it onto your web server, and you were good to go.
<html> <head> <title>My awesome webpage</title> </head> <body> <h1>This site is awesome!</h1> <p>And I coded it from scratch.</p> </body> </html>
Of course, you can still code a page like this today. What has changed, for better or for worse, are expectations. As internet connection speeds grew faster, and browsers became more standardized and powerful, people asked more from the web. And websites grew in size and complexity, more and more often we'd see even experienced designers who were comfortable with raw HTML and CSS using design tools and code editors with advanced features just to keep everything straight.
Today, few people design their web pages from scratch. Most opt to use a pre-built template design, custom fit for their content management system of choice. Even developers building complex web applications came to rely on templating libraries to put together the majority of their application.
There are still a million reasons out there to hand-code a web page. For me, the top reason is control. Web pages are getting increasingly obese as time goes on. But when you design a page from scratch, it's easier to leave out things you don't really need. Do I really need to load in web fonts for this page to look nice? Is jQuery something I need, or can a couple of lines of Vanilla JS accomplish the same thing? Could a little bit of SVG instead of a complex image?
At the same time, there's no point in reinventing the wheel every time you sit down to design something for the web. There probably are common elements you want on every page you build, and modern development tools like Sass and Less make dealing with finicky CSS much easier than it used to be.
For these reasons, using an HTML boilerplate templates and frameworks helps bring you the best of both worlds. It can help bring standardization, an easy-to-use grid for layout, and modern feature support to your pages, but at the same time, they are often simple enough to cut the cruft of anything you're not actually using.
Here are three open source HTML5 templates for you to consider for your next web project.
Twitter's Bootstrap is perhaps one of the best-known templating frameworks for creating new web pages. Its ubiquity has led to a backlash from some in the web design community, not so much because of the framework itself but because of the pervasiveness of very simple, almost completely uncustomized implementations of it out in the wild.
But if it has been overused, this probably speaks as much as anything to its usefulness. Bootstrap makes it easy to create a responsive design, and comes with lots of features out of the box: from icons to styled inputs and brings standardization to many common page elements, from breadcrumbs to alerts to pagination. There are also a ton of ready-made themes out there, in case theming isn't your thing.
But it's also fairly lightweight, and if I don't need a particular component for a project, it's easy enough to snip it out and never look back. If you're looking for a balance between minimalist and full featured, HTML5 Boilerplate might hit that sweet spot for you.
Skeleton is the lightest framework in the bunch. Weighing in at around 400 lines of code, it's also very easy to work with. If you've worked with web frameworks before and find them to be too bulky or just overkill for what you need, Skeleton provides some good bare bones (hah!) to work with: a simple grid; nicely formatted forms, lists, tables. typography, and other basic elements; and cross-browser support. Everything else is up to you.
Should you use one of these?
You might also check out Initializr, an open source web application that can pre-configure HTML5 Boilerplate, either as a classic or responsive page, or Bootstrap, with only the options you need.
So what about you? Do you have a favorite template or framework for web design? Or do you take a different approach to web design altogether? Let us know in the comments below.