50 Free Resources for Web Designers from 2014

free_resources2

In this post, I have collated my top 50 FREE resources for web designers from this fantastic year, 2014.

There are libraries for quickly creating CSS charts and animating SVG icons, tools for converting image files to data URIs, web-based apps for creating icon fonts from SVGs, jQuery plugins for touch-enabled and lightweight sliders, JavaScript libraries for creating animated GIFs from any type of media, generators for creating Flexbox layouts… and much, much more.

To help you find exactly what you’re looking for, I’ve broken the resources down into JavaScript Plugins & Tools, CSS Libraries, Tools & Frameworks, and Web-Based Tools & Services.


Free JavaScript Plugins & Tools


lightSlider is a lightweight and responsive content slider jQuery plugin with carousel thumbnails navigation.

lightSlider


BttrLazyLoading is a jQuery plugin that allows your web app or page to only load images within the viewport.

BttrLazyLoading


Gridscrolling.js is a jQuery plugin that lays outs an HTML5 article for you by positioning sections and asides in a grid, and offers an easy cursor navigation and overview map.

Gridscrolling.js


Adaptive Backgrounds is a jQuery plugin for extracting the dominant colors from images and applying it to its parent, allowing your layout to have a blended color scheme.

Adaptive Backgrounds


jNottery is a jQuery plugin that lets you add notes and markers to webpages. All the data is encoded as part of an URL which makes it easy to share or bookmark.

jNottery


HideSeek is a simple, yet customizable live search jQuery plugin.

HideSeek


fontFlex is a lightweight jQuery plugin for dynamically changing font sizes based on the container or browser width.

fontFlex


Gif Shot is a JavaScript library that can create animated GIFs from media streams, videos, or images.

Gif Shot


Ideal Image Slider is a slider plugin that has just the right amount of features, with no bloat.

Ideal Image Slider


SVG Morpheus is a JavaScript library that enables SVG icons to transition from one to the other in a Material Design style.

SVG Morpheus


The Shuffle Images jQuery plugin lets you display and shuffle multiple images by simply moving the cursor.

Shuffle Images


Timesheet.js is a simple JavaScript library for creating beautiful HTML time sheets.

Timesheet.js


Face Detection is an amazing jQuery (and Zepto) plugin for detecting faces on images and videos.

Face Detection


Sweep.js is a lightweight JavaScript library (5kb zipped) that enables proper color transitions through the HSL and HUSL spaces.

Untitled-1


Data Img is a simple jQuery plugin for dealing with responsive image delivery. It works by simply swapping the 'image src' / 'background-image url'depending on screen width.

Data Img


Vivus.js is a lightweight JavaScript class that allows you to animate SVGs, giving them the appearence of being drawn.

Vivus.js


pagePiling.js is a jQuery plugin for creating a pile of sections that you can access by either scrolling or directly by URL.

pagePiling.js


Flow is a static type checker for JavaScript. It can be used to catch common bugs in JavaScript programs without any changes to the code.

Flow


Gif Player is a customizable jQuery plugin that allows you to add play and stop controls to animated gifs.

Gif Player


Naver is a simple jQuery plugin that will automatically turn a basic navigation system into a mobile friendly system.

Naver


Free CSS Libraries, Tools & Frameworks


Materialize is a lightweight CSS Framework that has been based on Google’s Material Design. The framework comes in two different forms, the standard with unminified CSS & JS, and the Sass version, which gives you more control over which components to include.

Materialize


Foundation for Apps (Sass) is an Angular-powered front-end framework for making fully immersive and flexible apps.

Foundation for Apps


Schema is a modular front-end framework (Less) to help you kick-start your process for creating complex interfaces right out the box.

Schema


Flexbox Grid, as the name suggests, is a grid system based on the flex display property.

Flexbox Grid


Blueplate is a lightweight plugin for the Webplate front-end framework. The plugin adds a responsive CSS layout engine and SASS mixin library to an already solid framework.

Blueplate


Magic Animations is a CSS3 animation library with some fantastic special effects.

Magic Animations


Material UI is a combines React components with a CSS (Less) Framework that implements Google’s Material Design. You can grab the Sass version here.

Material UI


Inspired by tools like Compass and Bourbon, Kouto Swiss is a complete CSS framework for Stylus. The framework comes packaged with a huge selection of mixins, functions and utilities , and also includes the power of the caniusewebsite to help your CSS fit your compatibility needs.

Kouto Swiss


Tumblr-Cog-Loaders is an amazing library of animated Tumblr-style cog loading icons. Built with only CSS and SVG.

Tumblr-Style-Cog-Loaders


CSS Plot is a small library of CSS-only charts and graphs.

CSS Plot


Animate.css is a collection of cross-browser animations for you to use in your projects.

Animate.css


Material Design for Bootstrap is a theme for Bootstrap 3 which lets you use Google’s new Material Design language in the worlds most popular front-end framework.

Material Design for Bootstrap


Imacss is a library that converts image files to data URIs and embeds them into a single CSS file as background images.

Imacss


NightTabs is a clean and responsive solution for creating a beautiful tabbed content navigation without any JavaScript.

NightTabs


CSSDevices is a pure-CSS library of flat Apple devices. It allows you to easily add a pure-CSS iOS device to your website to show off the screenshots of your cool new app.

CSSDevices


CSS-On-Diet (COD) is a new preprocessor built specifically for designers. Other preprocessors do have steep learning curves, while COD, with it’s simpler syntax, focuses on allowing you to write CSS faster.

CSS-On-Diet


Marka is an innovative and ‘transform-able’ collection of icons, beautifully and carefully designed to work on the web.

Marka


Web-Based Tools & Services


Font Flipper is a simple web-based tool for browsing and experimenting with the fonts that are installed on your computer.

Font Flipper


Font Family Reunion is a reference tool for looking-up the default font lists on different operating systems.

Font Family Reunion


Type-Finder is a tool for helping you navigate a curated library of typefaces by asking a set of questions that will help to select the perfect font family.

Type-Finder


BADA55.io is tool for finding the most ‘badass’ leet words for your CSS hex colors. You know #b000b5, #bada55, that kind of thing.

BADA55.io


Glyphter is a handy tool for creating icon fonts from SVGs.

Glyphter


SVG Circus is a web-based tool for creating cool animated SVG spinners, loaders and other looped animations quickly.

SVG Circus


Fibonacci is a generator that will allow non-developers to design web page layouts using Flexbox, all without having to learn HTML or CSS.

Fibonacci


Flexy Boxes is a flexbox code generator and learning playground.

Flexy Boxes


EnjoyCSS is an advanced CSS3 generator with an easy-to-use UI that allows you to adjust rich graphical styles quickly and without coding.

EnjoyCSS


Built for font design hobbyists, Glyphr Studio is a free, feature-rich web-based tool for designing fonts.

Glyphr Studio


PatternBolt is a library and generator of SVG pattern backgrounds that you can download as a single CSS or SCSS file.

PatternBolt


LoremFlickr is a simple and free image placeholder service. The images are pulled from Flickr and have a Creative Commons license.

LoremFlickr


StyleStats is a Node.js library and web-based tool for collecting and displaying useful CSS statistics.

StyleStats


SC5 Styleguide is a useful tool that helps you generate style guides from stylesheets. It can be used as a command line utility, gulp task or grunt task

SC5 Styleguide


Compressor.io is a tool for compressing the size of your images. It supports JPEG, PNG, GIF & SVG, and offers both ‘lossless’ or ‘lossy’ levels of compression.

Compressor


TinyJPG is a web-based tool for reducing/compressing the file size of your JPEG images.

TinyJPG

via marketblog.envato.com

Advertisement

28 Free Resource Websites for Designers and Developers

Whether you are a designer, developer, marketer, copywriter or otherwise, there is something in this list for you. Granted the number of tools online has been growing very quickly and it’s certainly not a complete collection. If you know of any helpful links which I’ve forgotten please share with us in the discussion area below.

Web Colour Data

web colour data webapp inspiration design

CodePen

codepen dark ui homepage coding ide cloud webapp

365psd

freebie 365psd download gallery psds

Gridulator

gridulator grid based webapp free open source online

Font2Web

convert online fonts ttf otf webfont webapp

Source Canvas

freebie download gallery psd open source codes sourcecanvas

WordPress Query Generator

sql database query generator code php wordpress

Buttons

open source github buttons css library

HTML Email Boilerplate

free open source html boilerplate homepage design

Google Web Designer

free software program homepage google webdesigner

Screen Sizes

screen sizes responsive design width devices webapp reference

CSS Font Stack

css css3 webfont font stacks homepage webapp

PixelsDaily

dark website homepage pixelsdaily freebie psd

Unheap

unheap gallery jquery repository homepage webapp downloads

Colourcode

colourcode code choice hexadecimal colors picker webapp

Pure CSS

pure css homepage open source webapp layout colorful

Favigen

favigen homepage layout webapp picking building favicons

resizeMyBrowser

resizemybrowser inspiration homepage webapp design

Responsive Elements

responsive elements inspiration webdesign homepage webapp

Forecast Font

freebie open source fonts weather icons iconfont

Font Awesome

font awesome open source icons webfont iconfont

Prefixr

net tutsplus internet webapp css3 prefix generator

PXtoEM

online webapp pixels to ems converter

Ajaxload

small loaders icons gif generator ajax circles

Iconza

iconza webapp icons webpage inspiration design layout

DesignFloat

design float social news digg webapp homepage

Subtle Patterns

subtle patterns website backgrounds free download

PageSpeed

pagespeed tools website google tools homepage

via designm.ag

shit for making websites

  1. Screensiz.es

    A screen size chart for common devices. Sortable by Device name, OS, screen size, resolution, PPI, density and popularity.
    http://screensiz.es/

  2. Log – Console.log with Style

    easier writes to console.log that provides colors and formatting. I am deeply in love with this one.
    http://adamschwartz.co/log/

  3. Live editing proof of concept in Firefox and Sublime

    Should be released soon.

  4. Backbone.js

    Backbone’s been around awhile, but it hit 1.0 today. Definitely worth looking at as a framework for larger JS apps.
    http://backbonejs.org/

  5. Superhero.js

    a treasure trove of articles surrounding JavaScript application development.
    http://superherojs.com/

  6. CSS Front-end Frameworks with comparison – By usabli.ca

    A comparison of more CSS Frameworks than you’ll ever care to use in practice. Compares more than 30 front-end frameworks by browser support, the use of less/sass, mobile and tablet support and finally, license.
    http://usablica.github.com/front-end-frameworks/compare.html?v=2.0

  7. PouchDB, the JavaScript Database that Syncs

    PouchDB is a JavaScript library that allows you to store and query data for web applications that need to work offline, and sync with an online database when you are online.
    http://pouchdb.com/

  8. LESS- The Dynamic Stylesheet language

    LESS extends CSS with dynamic behavior such as variables, mixins, operations and functions. Everything gets compiled back to CSS on the server side (typically using Node) or client-side JavaScript.
    http://lesscss.org/

  9. bower – a package manager for web

    A simple command-line tool to download components (and their dependencies) for web projects (there are over 1,000 in their registry). Requires Node.
    http://twitter.github.com/bower/

  10. Screenhero – Collaborative Screen Sharing

    2 cursors, 2 keyboards, one remote session. And it’s free.
    http://screenhero.com/

  11. Gather Content

    Help organize and collaborate on content needs for your project and then send it on it’s way via their API.
    https://www.gathercontent.com/

  12. Redacted

    A strange little typeface meant for use during the wireframing/prototyping phase of a project. Redacted is essentially a Lorem Ipsum replacement that renders solid blocks of grey or illegible scribbles instead of legible text.
    https://github.com/christiannaths/Redacted-Font

  13. Handlebars.js: Minimal Templating on Steroids

    A JavaScript implementation of the mustache templating language.
    http://handlebarsjs.com/

  14. Swiftype: Modern full-text search for websites and applications

    An embedded search app for websites that provides great analytics and allows you to easily customize search results for specific queries.
    https://swiftype.com/

  15. Firebase – A scalable real-time backend for your website

    A real-time SaaS backend for apps, accessible entirely from front-end JavaScript
    https://www.firebase.com/

  16. Moment.js – A lightweight javascript date library

    A 5.5kb javascript date library for parsing, validating, manipulating, and formatting dates.
    http://momentjs.com/

  17. lenticular.js – tilt-controlled images

    sort of like tilt (or mouse) controlled animated gifs. fantastic for product demos, etc.
    http://lenticular.attasi.com/#

  18. Online JSON Editor

    A fantastic little JSON editor. Has a left pane for JSON and a right pane for a human-readable view of the data. You can edit either side and push changes back and forth, open from a url, or click save and download the edited file.
    http://jsoneditoronline.org/

  19. Parsley.js – Forms Validation

    A client-side form validator (i.e. for users, not for servers) that let’s you use html data-attributes to trigger form validation, which is to say you don’t have to write any additional JavaScript to make it work.
    http://parsleyjs.org/

  20. Bountify – Crowdsource Small Coding Tasks

    Post a problem and a cash bounty, get back code.
    https://bountify.co/

My (Simple) Workflow To Design And Develop A Portfolio Website

A long time ago in a galaxy far, far away… a young designer embarked on an epic journey strewn with perilous layout challenges, constant procrastination, devious jQuery errors and deadly Internet Explorer bugs. It was a rite of passage that all designers must take in order to stand proud with their peers in this wide world we call the Web. Yes, I’m talking about creating your own portfolio website.

I recently redesigned my own portfolio website. It was a challenging but enjoyable experience that I really learned a lot from. My goal was to create a unique online presence that represents my personality and displays my design work in detail, while of course serving as a promotional medium to gain more exposure and business.

Behind the scenes look at my design and development workflow.
A look behind the scenes of my design and development workflow

After receiving a bunch of emails asking me about the design decisions I made during the redesign of my website, I decided to write this article to give a peek at my journey and some of the things I learned along the way. I’ll discuss best practices in modern Web design and go through the entire design and development workflow that I followed to create my website, from the initial planning stage to the final live website, including these steps:

  • project planning,
  • branding,
  • wireframes,
  • responsive design and flexible grids,
  • LESS and SASS,
  • high-definition screens,
  • flexible images,
  • content animation,
  • WordPress development,
  • testing and analytics.

I hope this helps and inspires other designers out there who are looking to create their own unique portfolio website. We’ve got a lot to get through, so let’s get started.

 

Plan The Project

DEFINE YOUR BRIEF

The first thing I do with any project is figure out exactly what I want to achieve, and I write it down. What is the purpose of the project? What problem am I trying to solve? My goal was to create an online profile to promote my design work and gain more exposure. I needed to be able to write articles, display my design work and have people contact me easily. I also wanted it to be unique and memorable, while representing my personality.

At this point, we simply need to figure out our ultimate goal; we’re not worried about how we will get there. Write down your goals, and look back at them in later stages of the project to ensure that you’re on track.

INITIAL RESEARCH AND IDEA GENERATION

Do some initial research to get the creative juices flowing. Inspiration can come from anywhere and can strike at any time, often while you’re in bed and on the verge of falling asleep (with, of course, not a notebook in sight). Sometime you might want to look at other sites for inspiration, but sometimes not looking at what other designers have done is best, because once you’ve seen it, thinking of your own ideas can be hard.

Instead, make a cup of tea, find a comfortable spot and brainstorm your own solutions to the problem at hand. All you need at this stage is a pen, a sketchbook and your thoughts. Hopefully, you’ll come up with something innovative that hasn’t been done before. You can employ plenty of methods to generate ideas. Have a think about your personality and what makes you unique as a designer. What are your interests? How are you different? Do you have a particular design style? Do you specialize in a certain aspect of design? Do you have unusually big ears? Find an angle that represents you and integrate that into your design.

portfolio of justin aguilar
Justin Aguilar illustrates his workspace in his portfolio.

portfolio of meng to
Meng To gets straight to the point with his case studies.

portfolio of stephen burgess
Stephen Burgess is a developer but shows a great understanding of design and UX with his unique website.

After some initial research, I wrote down a few ideas and elements to include in my portfolio:

  • My skill set is a mix of both coding and design, and I wanted this to be prominent.
  • I’m a big fan of minimalist design and wanted to stick with a mainly black and white palette to allow the design to shine through.
  • I wanted to use my own photo as a hero image to inject some personality into the website.
  • I enjoy the experience of seeing animation as I scroll down a page.
  • I’ve never liked the way in which one Web page jerks to another, so I wanted my transitions to be smooth.
  • I like a generous amount of white space and a full-width layout.
  • Responsiveness is important to me because I want mobile and tablet users to also have an optimal experience.
  • I wanted my case studies to tell a story about my design process, rather than just be a gallery of random images without context.

CREATE A TIMELINE

Once your ideas are together and you know which direction to head in, draw a rough timeline. I’m not talking about strict deadlines or anything, but more of a guide to help you organize tasks and stay productive and motivated. Simply list the tasks that you need to do, and estimate the amount of time each will take. This will give you a rough estimate of how long the project will take, as well as create a task list to work from. Of course, some of your estimates might be a little off, but that’s fine; you can adjust the timeline as you go. A bit of organization goes a long way, so get into this habit.

Design

DESIGN YOUR BRAND

Your brand is basically the visual language that describes who you are and that determines how others see you. I wanted to convey a clean, sleek and minimal look and feel. I kept things quite simple and decided to create a logo mark from my initials, using a minimal black and white palette. I sketched some ideas and experimented with typography and letter arrangement before deciding on the final logo (which I drew in Adobe Illustrator). If you’re having trouble coming up with a logo, you might want to read “A Systematic Approach to Logo Design.”

adham dannaway logo design
My final logo design

As part of my branding, I also wanted to design an avatar for my website and various social media platforms. It would need to represent me as a designer and developer, while being unique and memorable. After countless hours of brainstorming (more like procrastination), I finally had an idea that makes sense. The idea was to take a photo of my face and cut it in half. One side would depict the creative designer in me, while the other would show my logical coding side. After numerous sketches and a lot of fiddling in Photoshop, I was finally happy with the concept. I used pastels, grunge-style brushes and masks to achieve the aesthetic I was after.

adham dannaway avatar concept
My final avatar

CREATE CONTENT

Many designers leave content creation until the end because they’re more interested in layout and aesthetics (the fun stuff). Create content early on in the project because it will determine the design. What information do you need to convey to visitors? Think about what you want to say and how to say it. Should a given point be written as simple text, or would it make more sense as an image or diagram?

Be concise and friendly in your copy. I like to write in the first person to make it feel more personable. Break your copy into small chunks to improve readability and scannability. I wrote a draft of my content and broke it down into six main parts: home page introduction, a bit about me, places I’ve been featured, my design work, my blog, and my contact details.

SHOW YOUR WORK

Your work is the most important piece of content in the portfolio because it is what most visitors have come to see. Gather your best projects, and explain the process and workflow behind each. Nothing is worse than a vague portfolio of random images with no context or explanation. Including only the type of work you’re looking to do more of, rather than all of your work, will help you target the right clients.

Your potential customers will want to see your work in as much detail as possible, so don’t shrink it to a small size. I decided to keep the actual sizes if possible to make it easy for visitors to quickly navigate my work. I also decided to talk about the challenges I encountered and how I tried to solve them. Design is all about solving problems, so letting visitors know why a design looks and works the way it does is very useful, and it also gives you an opportunity to reflect on your work and your design process and perhaps improve it next time. Remember that you’re telling a story, so it’s been important to me to make it as interesting and informative as possible.

portfolio case study
Soft Facade has beautiful, in-depth case studies.

Now that our content is figured out, we can move onto sketching wireframes.

SKETCH WIREFRAMES

The approach I take to wireframes is simple but effective, and all you need is a pen and sketchbook. I first list all of the elements to include on a Web page. I then group related elements, before prioritizing these groups according to importance. Here is my list of elements for the contact page.

wireframe elements list
List of elements for my contact page

Once the page’s elements are grouped and prioritized, arranging them on the page will be much easier. Place more important elements towards the top of the page, and use white space to create groupings. I took a desktop-first approach because I wanted to focus on displaying my work in detail on large screens. When we come to write the CSS later on, we’ll take a mobile-first approach, which will simplify the code (we’ll get to that shortly). I usually sketch my wireframes with pen and paper, but you can use tools such as Balsamiq or even Photoshop or Illustrator. Below is a wireframe for my contact page. It doesn’t need to look pretty — it’s simply a plan of a Web page to work from.

contact page wireframe
Contact page wireframe

RESPONSIVE DESIGN AND FLEXIBLE GRIDS

I wanted to make my website responsive to ensure an optimal experience for visitors on desktop, tablet and mobiles. When designing websites, I like to use a grid because it provides a structural foundation, while making the development process easier and more efficient. Joshua Mauldin sums up a grid pretty well:

Think of it like a house’s foundation. With a solid foundation, the house is stable, and building on it is easy. With a solid grid, your design can easily be adapted to accommodate whatever changes come along.

Some designers find a grid to be limiting, but it really depends on the design. I find that it results in a neater and more organized design. My design is quite simple, so I used a custom 12-column flexible grid, but a 16-column grid would give more definition and accuracy. I also defined a maximum width of 1040 pixels to ensure that the design doesn’t look stretched on larger monitors.

Using a flexible grid (rather than three separate fixed widths for mobile, tablet and desktop) enables a website to scale dynamically to fit any device width. Below is the CSS for my responsive grid, but feel free to create your own to suit the design. Use tools such as GridpakResponsive Grid System,Golden Grid System and Responsify to create your own responsive grid. I’ve used ideas from a few of these tools to create my own custom flexible grid.


/* 12-column responsive grid */

.row {
    clear: both;
    max-width: 1040px;
    margin: 0 auto;
}

[class^="col-"] {
    float: left;
    margin: 0 3.84615384615% 0 0;
    list-style: none;
    position: relative;
}

[class^="col-"]:last-child {
    margin: 0;
}

.col-1 { width: 4.8076923077% }
.col-2 { width: 13.4615384615% }
.col-3 { width: 22.1153846154% }
.col-4 { width: 30.7692307692% }
.col-5 { width: 39.4230769231% }
.col-6 { width: 48.0769230769% }
.col-7 { width: 56.7307692308% }
.col-8 { width: 65.3846153846% }
.col-9 { width: 74.0384615385% }
.col-10 { width: 82.6923076923% }
.col-11 { width: 91.3461538462% }
.col-12 { width: 100%; margin: 0 }

Upon looking at the CSS above, you might be wondering how the [class^="col-"] CSS selector works. It’s actually called a substring matching attribute selector, and all it does is select any class that begins with the string col-. You can also use substring matching to select other attributes thatend with a certain string, or even those that contain a certain string. Substring matching is a handy way to create more complex and powerful CSS selectors, and they’re well supported, too, going as far back as Internet Explorer 7.

The HTML is quite simple, too, consisting of rows and columns, much like a table. Here is a simple two-column responsive grid that I use on my website. The left column spans five columns, while the column on the right spans seven.


<div class="row">
    <div class="col-5">Content spans five columns</div>
    <div class="col-7">Content spans seven columns</div>
</div>

SET LOGICAL BREAKPOINTS

When you design a responsive website, at certain widths the layout will break or the text will become squished and difficult to read (45 to 75 characters is a comfortable length per line). These special widths are known as breakpoints, and they’re often set to common device widths, such as 320 to 480 pixels for mobile, 768 to 1024 pixels for tablets, and 1024 pixels and up for desktops. The problem is that “common” widths don’t really exist anymore with the growing number of devices, so this solution doesn’t scale well.

Setting breakpoints based on content rather than device width is a more scalable solution. For example, rather than blindly setting a breakpoint at 768 pixels wide for tablets, I instead looked at my content and found that it looked fine until it got squashed under 600 pixels. I thus set a breakpoint at 600 pixels to change the layout to ensure that the content remains legible at and below this width. Yes, you will need to optimize the presentation of your website for various devices, but your content should always determine where the breakpoints lie. These are the four breakpoints I needed for my design: 320, 600, 1024 and 1140 pixels.

When writing the CSS media queries for my website, I took a mobile-first approach. This basically meant writing the mobile styles first as my base, followed by the tablet and then the desktop styles. Mobile styles are generally simpler than desktop styles, so writing them first makes sense. They form the foundation of your styles, and we can then add more complex styles for wider screens. Cascading your style sheet in this way keeps your code clean and DRY (“don’t repeat yourself”).

Here are the media queries I used:


/* Mobile styles go first, without media queries. */

@media only screen and (min-width: 321px) {
    /* Larger mobile styles (wider than 320 pixels) */
}

@media only screen and (min-width: 600px) {
    /* Tablet styles (wider than 600 pixels) */
}

@media only screen and (min-width: 1024px) {
    /* Large laptop styles (wider than 1024 pixels) */
}

@media only screen and (min-width: 1140px) {
    /* Desktop styles (wider than 1140 pixels) */
}

With the breakpoints defined, I could sketch the tablet and mobile wireframes. Sometimes hiding or omitting content on small devices makes sense, but I wanted as much content to be available across all devices as possible. Why should mobile users miss out on valuable content? People are used to scrolling on phones anyway, so think first before you remove or hide content. The easiest solution isn’t always the best one.

DESIGN HIGH-FIDELITY MOCKUPS

Once the desktop and mobile wireframes were sketched, I moved into Photoshop and started mocking up the website in more detail. I don’t like spending much time in Photoshop because it slows down the development process. Don’t worry too much about creating a pixel-perfect design; you’ll have time to refine it during the coding process. Instead, simply mock up the main page templates, along with any other design elements and assets you need. I mocked up the header and footer, along with the basic elements of the “About me” page below, to make sure I was happy with the aesthetic.

adham dannaway about me page
“About me” page mockup

Similarly, I didn’t mock up any mobile or tablet designs in Photoshop, because I find that simply coding these based on the wireframes to be quicker. I did, however, spend some time on details such as icons and textures, which can make a big difference in the polish of the final website.

Develop

Now that our website is planned and all of our image assets are ready to go, it’s time to start coding. So, get your headphones and favorite text editor! My text editor of choice is Sublime Text. It’s simple, fast, powerful and easy to use. If you’re a Windows user, I’d recommend Notepad++.

I usually start from the top of the Web page and build each element one by one. Let’s start with the header navigation. I like to write out the HTML for the element first, and then move on to the CSS. Remember that we are actually creating the mobile version first to reduce code bloat. Depending on the complexity of the project, you can either code from scratch or use a framework such as HTML5 BoilerplateFoundation or Compass.

CSS PREPROCESSORS (LESS/SASS)

If you’re not yet familiar with CSS preprocessors such as LESS and Sass, definitely familiarize yourself with them because they’ll save you a lot of time and effort and will streamline your CSS. A preprocessor gives you more power when coding CSS, enabling you to use object-oriented programming practices when writing styles.

less sass css pre processors
LESS and Sass CSS preprocessors

We’ve all wished that we could use variables in CSS, define functions and reuse code snippets without having to continually copy and paste. CSS preprocessors enable you to do that and much more, while keeping your styles clean and organized. Your LESS or Sass code is then compiled and outputted as regular CSS.

I used LESS to create the CSS for my website. However, after experimenting with both LESS and Sass, I feel that Sass is more powerful, so I’ll be sticking with it from now on. Chris Coyier compares LESS and Sass and shows the subtle yet important differences between the two. The deciding factor for me was that Sass uses Compass and gives you access to a library of useful and well-maintained mixins; LESS doesn’t. Feel free to play with both to see which you prefer.

PROGRESSIVELY ENHANCE WITH MODERNIZR

Modernizr is a JavaScript library that detects HTML5 and CSS3 features in the user’s browser and adds those features as classes to the <html> element. We all want to take advantage of the latest CSS3 and HTML5 features, but what happens in older browsers that don’t support them? Modernizr basically tells us which features are supported in the visitor’s browser, allowing us to write conditional CSS and JavaScript for each situation. Thus, we can easily progressively enhance, providing everyone with basic features, while enhancing the experience for those with modern browsers.

CREATE FLEXIBLE IMAGES

Flexible images are a simple yet important part of any responsive website. To make your images flexible, simply place them in your responsive grid container and add the CSS below to your style sheet. Insert them using the <img> tag, although there are ways to achieve flexible images using CSS background images, too. If you want to get more technical and serve different images according to the device being used (for example, serving small images to phones to conserve bandwidth), you can look into certain techniques for serving truly responsive images and avoiding duplicate image downloading.


img {
	max-width: 100%; 
	height: auto !important;
}

USE CSS IMAGE SPRITES

We all know to combine our icons and image assets into CSS sprites, rather than leave multiple individual images to load one after another. This decreases loading time and makes it easy for you to edit and maintain image files later on. I usually create several sprites for the different sections of a website. For example, one of my sprites contains all of my icons, while another contains global elements (including logo, header icons, navigation background and footer icons).

When creating sprites, think about how your website will load. If a bunch of icons are only used on a single page of the website, then separate them from the main sprite. This will ensure that they’re loaded only when needed, while keeping your main sprite small. Using sprites will also make it easier to prepare your images for high-definition screens later on. The process can be cumbersome, so use a handy tool such as Sprite Cow to create them quickly and easily. You can also use a combination of Sass and Compass to generate sprites automatically from separate images.

CATERING TO HIGH-DEFINITION SCREENS

To ensure that your website looks crisp on high-definition (or “Retina”) screens, use CSS as much as possible for presentation. Remember that some of the newer CSS styles won’t render in old browsers — this is where progressive enhancement makes sense. In most cases, you won’t be able to build the website completely from CSS; you’ll need images. Luckily, preparing your images for high-definition screens is not hard.

Basically, you’ll need to create larger versions of your images to be used on high-definition screens. Because our images are contained in a sprite, all we need to do is create another version of the sprite that is exactly twice as large. Let’s say our sprite is named sprite.png; we would name our high-definition sprite sprite@2x.png. To decrease loading time (especially on mobile devices), compress your images using JPEGminiTinyPNG or, if you’re on a Mac, ImageOptim.

retina image
Simply create another image twice the size of the original for high-definition devices.

Once you’ve created the larger images, simply use media queries to show the large images on high-definition screens. Be careful with your media queries because iPhones aren’t the only high-definition devices around at the moment. There are other mobile phones, along with Retina iPads and MacBook Pros, too. I use two high-definition media queries on my website: the first for high-definition mobile devices, and the second for tablets and laptops.

Here are the media queries to target high-definition screens:


@media
only screen and (-webkit-min-device-pixel-ratio: 1.5), 
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5) {
    /* Target all high-definition screens. */
}

@media 
only screen and (min-width : 600px) and (-webkit-min-device-pixel-ratio: 1.5), 
only screen and (min-width : 600px) and (min--moz-device-pixel-ratio: 1.5), 
only screen and (min-width : 600px) and (min-device-pixel-ratio: 1.5) {
    /* Target high-definition devices with screens wider than 600 pixels. */
}

Wouldn’t it be great if we could eliminate the need for media queries and separate high-definition images altogether? An even better way to cater to high-definition screens is to use images that are vectors, which will scale to fit any screen size and look crisp on any device. You can draw your images or icons in Illustrator and export them as scalable vector graphics (SVG) files. The SVG file basically consists of XML-based code that describes the image to the browser.

Another clever way to get scalable vector icons that look crisp on high-definition devices is to useicon fonts, such as those from IcoMoon and Font Awesome. I didn’t use these methods on my website, mainly because I don’t have many icons or vector images. But if you’re looking to use vector images and icons more heavily on your website, then these techniques will come in handy.

PAGE TRANSITIONS

I’ve never been a fan of the abrupt way in which one Web page jumps to another. When the user clicks a link, there’s usually a sharp jump, followed by images loading awkwardly on the page in no particular order. I wanted to control the way my content appears, to create a smooth transition from one page to the next as the visitor navigates the website. When a visitor clicks a link to another page, the current page should fade to white before the next page loads. The next page would start from a white background, and then the content would animate smoothly onto the page. This makes for a pleasant and consistent user experience.

To achieve this transition effect, I needed to use a jQuery preloader plugin, such as jPreLoader orQueryLoader2. This ensures that images load before being animated onto the page (otherwise, the animations would occur before the images have loaded). When it comes to Web development, jQuery plugins shouldn’t be your first option because you rely on jQuery and it’s a performance hit. It’s always a better idea to search for more lightweight, single-purpose JavaScript libraries and use them instead. You could also use CSS transitions in some cases.

I’m not a fan of preloaders in general because the user has to wait until the page loads to see anything, but using one is necessary to achieve the effect I want. I’m going to experiment with hiding the preloader when the page loads quickly, and introduce it only on long page loads. This means that most people would simply see one page seamlessly fade to the next, without a preloader being shown. I’d be interested to hear of any other methods to achieve page transitions without the need for a preloader.

Here is a simple jQuery function to fade out the page when the visitor clicks a link:


/* 
* Function to animate leaving a page
*/
$.fn.leavePage = function() { 	
  	
	this.click(function(event){

		// Don't go to the next page yet.
		event.preventDefault();
		linkLocation = this.href;
		
		// Fade out this page first.
		$('body').fadeOut(500, function(){
			
			// Then go to the next page.
			window.location = linkLocation;
		});      
	}); 
};


/* 
* Call the leavePage function upon link clicks with the "transition" class
*/
$('.transition').leavePage();

I want the leavePage animation to happen when visitors click on a link to another page of my website, so I simply added a transition class to the appropriate links. When a visitor clicks on any link with the transition class, the leavePage animation is triggered. This example is simple, but you can build on it for more complex animation.

So, the user has clicked a link, the current page has faded out, and they’ve landed on the next page. What happens now? Our jQuery preloader takes care of the rest. The preloader basically displays an overlay that covers the page as it loads. Once the loading is complete, the overlay fades away to reveal the page. Of course, you can create your own custom animation to animate content onto the page in a more interesting way.

I won’t get into much detail because there are many ways to animate content onto the page. You could slide content in from the side, one element after another, or fade in elements from top to bottom. Basically you just need to write a function to animate content onto the page, and then call this function once the page has completely loaded. Luckily, both jQuery preloaders mentioned above have callback functions that enable you to call an animation function after the page has completely loaded.

PREVENT FLASH OF UNSTYLED CONTENT

One of the most annoying issues I faced in trying to achieve the smooth transition between pages was the flash of unstyled content (FOUC) before the jQuery preloader had even started. It wasn’t always there, but every now and then I saw some content flash onto the page before the animation had even started. Luckily, I found a clean and simple way to prevent FOUC that works perfectly.

ANIMATE CONTENT ON SCROLL

I love the idea of including subtle animations as the visitor scrolls down the page. It’s become a bit of a trend recently, and I think it improves the user experience and adds a touch of polish. I use a simple yet powerful jQuery plugin called Waypoints to create the on-scroll animations. It enables you to trigger animations at different page scroll distances.

If you’re looking for an easy way to do more complex animations on scroll, then check out theSuperScrollorama jQuery plugin.

CUSTOM WORDPRESS DEVELOPMENT

I decided to build my website in WordPress, mainly because I’m familiar with it and wanted blogging functionality. Being able to easily install plugins to add functionality is also a nice time-saver.Installing WordPress on a server and turning static HTML pages into a WordPress theme is a pretty simple process. If you’re not familiar with WordPress, you could always use another platform, such asDrupal. Or feel free to just build from scratch in PHP (depending on the complexity of the website).

Because some of my pages have quite varied layouts, I needed a few custom page templates. For instance, I couldn’t use a standard WordPress page for my home page because that design is quite different. So, I created a custom template for the home page. Creating a custom page template in WordPress is quite easy. I also created custom templates for my portfolio item pages and contact page.

In order to separate my portfolio item posts from my blog posts, I created a custom post typeespecially for my portfolio items. You might be able to get away with displaying your portfolio items as blog posts and categorizing them in a “portfolio” category, to separate them from standard blog posts. I needed the flexibility of a custom post type with a different layout. I won’t get into any more detail about WordPress development because plenty of great WordPress documentation is already out there.

Testing and Analytics

TEST ACROSS BROWSERS

I’m sure you’re all aware of the importance of testing to ensure that your website renders correctlyacross relevant browsers. You’ll notice that I didn’t say “all browsers,” because you really only need to ensure that your website renders properly for your particular audience. If you know that all of your visitors will be using modern browsers, then you don’t need to spend valuable time and effort supporting old ones.

major browsers
Test your website on the major browsers.

So, how do you test a website across all relevant browsers? If you’re on a Mac like me, then just download all modern browsers, including Chrome, Safari, Opera and Firefox. But how do you test Internet Explorer on a Mac? One simple and free way is to set up a virtual machine running Windows.

You can also use an Internet Explorer emulator, such as IE Tester. Or sign up to a service such asSpoon or BrowserStack, which allows you to test the website on all major browsers, including Internet Explorer 6, 7, 8, 9 and 10. Rather than leave cross-browser testing until the end, test the website every now and then during the development process.

SET UP GOOGLE ANALYTICS

Add Google Analytics to your website to collect valuable statistics on visitors. You’ll know the location of visitors and whether they’re arriving via Google searches or from referring websites. One of your blog posts could get mentioned on another website; if you’re not monitoring your traffic sources, you might not even know about it. Analytics also help you build a profile of visitors, including their country of origin and browser. You can use this data on an ongoing basis to optimize the website for visitors. Setting up Google Analytics on your website is free and takes only a few minutes. Simply sign up, copy and paste the small JavaScript snippet into the footer of your website, and you’re ready to go!

Time To Launch

So, we’ve designed, built and tested our new portfolio, and we’re finally ready to launch — high five! This is one of those experiences you simply shouldn’t miss out on as a designer. I had a great time creating my website and learned a lot in the process. Sure, there were hurdles along the way, but isn’t that what makes design so interesting? I’d love to hear about your experiences in creating your own portfolio.

Hopefully, hearing about my journey will help and inspire you to create your own website or to finally start that redesign you’ve been contemplating for the past few years. So, get out your headphones, knuckle down, and start pushing those pixels. I wish you all the best on your epic quest ahead.

via smashingmagazine.com

Frontend Development

Imagem

 

Continuar a ler

25 Essential Sass and Compass Tools

Imagem

CSS‘ simplicity is one of its defining features, and a big reason for its popularity. However, as websites and applications become more complex, the size and complexity of stylesheets also increase. CSS can quickly become verbose and repetitive.

But a preprocessor like Sass expands the capabilities of CSS by allowing you to use variables to store values, create mixins for common snippets, nest declarations and help improve the maintainability of the entire project.

Created in 2006, Sass has two syntaxes: the original (also called the “indented syntax”) and SCSS, or “Sassy CSS,” the more popular of the two, as it makes converting an existing website to Sass simple (by changing the file extension from .css to .scss). It doesn’t depend on indentation — it’s written just like CSS, making it easier to adopt.

Compass is the companion open-source CSS authoring framework for Sass. 

There are a variety of tutorialsguides, podcasts, videos, presentations and even books onSass. In this article, we’ll cover the best practical resources and applications to kickstart or advance your Sass knowledge.

Have we missed one of your preferred Sass and Compass resources? If so, please share it with our readers in the comments below.

1. The Sass Way

The Sass Way covers the latest news and topics on crafting CSS using Sass and Compass, with articles, resources and tutorials to suit both beginners and advanced users. With a team of writers and contributors, it’s regularly updated, and you can follow on RSS, Twitter andFacebook.

2. Compass.app

Compass.app is a menu bar-only app for Sass and Compass that helps to compile stylesheets easily, without resorting to a command line interface. It’s written in Java (JRuby) and is cross-platform, with no need to install a Ruby environment to use it. It boasts both LiveReload support and Compass Extensions support.

3. Scout

Scout is a cross-platform app that runs Sass and Compass in a self-contained Ruby environment, letting you manage your projects effortlessly. There’s no need to deal with setting up Ruby or learning command line. Scout does all the “heavy lifting” and aims to help improve your CSS workflow by giving you more control, organization and optimization.

4. Compass Recipes

Providing a host of CSS recipes made with Compass and Sass, all ready to use, Compass Recipes offers a wealth of backgrounds, effects, icon fonts, forms, layouts, media queries and much more. It’s also hosted on GitHub, available to fork.

5. Bourbon

Bourbon is a simple, lightweight and comprehensive library of Sass mixins designed to be simple and easy to use. No configuration is required — the mixins aim to be as vanilla as possible, which means they should be close to the original CSS syntax. The prefixes also ensure graceful degradation for older browsers.

6. Bourbon Neat

 

 

Neat is a semantic grid framework built on top of Sass and Bourbon. It’s simple yet powerful enough to handle any responsive layout. It promotes clean, semantic markup, relying entirely on Sass mixins, and does not pollute your HTML with presentation classes and extra wrapping divs.

7. Susy

Susy provides responsive grids for Compass, filling the void left when grids were stripped from Compass. You can quickly add media-query breakpoints for new layouts, or create your own math using Susy’s array of grid helpers. It has the power to help you build a site in minutes, or create a scalable grid library for use in large projects.

8. Codekit

Codekit is a powerful compiler that processes Sass, Compass, Less, Stylus, Jade, Haml, Slim, CoffeeScript and Javascript files automatically each time you save. With live browser reloads, image optimization and easy debugging, it makes working with Compass and Sass a breeze. The app also offers team collaboration and helps reduce load times by combining and minifying files.

9. Sassy Buttons

 

 

Sassy Buttons is a compass extension that helps you create customizable, attractive CSS3 buttons that are cross-browser compatible, using only a few lines of Sass. The extension gives you a set of mixins and defaults to create your custom buttons. The provided defaults can be customized, with five different gradients and three text styles to choose from.

10. LiveReload

LiveReload resides in your menu bar and monitors changes in the file system. As soon as you save a file, it is preprocessed as required, and the browser is refreshed. It ships with SASS, Compass, LESS, Stylus, CoffeeScript, IcedCoffeeScript, Eco, SLIM, HAML and Jade, and is controlled by two main checkboxes, so you won’t get lost.

11. Hammer

Hammer has been dubbed a “game changer” for web development. It ships with built-in support for Sass (with Bourbon), with automatic language compilation, to HTML, CSS and JavaScript. It boasts HTML includes, clever paths, variables, auto reload, to-dos and dynamic image placeholders. Also of interest is companion menu bar app Anvil, which runs local Hammer builds, and Rock Hammer, a curated project library for Hammer.

12. Forge

Forge is a free command-line toolkit for bootstrapping and developing WordPress themes in a tidy environment, using front-end languages like Sass, Less and CoffeeScript. It creates a source folder with base template files, SCSS files and theme options, then automatically compiles to your local WordPress install(s) as you save changes. When you are ready to distribute your theme, Forge will build it to a folder of your choice or bundle the theme into an easily installed zip package.

13. Normalize.css (with Sass or Compass)

Normalize.css is a popular HTML5-ready alternative to CSS resets. It makes browsers render all elements more consistently and in line with modern standards, precisely targeting only the styles that need normalizing. This is the Sass/Compass port of that file, which utilizes legacy IE support variables, a CSS3 box sizing mixin and vertical rhythm mixins.

14. Sass for WordPress

Sass for WordPress is a plugin that enables the use of Sass in WordPress projects, with support for both Sass and SCSS syntax. It watches for changes to your Sass files and re-compiles your CSS when needed. We recommend you run the plugin locally when developing your theme(s) and upload the compiled CSS along with the reset of your theme, if you can’t or don’t want to install the Sass and Compass gems on your hosting environment.

15. Sassaparilla

 

 

Sassaparilla is a fast way to start your responsive web design projects, harnessing the power of Sass and Compass. Its core focus is on better, beautiful typography with the correct vertical rhythm. It allows you to work in pixels, then compiles in Ems, and works with CSS variables, keeping them all in one place for safe keeping. Setup is simple, with extensive documentation, available on GitHub to fork.

16. Sass Modular Scale

Sassy Modular Scale is a Sass-based mixin that calculates the incremental values of the modular scale in proportion to a set size and ratio. It was inspired by and adapted from Tim Brown’s Modular Scale, and can be used as a Compass Extension or installed as a Ruby gem. Included are functions for a number of classic design and musical scale ratios, with the ability to add your own ratios, as well.

17. MVCSS

MVCSS is a Sass-based CSS architecture for creating predictable and maintainable application style, broken down into three primary sections: application, core and modules. The architecture and accompanying Styleguide and Library mesh preferred practices and other well-documented methods, such as OOCSSBEM and SMACSS, into one place.

18. Bootstrap Sass

Bootstrap Sass is a Sass-powered version of Twitter’s Bootstrap, ready to drop right into your Sass-powered projects. Installation is straightforward: Set up your Ruby On Rails installation, import Bootstrap in an SCSS file to get of all Bootstrap’s styles, mixins and variables, then include Bootstrap’s JavaScript files. Once you have installed the gem and created a new project, you will start with a styles.scss file ready for your alterations, a compiled stylesheet and a copy of the Bootstrap JavaScript and images in their respective folders.

19. Prepros

Prepros is an app dedicated to making compiling code easier. It compiles all of your Sass, Scss, Compass, Less, Jade, Haml and CoffeeScript in real time, with live browser refresh to keep your preprocessing workflow seamless. It has no dependencies and features a built-in HTTP server, background file watch, error notification and live CSS injection. There is also a Chrome Extension for Live Browser Refresh, but please note, it is a Windows-only application.

20. Assembling Sass

 

 

Assembling Sass is a free online course from Code School to learn Sass and start improving your front-end workflow, so you can use Sass for efficient, time-saving styling on large-scale applications. It boasts a solid understanding of Sass, from the foundation to variables, mixins and CSS management to simplifying and optimizing your responsive workflow.

21. Sass Style Guide

CSS Style Guides are common; however, Chris Coyier of CSS Tricks extends this idea to cover choices unique to Sass. While there are common rules you should follow for any style guide, this is a specific list to Sass, including guidelines on nesting, variables, vendor and global dependancies, partials, line mapping, comments, media queries and CSS.

22. FireSass (for Firebug)

FireSass allows Firebug to display the original Sass filename and line number of Sass-generated CSS styles, making it useful for Sass development. To use, just download and install FireSass, then enable Sass’s “debug_info” option. Please note: It hasn’t been updated for some months, but it’s worth exploring as a useful tool in your workflow.

23. Zocial

Zocial is a CSS3 social buttons Sass framework. And the vector icons are implemented with a Sass @font-face mixin, usable as a Compass extension. The project includes buttons for Twitter, Facebook, Google+, GitHub, RSS, Smashing Magazine and many more. There is also full documentation on how to get started.

24. Breakpoint

Breakpoint makes writing media queries in Sass super simple — just create a variable using a simplified syntax, based on most commonly used media queries, then call it using the “breakpoint” mixin. Breakpoint handles all of the heavy lifting, from writing the media query itself to handling cross-browser compatibility issues.

25. Grails Sass/Scss Plugin

Grails is an open source, full stack web application framework, used by companies such as LinkedIn, Sky and Netflix. It takes advantage of the Groovy programming language to provide a productive and streamlined development experience. This plugin adds Compass, Sass and Scss support to Grails, and automatically compiles the code.

via Mashable

Brackets open-source code editor built with the web for the web

Imagem

About Brackets

Brackets is an open-source editor for web design and development built on top of web technologies such as HTML, CSS and JavaScript. The project was created and is maintained by Adobe, and is released under an MIT License.

 

Guiding Ideas
FOR THE WEB, BY THE WEB

Brackets is built using HTML, CSS and JavaScript. If you can code in Brackets, you can code on Brackets.

OPEN DEVELOPMENT WORKS
Brackets, is a fully open-source, community-driven project. Want to influence its direction? Join the developer list and start contributing.

TOOLS SHOULDN’T GET IN YOUR WAY
Rather than clutter your workspace with floating panels, toolbars and icons, Brackets focuses on providing “Quick Edit” in-line views that provide context-sensitive access to your content, without taking you away from your code.

WORKS WITH YOUR BROWSER
The browser is your design view. Brackets hooks up directly to the browser, allowing you to design and develop in the same environment that you deploy.

 

An experiment in extracting content from a Photoshop design comp from within a code editor. NOTE: This is just a prototype. It’s not yet included in Brackets or Edge Code.

 

See also the Brackets YouTube channel which has some great intro videos of Brackets.

Download Brackets