Removing Stumbling Blocks In Mobile Forms

A few weeks ago, I was quite surprised when I saw the pavement quickly approaching while I was out for a walk. Laying there stunned, I soon realized what had happened: I fell. Ouch. B-minus. I normally try to be as attentive as possible, but this time a big crack in the pavement caught my shoe and threw me completely off balance.

After reporting my clumsy accident to friends and family, I instantly received comments like: “be more careful” or “better watch out next time”. In the end, I started to defend myself—if that crack would not have been there, I most likely would not have been face-planted.

 

When it comes to filling out forms on a mobile phone, I have observed many users running into a similar experience, merely less painful in its physical aspect. Many elements within a mobile form affect how smoothly users will get to a service or product hiding behind a form of any kind.

There are several factors that can be considered to be stumbling blocks throughout the journey of filling out a form. Specifically on a portable device, this journey is complicated by the fact that we have to consider contextual parameters such as time, location, or limited input options, in comparison to a firm desktop experience. In this post we will look at the most common stumbling blocks for mobile devices. Moreover, I will discuss design strategies to avoid stumbling blocks and to facilitate a safe and quick stroll through forms for mobile users.

[Note: Have you already pre-ordered your copy of our Printed Smashing Book #3? The book is a professional guide on how to redesign websites and it also introduces a whole new mindset for progressive Web design, written by experts for you.]

Help Users Stay On The Right Path

Some might say that elegantly designed forms can be compared to the likes of an efficient traffic system—as soon as you enter the road, you also enter a world of permanent and dynamic guidance that helps navigate you safely to your final destination. For example, the crosswalk signals tell you when it is okay to cross the street, just as the street signs signal the names of the streets that you are on.

Street lights are also provided to help you navigate through difficult terrain in the dark. Keeping in mind your ultimate destination, you ultimately decide where to go, step by step. Road signs present your options and point out limitations. You can follow the traffic, take a short cut, or obey the navigation system on your phone.

In this situation, comprehensible and timely feedback is vital. The same applies to mobile form design. Signposts and immediate feedback encourage users to complete a form. Although inputting data on a mobile device can be very cumbersome, many people happily key in vast amounts of information when using services such as Twitter, Facebook, or text messaging on their mobile devices. Such services are good examples of how seemingly poor interfaces will not stop people from using a much wanted service, as long as the return of their effort is evident. People who understand and trust the outcome of their journey are less likely to hesitate about wandering even down a difficult path.

However evident the effort of typing on a mobile device might be, inputting data can take some time and can also become frustrating very quickly. Letting your users know almost instantly that they provide data in the wrong format, or that their username is already taken, is important. In the same way, a form can tell them where they are within the form, to make sure they don’t type the right data into the wrong field.

Furthermore, portable devices are more likely to suffer from connection errors and slow connections than desktop devices. Client-side validation techniques, such as HTML5/CSS based or optimized JavaScriptapproaches, have proven to be advantageous in this case, as they reduce the amount of data transfer to easily allow UI enhancements while coping with less stable connections. But keep in mind when using JavaScript for form validation, that some mobile browsers (such as the Blackberry OS browsers—except of the most recent one), are not JavaScript enabled per default. Therefore, users who are unable or uninformed about how to change their settings will benefit from implementations following the concept of progressive enhancementThe less time users spend on retyping data or waiting for data to be validated the quicker and happier they will get through a form.

Minimize Steps And Crossroads

One of the biggest take-aways from the Keystroke-level model in form design is that navigating along interactive elements requires both physical as well as mental activity. This can have a severe impact, especially on a mobile phone, based on the natural way of interacting with a portable device. Every input field within a form requires users to scroll through it, understand its meaning, focus on it, and then provide the correct information.

Due to the fact that people use their devices in a lot of different ways and these devices vary “greatly”, form elements that are spread over several input fields are prone to be rendered on a mobile device in a way unintended by the designers. As an example, during user testing sessions, I sometimes see users getting stuck on providing their phone numbers when having zoomed in on the form. The typical behavior is to enter their entire number into the first box provided for the area-code, completely missing the second input field. After submitting the form, they are puzzled about why there are two fields and the corresponding error message.

Phone number example
Separated telephone number fields (left) in comparison to a unified field (right) with optmized input type and a label within the field to remind users about the area code.

To allow users to get through a form quickly, there are a variety of compression techniques to reduce the amount of fields needed to provide certain data. Many of them require more post-processing on the back-end. If you can’t dissect numbers on the back-end, smart defaults or clever instructions work just as good. Some of them simply require a thought about the way of keying information into a field. For example, using a predefined drop down to provide the date of birth, rather than a loose input field or htlm5 optimized input fields for numbers,mail addresses, or other types of data, when appropriate. Dynamic input masks can help users to provide even quite complicated types of data with ease. Moreover, it will just take you a minimal effort of scripting.

At other times, forms might benefit from rather unconventional approaches such as text input fields for a quick and easy country selection. Furthermore, there are a variety of libaries such as jQuery mobile to optimize input fields and to ease validation, even for complex data.

Overall, our goal is to allow people to navigate through the form, achieving the quickest possible success with the least necessary effort. At all times we want them to feel that they are doing the right thing, and that their time is well spent. Brevity is crucial. Some people get stressed when spending too much time on trying to find hidden checkboxes, switching between keyboard layouts, or attempting to understand skewed marketing questions. Some people get physically tired answering redundant questions, filling unnecessary blanks, or scrolling up and down to find a required field that they just missed. To reduce cognitive load as well as physical effort it is important to remove optional steps from a user’s radar of attention, simplify the way of inputting information wherever possible, and to create a comprehensible flow throughout the form. If the process is too complicated (or the effort too high) a dropout is quite likely.

In the end, fine-tuned and streamlined forms will save your company phone calls from frustrated users and lead to more and more happy ones as it requires them to spend less time navigating through input fields and figuring out their meanings.

Uitilize Signposts And Mark Paths Clearly

Another great design concept to exploit for form designs are the Gestalt laws of grouping to help support the orientation of users. Applying grouping principles to a multiple questions form allows us to structure content, to create a visual flow, and to group related form elements.

In many projects I have seen design teams arguing about whether to break down a rather long form for mobile devices into several short pages or rather for one long page. Either way, there are endless possibilities for both design approaches to elegantly confirm users about their progress. This helps them recover from their errors, and to make them feel confident that the data being saved will not have to be reentered (in case they loose the connection, or accidentily close the application).

Both design approaches have their individual benefits, the only spanning factor here is the breakdown of the long form into meaningful and manageable chunks. For single-page designs, this means that it should even be possible to visually distinguish the single steps from one another. Especially with portable devices, the longer a form page is, the faster users will be able to scroll through, in case they have to jump between fields. Poor visual guidance in this way will result in users missing to fill out fields, losing sight of fields, and/or getting frustrated by searching for them after being presented error messages. White space and general grouping techniques are therefore vital to create visual guidance throughout a form.

Visual differentiation example
Using color coding to highlight the active input field from other input fields (left) or to visually differentiate sections from one another in a long form (right).

Distinct grouping in interface design is a basic exercise because of its power for reducing processing speed and cognitive load. A while back, Matteo Penzo investigated the effect of different visual grouping techniques for a typical sign-up process. In his eye-tracking study, he analyzed the importance of label alignment for input fields and highlighted the superiority of top-aligned labels in many cases. Easy to distinguish input fields with top-aligned labels in close distance to one another allowed users to look at the label and the field in one go.

Other techniques required higher processing efforts, thus increasing the coginitve load and the time it takes to process the entire form. Less effort is good, and despite the granular example, we have to keep in mind that all these factors add up through input elements, the different sections, and the form as a whole within the website. The more complex the form, the bigger the effects of distinct grouping. Reducing the need for visual fixationsallows a reduction in cognitive load, helping users to focus on their task and allowing your form to function almost like a navigation system—helping users to find their way to the goal.

By considering the effects of distinct groupings, we support our human capability to naturally perceive objects as organized patterns and take away the need for users to create an understanding about the form by reading the questions in depth, relating to the elements mentally. Naturally we want users to read through the questions. But similar to a vis-à-vis conversation, we can use facial expressions in combination with the words we say to underline our message and to get it across more easily.

Allow For Platform-Dependent Shortcuts

One of the major reasons that users get stuck on forms when filling them out on portable devices is limited visibility. Users, who are entering key information into a form’s field, usually have more than half of their screens covered with the keyboard, input suggestions, and other status information. To navigate between fields, and for general orientation, I see in many testing sessions where participants frequently try to disengage the onscreen keyboard, when looking for certain fields, or scrolling through the form to increase visibility.

However, many people will use the “return” button on the bottom right of the keyboard to disengage it after keying information into the field, or even to confirm their input for the single field. Although this approach helps many users to get rid of the keyboard (and to see the form on their whole screen), pressing the button also means, in many cases, that the form will be sent to the server straight away. Therefore, many users will be confused by a loading screen and the need to wait for a server response after pressing the “return” button.

Onscreen keyboard example
The return button on Android (left) and iOS (right) is very salient within Web forms, and pressed by many users without the intent to send off the form.

Using the keyboard to send off a form is very handy, when using a single field form such as a search box. However, for multiple question forms on portable devices, it is important to check the form on the client side before sending it off, when users press the “return” button (by accident) to avoid confusing loading times. To ensure that your form is not submitted by accident, there are plenty of client-side validation tools; jQuery plugins, for example, provide everything we need.

Provide Contextual And Personalized Guidance

In short, be a tour guide. After all, designing a good form is like planning a hike with friends or family. Not only do we need to find out who will be on the trek, we need to plan for breaks, points of interest, and unguided side-treks in order to make sure everybody gets the most of their hike. However, as most of you will know, most hikes are not free of problems, and difficulties are inevitable; people can wander off, some might need help or more time to get through challenging passages, weather conditions are bound to change, and general mistakes happen. It is seldom that all of these inevitable difficulties will evolve into a real problem as long as we are prepared. Similarly to a hike, difficult situations are all about awarness, clear communication, and guidance. All it takes is a good approach to inform users what their problem is and what they can do to fix it.

There are plenty of techniques to help strayed users find their way back to the right path. Putting messages under input fields, for example, has proven to be quite a solid approach for telling users what has gone wrong. In combination with noticeable color coding (i.e. red for errors, or green for confirmation) you can be sure to get the necessary attention.

Error message example
Two designs showing prominent error messages for misspelling hints (left) and general processing errors (right).

Another important aspect that is often neglected when it comes to messages within forms is the choice of words. On the one hand this refers to what we say, and on the other, it is about how we say it. Your error messages or instructions will most likely be read by a nontechnical human being. Let’s create messages as we would be talking directly to your user: avoid jargon, be tactful and brief. There are many useful recommendations on how to design effective error messages. Most importantly, we want our users to understand what happened and why it happened in a clear fashion.

On top of that, most users will not only appreciate clear notification, but also advice on how to fix the problem right away. Dyson, for example, managed to reduce support calls and increase the confidence in their products with a simple change in the way they display error messages. Rather then showing the problem (e.g. “Low Voltage Error”), they switched to displaying possible solutions (e.g. “Check Power Cable”). In this way, they are not only making their users aware of problems, they are also giving them guidance on how to fix them. On your form, many different users will possibly make similar mistakes. If possible, it is a good idea to analyze inputs to include a solution for the problem that helps users to recover them quickly. Ideally it even relates to the data they wrongly provided.

Wherever error messages pop up troughout the day, try to record them. At the end of the day, those records can tell us where stumbling blocks are still hiding, and what we need to improve to smooth out the path.

Conclusion

Mistakes happen—c’est la vie. Ideally though, we should aim to avoid most of the tripping hazards that delay so many users from filling out forms on a portable device. Similar to an uneventful stroll on the pavement, the smoother the path is to the destination, the more likely users will complete the journey. Easy orientation, no detours, clarity, and a little bit of guidance are a traveler’s best friends. And experience shows that the further users get before stumbling upon an error, the more likely they will put extra effort into completing the task.

Ultimately, other stumbling blocks may exist apart from the ones I discussed. So try to connect your analytics to the activity on the pages to find out where people drop out of the process. This will show where stumbling blocks may exist and help to remove one block after the other to ensure the user the smoothest journey.

Best Practices: Responsive Web Development

Web development has evolved in a different angle and as always it is quite challenging. When people began using websites on devices of different sizes, there came a need to design a different website for each type of device. It all seemed to be working well until businesses started realizing that not all of the content can be provided on a website designed for a small device. With such a limitation they were not able to get their messages to the viewers and to top it all off, visitors weren’t as satisfied with it as they were on normal websites. The quest to find a solution to this issue led the developers to design responsive websites.

Websites are now moving to a one-size-fits-all level and to make them fluid enough to adjust themselves to the different sizes of the devices they are viewed on, there needs to be a lot of things done. A lot in terms of codes, frame size, content, images, and every bit that forms a website. Of course, it is not easy to think of stripping down all the codes written that took months of hard work and maintenance to build a totally new site. However, businesses are now in a position to bite the bullet and make it happen (strive, to be more appropriate). There’re a lot of things to consider before revamping your website to make it fit the tiniest screen to the largest screen and yet give the nearly-same feel to the visitors. Let’s take a glance at what should be considered while designing a responsive website.

Contextual Content:

In simple words, contextual content can be described as varying or cropping the content according to the context. The context here is the kind of device the website is going to be accessed on. Design the website in such a way that it alters itself to fit the screen size and the frames stack themselves in the right way so that the visitors find it no different than the one they saw on a bigger screen.

Get into the details:

It is necessary to get into the details when designing a responsive website. All the CSS that you use to hide certain content for users who access your website on a small screen won’t fail to reduce the size of the webpage. Therefore, make sure that you don’t bloat your website with content in order to keep them light.

Keep Optimizing:

Another thing to be considered is optimization. It has to be done not just to the content but to the design and every aspect of the website. There are new devices in different sizes and with different features. If a user doesn’t have a particular feature on his device, he may not be able to access your website and get what he needs. Therefore, consider all such possibilities while designing your website.

Start with the smallest screen:

It is easy to think of a full sized website on a big screen and cropping it to fit smaller screen sizes. However, it is actually effective to design a website for the smallest screen first and then expand it to fit bigger screens. Though it seems to be a complex process, it is effective because it is easy to add content than reduce it. Therefore, start designing for a small screen and gradually expand it for a big screen experience.

These are some of the essential things to be borne in mind while designing a responsive website. Incorporating these in your web development plan will help you achieve better results.

A simple guide to responsive typography

The vast majority of articles talking about responsive design focus on two main areas: a fluid, flexible grid, and fluid, flexible images. What many of them don’t talk about is typography.

And yet, for the majority of websites the text, the content, is the most important element.

Granted, for sites where images or video are the primary content, responsive type is a bit less important, but it still shouldn’t be overlooked.

The good news is that responsive typography isn’t particularly difficult to achieve. We just need to take some time to think through how our type should respond to changes in screen size, and then implement those changes.

 

Principles of responsive type

There are two main principles to creating effective responsive typography. The first is resizable type. That means type that not only resizes based on the size of the screen, but that is also resizable by the user.

The second is optimized line lengths, which maintain readability. That means for some screens, keeping the content area smaller and the line lengths shorter makes more sense, even though the content theoretically could stretch wider.

Resizable type using rems

Most designers use either pixels or ems for sizing their type. Ems are a better option, as they allow users to resize type in their browser. But ems are relative to the parent element, meaning they’re more complicated to use than pixels, which is only compounded in responsive designs where there are more sizes and relationships to keep track of.

Rems offer a better alternative to ems. They work in an almost identical way, except for one key difference: rem units are relative to the html element, rather than individual parent elements. This makes maintaining proper sizing of your type much more straightforward.

Rem units are now supported in all of the major modern browsers, including Opera from version 11.6 and IE9. While you may want to include fallbacks for earlier browsers, there is wide enough support for rems to use them now.

Since you’ll be using rem units for sizing type, make sure you apply the reset to your htmlelement and not your body element. So it should look like this:

html { font-size:100%; } 

Now your rem units will be applied to the default font size for the device.

Next you’ll need to specify the font size for each display size. I recommend experimenting with actual font sizes on various devices to see what looks best. It’s largely dependent on the typefaces you’ve selected, as well as your overall design.

You’ll likely want to specify multiple font sizes based on different screen sizes, which is a pretty straight-forward thing to do. As an example, your CSS might look something like this:

@media (max-width: 640px) { body {font-size:1.2rem;} } @media (min-width: 640px) { body {font-size:1rem;} } @media (min-width:960px) { body {font-size:1.2rem;} } @media (min-width:1100px) { body {font-size:1.5rem;} } 

Granted, this is a simplified code for this article, but gives you a starting point. You might notice that for the smallest screens, a slightly larger font size is specified. This is because larger font sizes are generally easier to read on small screens.

Of course, you’ll want to make additional specifications for things like your h1 elements and such. I highly recommend using a tool like Web Font Specimen for seeing how your type will actually look.

Maintaining optimum line lengths

While resizable type is a pretty straightforward concept, maintaining proper line lengths across multiple devices gets a bit tricker. There has been quite a bit of debate as to what the optimum line length is for readability, but according to the Baymard Institute, the consensus seems to be somewhere between 50 and 75 characters per line.

They also recommend using a fixed width container for your content, but that defeats the purpose of a responsive design, so we need to approach things a bit differently if we want to maintain responsiveness with optimized line lengths.

First, look at the different screen sizes you’ll be designing for and figure out what size font you should use to get roughly 50 characters on a line. For very small screens, you may need to go below 50 characters per line in order to maintain a readable font size, but 50 should be the goal. This gives us a good starting point for our font size.

We should also set maximum widths (or break points) for text content areas. Look at the size of the type you’re using for a given screen size, and then determine the width of the content container when you have roughly 75 characters per line. This isn’t going to be exact unless you’re using a monospace font, but you should be able to come up with an average pretty easily. That becomes our maximum container width.

Let’s say that the default font size for a given device is 16px, and you want your font size to be 20px (let’s say we’re using a serif typeface like Droid Serif for this example). That means you’ll specify the type to be 1.25rem. At that size, you’ll want a container width of around 675px wide. This gives us a character count in the 60s on average, which is right in our target width.

To specify the container width, just use this code:

@media (min-width: 950px) { .container {width:675px;} } 

You can set those maximum line widths for each display size, or just for specific ones. With smaller screens, you may want to leave the container width out and let the type spread across the entire width of the screen.

Now, with much larger screens, you may want to look at splitting your content into multiple columns. Let’s say, for example, that you’re working with an iPad in landscape view. Your screen width is 2048 pixels. Stretching your lines to fill the screen makes it difficult to read, but centering your content and keeping your line lengths shorter kind of defeats the purpose of viewing content in landscape mode.

So instead, set your type in two columns (or even three, depending on your font size). CSS3′s multi-column specification makes it very easy to split your text into multiple columns without having to change your entire layout. Combine that with media queries and you now have a content layout that splits into two or three columns for larger screens, maintaining both a highly legible type size and a highly readable line length.

Again, the code for doing this is pretty simple:

@media (min-width:1140px) { .content { -webkit-column-count: 2; -webkit-column-gap: 1em; -moz-column-count: 2; -moz-column-gap: 1em; column-count: 2; column-gap: 1em; } } 

Now, on screens larger than 1140 pixels wide, you’ll get your content split into two columns, making your line lengths much more readable.

 

Using alternate typefaces

One thing that’s often overlooked when talking about responsive typography, is the idea that different typefaces may not work well at different sizes. This is especially true for display fonts.

Does that mean you should avoid using these fonts in your responsive designs? Of course not. Instead, just specify different fonts for various elements in your larger or smaller layouts.

For example, with a design for desktop computers, you might want to use a font like League Script for your headers. But on a smaller display, such as an iPhone, you’ll either need to make it so large that it dominates the content, or it will be very hard to read.

league script

What we can do here is use League Script for the larger displays (iPad, desktop, etc.), while switching to a larger version of the body font for smaller displays (like the iPhone or other smartphones).

To do this, you’d simply specify something like this:

@media (min-width:960px) { h1 {font-family:"League Script", script;} } @media (max-width:960px) { h1 {font-family:"Droid Serif", serif;} } 

Of course this can be done for more than just your headings, too.

 

Conclusion

While responsive design has largely focused on images and overall layout, typography is just as important as both of those things. The best part is that it’s not particularly difficult to adapt and optimize your typography for a responsive design.

It’s vital that you put the same time and effort into it that you put into other elements of your design. Maintaining readability of your text content is a vital component to creating an optimal user experience for your visitors.

 

Do you put as much emphasis on responsive typography in your designs as you do responsive grids and images? Why or why not?

 

Source: WebdesignerDepot

 

 

 

 

What Is HTML? The Anatomy of an HTML5 Document

screenshot

This is the second article in our series on the absolute fundamentals of web development. Our first article explained in detail what HTML is on a conceptual level. We looked at what a markup language is, what tags are and how HTML compares to other important pieces of the web development puzzle such as CSS.

Join us today as we move on and take a look at each basic piece of an HTML document. I’ll explain all that stuff at the top of an HTML file that confuses you and outline the basic structure that you’ll follow for creating your own HTML files.

 

DOCTYPE

The very first thing that you typically see in an HTML file is the DOCTYPE declaration. Before HTML5, this could be a very confusing bit of code that looked something like this:

HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

 

There’s a lot going on here and every bit of it speaks to either the web browser, the reader or both. The “PUBLIC” part just speaks to the availability, the DTD stands for Document Type Definition, which declares the version of HTML being used and the final section is a URL pointing to where the DTD can be found.

The words “loose,” (or transitional) “strict” and “frameset” refer to different versions of HTML 4, which allowed for slightly different markup. These were essentially just to help transition developers from older versions of HTML.

The HTML5 DOCTYPE

There are several DOCTYPEs to choose from, which can be monumentally confusing for new developers. Fortunately, HTML5 completely simplifies the situation with a refreshingly simple DOCTYPE:

<!--DOCTYPE HTML>

 

See how easy that is by comparison? It really is a beautiful thing.

What Does the DOCTYPE Do?

Now we’ve seen what a DOCTYPE looks like but we haven’t really discussed what it does. The answer is that the DOCTYPE tells the browser which type of HTML to expect, which in turn affects how the browser renders the page.

As you explore web development more, you’ll learn that there’s a huge emphasis on “standards-based development.” The general idea is that if we all follow certain rules and standards, web development will be a more cohesive and consistent practice. This is better for developers, better for browsers and most importantly, better for users.

DOCTYPEs were originally designed to trigger “standards mode” in browsers, which meant that the page was rendered using newer web standards. Similarly, older pages without a DOCTYPE triggered “quirks mode” in browsers, which allowed for older practices to be used that wouldn’t function properly in standards mode.

The new, very simple HTML5 DOCTYPE is supported in all major browsers, and it triggers standards mode in all of them. The DOCTYPE also helps you validateyour code, which ensures that current standards are being adhered to. Every page that you create should use a DOCTYPE and hopefully be fully standards compliant.

Root Element

After the DOCTYPE, the HTML really begins. This is indicated by the HTML Root Element. If your entire HTML is a tree, this is the root from which everything else sprouts.

The Root Element is defined by a “tag,” which we learned about in our last article. In this case, it’s the “HTML” tag.

<!--DOCTYPE HTML>

  

 

Notice that the root element includes a language attribute, in our case English. Always be sure to indicate the appropriate language for every page you create.

Everything else that we will add to this page is situated inside of the Root Element. It is the container for every scrap of information and piece of content, the only exclusion being the DOCTYPE.

Head Element

The next thing you’ll encounter in an HTML document is the “head” section. The head tag is exactly what you’d expect it to be:

<head>
  <!-- Some Code Goes Here -->
</head>

 

The stuff that goes into the head section is primarily informational, it tells both you and the browser certain things about the page such as the title, the charset, etc. This is also where you traditionally load in important external resources.

There are a few important things that go into a head tag. Let’s look at them one by one.

Meta Tags

As you can probably guess, meta tags hold metadata about the page. Metadata takes many forms and can include keywords, authors, descriptions, etc. Here are a few notable inclusions:

Charset
This is pretty boring stuff, the charset is typically set to UTF-8 and essentially tells the browser which character encoding to use.

Your pages should definitely include an indication of which charset to use. Don’t over think it, it’s just one of those things you need to stick in your template. Below is a typical charset declaration in HTML5.

<meta charset="utf-8">

 

This is yet another thing that has gotten easier with HTML5. Check out the version of this snippet required for HTML 4.01:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

 

Some other typical metatags include description and author. Here’s a quick, self-explanatory example of each of these:

Description

<meta name="description" content="Some description about your page">

 

Author

<meta name="author" content="Josh Johnson">

 

Title

Another thing that goes inside the head portion of your document is the title tag. This is a very simple piece of code that simply states whatever you’d like the title of the page to be. Here’s an example:

Design Gallery, Deals, Tutorials & Community | <a class=”zem_slink” href=”http://designshack.co.uk/&#8221; title=”Design Shack” rel=”homepage” target=”_blank”>Design Shack</a>

 

This title is usually shown to the user at the very top center of the browser window, on a tab, etc.

screenshot

Links and Scripts

The last thing we’ll discuss regarding the head tag is the inclusion of external resources. In a very simple web page, you’ll typically see these take the form of a stylesheet or script:

<link rel="stylesheet" href="style.css">
<script src="js/jquery.js"></script>

 

Here I’m essentially loading my CSS file as well as jQuery (a JavaScript library) into the page. If these resources are included in the source files but not linked to in the head section, they will not function. Note that the links for these could either point to something in the local folder hierarchy (as above) or something hosted on another web server.

The link used above for the CSS file uses a link relation (rel=”stylesheet”). For more on link relations, check out this article.

Also, as an alternative to linking to external files, you can embed code right into the head element. Here’s an example with CSS, but the same can be done via the “script” tag and JavaScript (embedded scripts are often placed at the end of the body element instead).

<style type="text/css">
	a { text-decoration: none; }
	p { color: #333; }
</style>

 

Body Element

The final portion of an HTML page is the most important. Everything inside of the body element defines the content and structure of your page. As far as development time, you’ll likely use a set template for everything above and spend a few minutes customizing it for specific projects. The rest of your HTML time will be spend inside the body element.

<body>
  <!-- Page Content Goes Here -->
</body>

 

Putting it All Together

Now that we’ve walked through each individual piece of an HTML file, let’s put it all together into one extremely basic HTML5 template.

<!--DOCTYPE HTML>

 

Design Shack


		  

 

An Overview

A thousand apologies for the mundane nature of this topic, beginners are often turned off by boredom at this point but hang in there, the real fun of HTML is everything between the body tags, which we haven’t even discussed!

All of these pieces were necessary to accurately paint the picture of what an HTML document actually is. We now see that an HTML document has a DOCTYPE that tells the browser how to render the page and helps ensure the proper standards are being used.

We also know that there’s a set hierarchy to how HTML pages are structured. Just about everything but the DOCTYPE is thrown into the root element, meaning it is the “parent element” of the head and body elements, which in turn have their own children.

screenshot

The basic structure of an HTML document is referred to as the DOM, or the Document Object Model. This is almost always metaphorically referred to as a tree and depicted like image above. Our own Jack Rocheleau wrote an in-depth look into the DOM titled Deeper Study Into the WWW’s Document Object Model. For the next set in understanding the basic structure of an HTML page, check out that article.

Conclusion

This article represents a very brief overview of how an HTML skeleton is structured and the types of things that are typically included. It is by no means exhaustive, but should serve as a good basic introduction to these topics.

When you’re just starting out in code, most people will simply give you a template for all of the code above without really explaining what it all does. This can leave a sizable hole in your education so it’s important to read through this information and attempt to understand what you can.

Stay with us in this series and check back soon as we answer another important question: What is CSS?

 

 

 

 

 

Online Code Editors That You Would Actually Consider Using

There is a huge sea of WordPress plugins that are released almost every hour throughout the world but only a few are actually useful and provide something new besides what other existing plugins are offering. From these few plugins that are new and useful that have been released in the last three months I have selected 33 that I hope will make your WordPress experience better and easier.

SlideDeck 2 Lite Responsive Content Slider

SlideDeck 2 Lite Responsive Content Slider

SlideDeck 2 for WordPress is a responsive slider plugin that lets you easily create content sliders out of almost any content. Connect to a variety of Content Sources like YouTube, Flickr, Twitter, WordPress posts and Pinterest to create gorgeous, dynamic sliders in a few clicks – no coding is required.

Nimble Portfolio

Nimble Portfolio

Using this free plugin you can transform your portfolio in to a cutting edge jQuery powered gallery that lets you feature and sort your work like a pro.

Rotating Lightbox Gallery

Rotating Lightbox Gallery

This is a highly customizable jQuery Slider plugin. You can set its width, height, pagination and other parameters.

WP Visual Pagination

WP Visual Pagination

WP VisualPagination is an advanced pagination theme framework built on top of the popular WP PageNavi plugin pre-loaded professionally designed pagination themes. WP VisualPagination allows you create or customize simple CSS pagination themes or complex image based pagination themes.

Cyclone Slider

Cyclone Slider

Uses jQuery Cycle plugin with 25+ transitions, easy-to-use interface with drag and drop functionality, multiple slideshows, individual slideshow settings, shortcode, and customizable templates.

HTML5 jQuery Audio Player

HTML5 jQuery Audio Player

This trendy looking music player lets you add a single audio track or a full playlist to your WordPress site using shortcode. You can customise the colours of the player, and also display ratings, album cover art, and buy/download link if needed. This audio player is different from others on offer because it works on all major browsers, both PC and Mac, and on mobile devices including iPhone/iPad. Plus it looks really cool!

Easy Table

Easy Table

Easy Table is a WordPress plugin that allow you to insert table in easy way. Why it’s easy? Because you don’t need to write any complicated HTML syntax. Note that this plugin is not a graphical user interface table generator, so you can simply type your table data directly in your post while you writing. No need to switch to another window nor click any toolbar button.

Capability Manager Enhanced

Capability Manager Enhanced

Capability Manager plugin provides a simple way to manage WordPress role definitions (Subscriber, Editor, etc.) View or change the capabilities of any role, add new roles, copy existing roles into new ones, and add new capabilities to existing roles. You can also delegate capabilities management to other users. In this case, some restrictions apply to this users, as they can only set/unset the capabilities they have. With the Backup/Restore tool, you can save your Roles and Capabilities before making changes and revert them if something goes wrong. You’ll find it on the Tools menu.
Drop Shadow Boxes

Drop Shadow Boxes

Drop Shadow Boxes

Drop Shadow Boxes provides an easy way to highlight important content on your posts, pages and widget areas. Personalise the box with drop shadow effects like raised, lifted and perspective and choose whether the box has an inside shadow, outside shadow and rounded corners. The plugin includes a widget and shortcode builder with a preview so you can test your box before adding it. The shadows will display correctly on most browsers – some older versions of Internet Explorer may not display the shadows – but they will display the box with the content so nothing will be missing on the page.

Auto Image Resizer Lite

Auto Image Resizer Lite

The “Auto Image Resizer” is a state of the art WordPress Plugin which reduces your uploaded images to the maximal used image dimensions of your WordPress website.

If the uploaders (author, member, whoever) browsers supports html5, gears, flash or silverlight the images will be resized directly on the client otherwise the server will do that. So the plugin works in every case regardless of the clients browser or OS.

WunderSlider Gallery

WunderSlider Gallery

This plugin provides an automated way to convert any standard WordPress gallery that is embedded on a page using the shortcode into a WunderSlider.

OSE Firewall

OSE Firewall

OSE Firewall™ – A WordPress Firewall created by Open Source Excellence. It protects your WordPress-powered blog against attacks and hacking.

Tweetily – Tweet Your Posts Automatically!

Tweetily - Tweet Your Posts Automatically!

Tweetily will automatically promote your posts or pages on Twitter to keep your content alive and drive traffic to your site. Set it and forget it!

Google Maps Widget

Google Maps Widget

Display a single-image super-fast loading Google map in a widget. A larger map with all the usual features is available on click in a lightbox.

BuddyPress Facebook

BuddyPress Facebook

Let your members and groups show their Facebook Button on their profile page and group page.

BP Extended Settings

BP Extended Settings

Extra configuration settings for BuddyPress Admins.

jsDelivr – WordPress CDN Plugin

jsDelivr - WordPress CDN Plugin

The official plugin of jsDelivr.com, a free public CDN. An easy way to integrate the service and speed up your website using our super fast CDN.

Vimeography

Vimeography

Vimeography is a WordPress plugin that allows you to create beautiful, custom video galleries in 30 seconds, tops!

Contus Video Gallery
Contus Video Gallery

BigContact Contact Page

BigContact Contact Page

Create super cool contact pages for your site. Just add a contact form to any page, display business hours, emails and phone numbers as widgets.

Facebook

Facebook

Make your WordPress site social in a couple of clicks, powered by Facebook.

SEO Internal Links

SEO Internal Links

SEO Internal Links plugin provides automatic SEO benefits for your site in addition to custom keyword lists, nofollow and much more configurable options. SEO Internal Links can automatically link keywords and phrases in your posts and comments with corresponding posts, pages, categories and tags on your blog. In case the plugin finds more of once the same word in a post, it will only change the first one. This is to avoid black seo and inconveniences to the users.

JQUERY HORIZONTAL SLIDER

JQUERY HORIZONTAL SLIDER

The Horitzontal Slider is an extremely easy way to perform your own header, banner or photo gallery for your wordpress site. You can also create slider menus. With Jquery effects, this plugin or widget will make your web so dynamical and striking.

WP-AutoSharePost

WP-AutoSharePost

This plugin automatically shares posts to facebook and twitter with predefined messages and grabs the facebook comments.

DudaMobile

DudaMobile

The DudaMobile WordPress plugin makes it easy to convert your WordPress website into a mobile-friendly site. It’s fast, free and easy. Works with all WordPress themes including websites and blogs.

Simply Instagram

Simply Instagram

The Simply Instagram plugin displays your Instagram photos in three Endpoints that Instagram offers.

WP Pinterest

WP Pinterest

Add Pinterest assets like Pin-it button, Follow button and Pinboard to your WordPress site without hassle.

Nebula Facebook Comments

Nebula Facebook Comments

Replaces the default comments functionality by Facebook’s Comments social plugin.
Easy PayPal

Easy PayPal

Easy PayPal gets you started with your online business. Use PayPal IPN to sell digital goods without a shopping cart or complicated e-commerce setup.

WP Retina 2x

WP Retina 2x

This plugin creates the image files required by the Retina (high-DPI) displays and it displays them to your visitors accordingly. Your website will now look beautiful and smooth on every device.
Maintenance

Maintenance

Maintenance

Take your site down from public view with a click of a button hiding the site when you need to change a few things or run an upgrade, making it only accessible by login and password. There is also an area to add a custom message which will be shown to the users while your site is down. Users stay on the same page when they input wrong initials.
Unique Headers

Unique Headers

Unique Headers

Adds the ability to use unique custom headers on individual pages, posts or categories.

 

 

 

10 Extremely Minimal Web Designs

 

When you search Google for examples of minimal web design, you’ll find a whole load of relevant blog entries for sure. If you’ve looked at a few of them, you’ll immediately notice that every author has a (slightly) different definition of what’s minimal and what’s not. Today I’d like to showcase websites which are – in my opinion – truly minimal. They only have the essentials of what a website needs, look lovely and communicate clearly.

Bobby Giangeruso (Stubblr) 

Bobby Giangeruso (Stubblr)

Greg Ponchak

Greg Ponchak

Ian Coyle

Ian Coyle

Joint 

Joint

Leo Babauta

Leo Babauta

Mickey & Johnny

Mickey & Johnny

Philip Oehrlein 

Philip Oehrlein

Sam Williams

Sam Williams

Second Cousins

Second Cousins

Vítor Lourenço 

Vítor Lourenço

Source: pixelclouds

 

Responsive Web Design: A Paradigm Shift in the Industry

 

Dot Com Infoway (DCI) has recently unveiled its latest infographic which puts the spotlight on one of the most recent and advanced techniques used in the web design industry. Titled “Responsive Web Design: A Paradigm Shift in the Industry”, the infographic provides insights on the concept of responsive web design and the reasons for its rising popularity.

Facts and figures about Internet usage on mobiles vs. desktops are presented in a lucid, engaging format. According to statistics, mobile Internet usage has been growing staggeringly over the past few years and is expected to overtake desktop Internet usage by the year 2013. From 800 million mobile Internet users in 2009, the count is projected to reach 1.9 billion by the year 2015.

Infographic created by Dot Com Infoway

 

 

 

 

 

Create a Stylish Tweet Book with Jquery and CSS

Twitter is a popular social networking service used by millions of users to share text-based content. It has been described as the SMS of the Internet.” We love to tweet links and ideas we are interested as well as follow other people with similar interests. Everyone loves to follow a lot of people and hence there is a possibility of missing the most important tweets.

So in this tutorial I am going to create a stylish Tweet book to keep your best friends and view their Tweets. As you complete this tutorial you will gain knowledge in working with jQuery and CSS to create a stylish book design. You will also learn to work with the Twitter API using jQuery and AJAX. So let’s get started.

Once you open the demo click on the button with the arrow to open the book. Then click on a letter to load friends. Then click view button to get the recent tweets.

%tutke

Demo | Download

Structuring Tweet Book Components

Before we start any project we need to plan what we need and how we’re going to do things. So let’s list the layout components of our Tweet Book.

  • Cover Page – This will be the initial book cover with logo, title, letters and open button.
  • Twitter Friends List – This section will have the list of Twitter users and their profile picture inserted into an array.
  • Friends Tweets – This section will have profile information on the left side and tweets on the right side.

Designing Cover Page

This is the section which will be displayed initially. Other then the ‘open book’ button, we don’t have any jQuery or Twitter API related functionality here. So let’s see how to design a book cover using CSS.

1 <div class='tweet_books'>
2     <div  id="startup_page">
3        <div class="tb_cover_outer">
4             <div class="tb_cover_letters">
5                <div class="tb_cover_letter">A</div>
6                <div class="tb_cover_letter" style="background: #8791d9;">B</div>
7                <div class="tb_cover_letter" style="background: #3bcbd0;">C</div>
8                <div class="tb_cover_letter" style="background: #da5c83;">D</div>
9            </div>
10             <div class="tb_cover_inner">
11                <div class="tb_cover_bar"></div>
12                <div class="tb_cover_img"><img src="bird.jpg" /></div>
13                <div class="tb_cover_title">Tweet Book</div>
14                 <div class="tb_cover_open"><div class="arrow_left"></div></div>
15            </div>
16        </div>
17    </div>
18 </div>
  • We create a DIV with the class tweet_books as the main container of the Tweet Book.
  • Then we have 2 DIV elements called tb_cover_outer and tb_cover_inner. This will be the back section of the cover and front section of the cover respectively.
  • You can see that the letter bar has the class tb_cover_letters and is placed between the inner and outer cover. This is because we want to show the letters between the front and back cover like a bookmark.
  • Then we have the Twitter Bird, Title, Open button and shaded bar on the left inside the inner cover.

Following is the necessary styles for the cover page.

1 <style>
2     @font-face {
3         font-family'HelveticaNeueLT Com 65 Md';
4         srcurl('fonts/HelveticaNeueLTCom-Md.ttf');
5         srclocal('fonts/HelveticaNeueLT Com 65 Md'),url('fonts/HelveticaNeueLTCom-Md.ttf'format('truetype');
6     }
7     body{
8         background-imageurl('back.jpg');
9         font-family'HelveticaNeueLT Com 65 Md';
10     }
11     ul{
12         list-style:none;
13         font-weightbold;
14     }
15     .tweet_books{
16         height650px;
17         margin40px auto;
18         width937px;
19     }
20     .letter:hover{
21     cursor:pointer;
22     }
23     .tb_cover_close:hover{
24         cursor:pointer;
25     }
26     .tb_cover_open:hover{
27         cursor:pointer;
28     }
29     /* Cover Page
30     */
31     #startup_page{
32         margin0px 0 50px 380px;
33         positionabsolute;
34     }
35     .tb_cover_outer{
36         background-imageurl("coverBackground.png");
37         border1px solid #364258;
38         border-radius: 0 5px 5px 0;
39         box-shadow: 0 0 1px 2px #525E7B inset0 1px 3px #393891 inset;
40         height620px;
41         width500px;
42     }
43     .tb_cover_inner{
44         background-imageurl("coverBackground.png");
45         border1px solid #969AA0;
46         border-radius: 0 5px 5px 0;
47         height617px;
48         positionrelative;
49         top1px;
50         width492px;
51     }
52     .tb_cover_title{
53         color#46536B;
54         font-family'HelveticaNeueLT Com 65 Md';
55         font-size50px;
56         font-weightbold;
57         margin0 auto;
58         padding-left30px;
59         text-shadow1px 1px 1px #6E83A3;
60         width325px;
61     }
62     .tb_cover_bar{
63         backgroundnone repeat scroll 0 0 #5B6C8B;
64         border-left1px solid #7D94B4;
65         border-right1px solid #7D94B4;
66         box-shadow: 0 0 7px #141313 inset;
67         floatleft;
68         height100%;
69         margin-left20px;
70         width25px;
71     }
72     .tb_cover_open{
73         backgroundnone repeat scroll 0 0 #323D51;
74         border1px solid #262525;
75         border-radius: 5px 0 0 5px;
76         box-shadow: 0 0 1px #B1B1B1 inset;
77         height50px;
78         left453px;
79         positionabsolute;
80         top275px;
81         width50px;
82     }
83     .tb_cover_letter{
84         backgroundnone repeat scroll 0 0 #BDDC2F;
85         border-radius: 0 3px 3px 0;
86         color#FFFFFF;
87         font-family'HelveticaNeueLT Com 65 Md';
88         font-size13px;
89         font-weightbold;
90         height13px;
91         left484px;
92         margin3px 0;
93         padding3px 3px 3px 2px;
94         width13px;
95         text-align:center;
96     }
97     .tb_cover_letters{
98         floatright;
99         left6px;
100         positionrelative;
101         margin-top10px;
102     }
103     .tb_cover_img{
104         height135px;
105         margin170px auto 10px;
106         width150px;
107     }
108     .arrow_right {
109         floatleft;
110         height0;
111         margin12px 15px;
112         width30px;
113         height30px;
114         background-imageurl('sprites.png');
115         background-position-2px -25px;
116     }
117     .arrow_left {
118         background-imageurl('sprites.png');
119         background-position-2px -50px;
120         floatleft;
121         width30px;
122         height30px;
123         margin12px 15px;
124     }
125 </style>

Now I’ll explain the most important properties in the above code from the design perspective.

  • Positioning of the letter bar is important. So I have positioned it relatively to the outer cover. You can change the left and top values for class tb_cover_letters to adjust the letter bar between inner and outer covers.
  • CSS box-shadow property is used to create the shaded bar on the left of the book cover. Adjust the spread distance to get different shades.
  • You can adjust the color and text-shadow of tb_cover_title class to get the text effects on Title.

Once the above section is completed you should have the cover page of the Tweet Book as shown below.

%tutke

Creating Twitter Friends List

In this section we are going to create the screen to show the list of Twitter friends with their profile images. Once the book is opened we cannot show the list of users since we haven’t clicked on a letter yet. So we have to show a default message to users. Let’s get started on the design.

We are going to position all 3 sections of the Tweet Book one above the other using the same coordinates and keep the other 2 sections hidden. Following is the HTML code for the friends list page and should be inserted after the cover page code.

1 <div class="book_cover" id="followers_page">
2         <div class="book_pages" style="left: 3px; width: 862px;"></div>
3         <div class="book_pages" style="left: 5px; width: 858px;"></div>
4         <div class="book_pages" style="left: 7px; width: 854px;"></div>
5         <div id="followers_page_rows" class="book_pages" style="left: 9px; width: 850px;">
6             <div class="page_left">
7                 <div class="followers_message">Click On a Letter To Load Friends</div>
8             </div>
9             <div class="page_bind"><span class="top"></span><spanclass="bottom"></span></div>
10             <div class="page_right"></div>
11         </div>
12     </div>
  • List page is named as followers_page and has a class called book_cover.
  • Then we have 4 DIV elements with the class book_pages. The last DIV will be used to display our content and the first 3 are used to style the book to show that it has more pages.
  • Inside the element with the ID followers_page_rows, we have 3 sections called page_left,page_bind and page_right. page_left and page_right will act as the 2 pages shown on a book when it’s opened. page_bind will contain the effects to show shading and image.
  • Inside the page we provide a message asking the users to click on a letter to start.

Then we need to add the code for letters bar and close button as shown below. This code should be included after the friends list page.

1 <div class="letters">
2         <div class="letter">A</div>
3         <div class="letter" style="background: #8791d9;">B</div>
4         <div class="letter" style="background: #3bcbd0;">C</div>
5         <div class="letter" style="background: #da5c83;">D</div>
6     </div>
7     <div class="tb_cover_close"><div class="arrow_right"></div></div>

You can find the CSS style for this section under the section Book Pages Styles and Followers Page Styles in the style.css file in project files folder. I am not including the CSS for this section here as its long and contains easy to understand styles.

Initially the letter bar and close button will be hidden. So you should have a something like the following in your demo.

You can see that the book screen is shown and our book cover design is displayed under the book screen. So initially we want to hide the book screen and show book cover. Then once user clicks on open button book cover should be hidden and book screen should be opened. So let’s move onto some jQuery stuff for handling those functionalities.

1 $(document).ready(function(){
2     $("#profile_page").hide();
3     $("#followers_page").hide();
4 $(".tb_cover_open").live("click",function(){
5         $("#startup_page").fadeOut("slow");
6         $("#followers_page").fadeIn("slow");
7         $(".letters").css("display","block");
8         $(".tb_cover_close").css("display","block");
9     });
10 });
  • First we keep the cover page visible and hide the other 2 pages using the jQuery hide function.
  • Next we assign a click event to the open button on the book cover to call a jQuery function.
  • Inside the function we hide the cover page using fadeOut and display the friend list screen using fadeIn.
  • Also we have shown the letters and close button which is hidden initially.

So you should have the following screen once the open button is clicked.

Configuring Friend Details

Now we have to define set of friends to be included in the Tweet Book. I am going to use javascript array to include friends. You can load the friends from database or JSON file by customizing the code.

1 var obj = { "Dainis" :"1stwebdesigner",
2      "Kim Thoenen" :"KeiAiAm",
3      "manish kumar":"ManishDcs",
4  };
5  $.each(obj, function(key, value) {
6      var letter = key.charAt(0);
7      letter = letter.toUpperCase();
8      if(followers[letter]){
9          followers[letter] = followers[letter] + "," + value;
10      }else{
11          followers[letter] = value;
12      }
13  });

First we define the list of friends with their name and Twitter username in a js array.You can add any number of names as you wish. Then we loop through the array and assigns each friend to a new array with first letter of the name.

Displaying Friends List

Once the user clicks on a letter we are going to animate the letter and make it move to the left of the page and display the users list for the letter with their profile image. So let’s get started.

I am going to use the $(“.letter”).click(function() for this functionality.Explanation is going to be done step by step using small code parts. You can find the complete $(“.letter”).click(function() function inside the index.html of project files.

1 $("#followers_page").fadeIn("slow");
2     $("#profile_page").fadeOut("slow");
3     $(".active_letter").animate({
4         left: "0px"
5     }, 2000 );
6     $(".active_letter").removeClass(".active_letter");
7     var letter = $(this).html();
8     letter = letter.toUpperCase();
9     $(this).css("z-index","22");
10     $(this).addClass("active_letter");
11     $(this).animate({
12         left: "-880px"
13     }, 1000,function() {$(this).css("z-index","1");} );
  • First we animate the letter on the left back to the letter bar. Initially all the letters will be on the right side.
  • Then we remove the active_letter class from the previous letter.
  • Then we add the active_letter class to the clicked letter and animate it to the left hand side.
  • z-index used to place the letter on top or between the book cover depending on the condition.

Once the above animation is completed we need to load the users list using the code below.

1 $("#followers_page_rows .page_right").html("");
2             $("#followers_page_rows .page_left").html("");
3             var letterFollowers = (followers.hasOwnProperty(letter)) ? followers[letter] : '';
4             var url = "https://api.twitter.com/1/users/lookup.json?screen_name="+letterFollowers+"&include_entities=true";
5             if(letterFollowers != ''){
6                 $.ajax({
7                     url : url,
8                     dataType : "jsonp",
9                     success : function(data)
10                     {
11                         var count = 0;
12                         $.each(data, function(key, value) {
13                             count++;
14                             var html = '<div class="followers_row"><div class="followers_profile_image">\n\
15                 <div class="followers_profile_image_inner"><img src="'+value.profile_image_url+'" /></div></div>\n\
16 <div class="followers_profile_name">'+value.name+'</div><div class="followers_profile_view" data-followid="'+value.screen_name+'">view</div></div>\n\
17 <div class="seperater"></div>';
18                             if(count>5){
19                                 $("#followers_page_rows .page_right").append(html);
20                             }else{
21                                 $("#followers_page_rows .page_left").append(html);
22                             }
23                         });
24                     },
25                     error : function()
26                     {
27                         alert("Failure!");
28                     }
29                 });
30             }
  • First we clear any available content on the left and right side of the page.
  • Then we get the Twitter usernames of users for the current letter by using the JavaScript array.
  • We can get information about users by passing Twitter usernames to the following API URL. https://api.twitter.com/1/users/lookup.json
  • Once the AJAX request is successfully completed, we assign the users to left and right pages of book with their profile image and the view profile button.

Now we have completed the first 2 screens of the Tweet Book and it should look like the following image. In the next section we are going to complete the tutorial by creating the profile information and tweets page.

Designing and Loading Tweets

We are going to create a page which contains the profile image, username and description on the left section and tweets on the right section. Let’s get started with the HTML code for the page.

1 <div id="profile_page" class="book_cover">
2     <div class="book_pages" style="left: 3px; width: 862px;"></div>
3     <div class="book_pages" style="left: 5px; width: 858px;"></div>
4     <div class="book_pages" style="left: 7px; width: 854px;"></div>
5     <div class="book_pages" style="left: 9px; width: 850px;">
6         <div class="page_left"></div>
7         <div class="page_bind"><span class="top"></span><spanclass="bottom"></span></div>
8         <div class="page_right"></div>
9     </div>
10 </div>

Above page section will be similar to the followers page with a different ID called profile_page.


Loading Tweets

Once the view button is clicked we call a jQuery function called$(“.followers_profile_view”).live(“click”,function(). I’ll explain the necessary details about the code in the following section.

1 $(".followers_profile_view").live("click",function(){
2             var screenName = $(this).attr("data-followid");
3             var url = "https://api.twitter.com/1/users/lookup.json?screen_name="+screenName+"&include_entities=true";
4             $.ajax({
5                 url : url,
6                 dataType : "jsonp",
7                 success : function(data)
8                 {
9                     $("#profile_page .page_left").html("");
10                     var originalImage ="https://api.twitter.com/1/users/profile_image?screen_name="+data[0].screen_name+"&size=bigger ";
11                     var html = '<div><div><img src="'+originalImage+'" style="width:73px;height:73px" /></div></div>\n\
12             <div class="profile_name">'+data[0].name+'</div><div class="profile_username">@'+data[0].screen_name+'</div>\n\
13 <div class="profile_desc">'+data[0].description+'</div>';
14                     $("#profile_page .page_left").html(html+"<div class='more_tweets' id='back_to_list'>Back</div>");
15                     $.ajax({
16                         url : "https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=false&screen_name="+data[0].screen_name+"&count=50",
17                         dataType : "jsonp",
18                         success : function(tweets)
19                         {
20                             console.log(tweets);
21                             console.log(url);
22                             $("#followers_page").fadeOut("slow");
23                             $("#profile_page").fadeIn("slow");
24                             var tweetHTML = '';
25                             $("#profile_page .page_right").html("");
26                             var keyIndex = 1;
27                             var sections = 0;
28                             $.each(tweets, function(key, tweetsValue) {
29                                 tweetsValue.text = replaceURLWithHTMLLinks(tweetsValue.text);
30                                 if(keyIndex%5 == 1){
31                                     sections++;
32                                     tweetHTML += "<div class='followers_row_section' id='section"+sections+"' >";
33                                     tweetHTML += '<div class="followers_row"><div class="followers_profile_image">\n\
34                     <div class="followers_profile_image_inner" >\n\
35 <img src="'+data[0].profile_image_url+'"></div></div>\n\
36 <div class="followers_tweet_name">'+data[0].name+'</div><div class="followers_tweet_desc">'+tweetsValue.text+'</div></div><div class="seperater"></div>';
37                                 }
38                                 else if(keyIndex%5 == 0){
39                                     tweetHTML += '<div class="followers_row"><div class="followers_profile_image">\n\
40                     <div class="followers_profile_image_inner">\n\
41 <img src="'+data[0].profile_image_url+'"></div></div>\n\
42 <div class="followers_tweet_name">'+data[0].name+'</div><div class="followers_tweet_desc">'+tweetsValue.text+'</div></div><div class="seperater"></div>';
43                                     tweetHTML += "<div class='more_tweets' id='more"+sections+"'>More</div>";
44                                 }
45                                 else{
46                                     tweetHTML += '<div class="followers_row"><div class="followers_profile_image">\n\
47                     <div class="followers_profile_image_inner">\n\
48 <img src="'+data[0].profile_image_url+'"></div></div>\n\
49 <div class="followers_tweet_name">'+data[0].name+'</div><div class="followers_tweet_desc">'+tweetsValue.text+'</div></div><div class="seperater"></div>';
50                                 }
51                                 keyIndex++;
52                 });
53                             $("#profile_page .page_right").append(tweetHTML);
54                             $("#profile_page .page_right .followers_row_section").each(function(){
55                                 $("#profile_page .page_right").prepend(this);
56                             });
57                         },
58                         error : function()
59                         {
60                             alert("Failure!");
61                         }
62                     });
63                 },
64                 error : function()
65                 {
66                     alert("Failure!");
67                 }
68             });
69         });
  • We have to get the username by using the data-followid attribute in the view button we defined earlier.
  • Next we make the AJAX request to get the information from Twitter as we did earlier. Difference is that we are using only a single username this time.
  • Once data is received we assign the user profile information to the left side of the page.
  • Then we make another AJAX request to Twitter API to get the recent tweets by the given user usinghttps://api.twitter.com/1/statuses/user_timeline.json as the URL.
  • Next we hide the followers list by using fadeOut and display tweet screen with fadeIn functions.
  • Finally we loop through the tweets received and assigns it to the right hand side of the page.

Now you should be able to view the tweet list of the user as shown in the screen below.

Adding Controls

Finally we need to add some controls to do the following tasks.

  • Click More button to load next set of tweets.
  • Click Back button to get to the followers page.
  • Click the close button to close the book and display book cover.

So we need to include the following JavaScript codes to provide above functionality.

1    $(".more_tweets").live("click",function(){
2         var moreId = $(this).attr("id");
3         var slideId = moreId.replace("more","section");
4         $("#"+slideId).fadeOut("slow");
5     });
6 $("#back_to_list").live("click",function(){
7         $("#profile_page").fadeOut("slow");
8         $("#followers_page").fadeIn("slow");
9     });
10    $(".tb_cover_close").live("click",function(){
11         $("#followers_page").fadeOut("slow");
12         $("#profile_page").fadeOut("slow");
13         $("#startup_page").fadeIn("slow");
14         $(".letters").css("display","none");
15         $(".tb_cover_close").css("display","none");
16     });

Finally we have a cool Tweet Book which can be used to keep track of the tweets of your best friends. Hope you enjoyed the tutorial and try adding other social media profiles and make it a Social Sharing Book.

Related articles

Do More Designing and Less Tweaking: Enlist Tweaky to Handle Your Minor Website Work

Designers spend quite a lot of their day not designing. Because the design work itself is highly subjective, designers spend a tremendous amount of time setting appropriate client expectations, developing “scopes” that determine the exact boundaries of projects, and most importantly, figuring out exactly what clients want through a medieval process of translating nonspecific client feedback into concrete, actionable agendas. This alchemical process of turning subjective work into a series of clear, specific design improvements is not trulydesign work. Designers do their best to minimize it, but they have few ways to avoid it, and most have no choice but to add this design-​​less procedure into the price of their design work.

For both clients and designers, these back-​​and-​​forth discussions of scope, price, and specifics can be tedious and time-​​consuming. They’re usually only worthwhile for large design projects. Smaller website work doesn’t merit the same time investment, and as a result, minor website improvements often never get done.

But, the newly-​​launched Tweaky offers a unique approach that makes small website improvements surprisingly appealing for both the client who needs the minor “tweaks” and the developer who does the actual tweaking. Instead of undergoing the long aforementioned process of scope setting and price negotiating, Tweaky site specialists can go to work right away without discussions of scope or pricing.

How Tweaky Works

Tweaky’s process involves breaking requested website development work into discrete units (aptly named “tweaks”) that have a fixed price of $25 each. If the work being requested is time-​​consuming or multifaceted, it’s simply broken down into multiple tweaks and sent to hand-​​picked developers. This new method is not only attractive to customers who need minor website work; it’s also very appealing to designers who want to spend more time building and polishing website designs and less time tailoring project scopes, negotiating pricing, writing work agreements, and fixing code-​​related problems. Co-​​founder Ned Dwyer describes the dual appeal of the tweak system:

Breaking a project down into tweaks solves several different problems. First, it helps the client to understand exactly what work will be carried out — there is little room for something being out of scope when you’re detailing work you’ll be doing for $25. Secondly, it means that it’s easy to add extra tweaks onto a project once it’s in development. This prevents “scope creep” that doesn’t get paid for.

The system also helps us to take the pain out of small projects for a developer. By the time the developer gets their hands on a project, it has already been defined, the client has uploaded all of their assets and login details, and the project has been paid for. Then, the [Tweaky] developer can get to work. Because they don’t have to scope the project and chase the client for login details and payment, we can keep our prices a lot lower than your local web developer.

Why Would Experts Need Tweaks?

At first glace, it seems that Tweaky’s typical customer would be a website owner who needs minor website changes and lacks the skills to do it themselves. But, there are quite a few ways that a seasoned web designer could benefit from employing Tweaky on their projects:

  • Accommodating a sudden or unexpected “overflow” of design work. If you have a sizable client list, it’s only a matter of time before several of them simultaneously ask for the same part of your schedule. Rather than turning down your least preferred work (and risking losing the client), you could enlist Tweaky to help you take on this temporary, unexpected, welcome influx of business. The vast majority of design firm owners started as designers and learned how to enlist the help of others. Tweaky could be an effective resource for meeting deadlines, retaining clients, and growing your business in general.
  • Supporting your clients after your work is complete. Clients often have requests for work that come weeks or months after you’ve completed a large project or wrapped up your business with them. This presents a conundrum for designers; you want to move on to bigger and better projects, but you also want to care for your past clients, preserve your excellent reputation, and keep them in good hands. Getting back into scope and pricing for such minor “tweaks” is often not worth the time for you or the client. Tweaky could be the perfect referral to support your past clients without losing sight of your future prospects or tarnishing your reputation.
  • Outsourcing the small parts of larger design projects that are beyond your skills. It would be a shame to say “no” to a large, promising project just because it has a few wrinkles that you can’t handle with your current skill set. Designers are often very proficient with font, color, layout, and other aesthetics, but they’re not always as skillful when it comes to databases, scripts, APIs, and other code-​​related development work. Rather than turning down an entire project because of a few small coding tasks that are outside your realm of expertise, you could enlist Tweaky to lend you just the right kind (and just the right amount) of development expertise to propel your project across the finish line. Relying on your own skills can only take you so far; being a resourceful designer can take you much further, and Tweaky can be a valuable resource that comes with predictable costs that fit neatly into any project budget.

 

Source: designfestival

 

Top 5 WordPress Frameworks You Should Know

The majority of bloggers in the world use WordPress to deliver their fresh words to the world on a daily basis, and a huge number of general purpose websites also run on it. WordPress is easy to use, easy to set-up and widely recognized as the most solid CMS platform.

However, a lot of people may not realize the extra horsepower that is hiding under the hood of WordPress – extra power that can only be released by utilizing frameworks to build your new project.

WordPress frameworks give you the ability to sculpt your website exactly to your needs – whether it be altering the look and feel or to add additional functions like social networking and rating systems. Frameworks enable developers to do custom work from a solid base, with clean code, lots of documentation and maximum flexibility. Sites built using WordPress frameworksare also easier to optimize for SEO, which gives you a huge advantage from day one.

In the following article, we’ll go through the top 5 frameworks (as of August, 2012), and give you enough information so that you can investigate further and decide which one is for you.

StudioPress – Genesis Framework

StudioPress

The Genesis Framework is hugely popular and has a massive community supporting it. It has a wide-variety of layout options baked-in, really powerful custom widgets and nice, clean code that cuts down on development time and enables you or your developer to work on the important things.

The way that the Genesis Framework is written means that it is also possible for you to make changes in your development team with going through the pain of teaching someone the code from scratch. The SEO options are great, the security features are tight and the common opinion is that Genesis is a pleasure to work with.

Get the Genesis Framework

Pagelines – PageLines Framework

PageLines offers a wide variety of modern options that help you to deploy that is powerful and future-proof. With responsive design, drag-and-drop functionality and forums integration, PageLines is ready to go on desktops as well as mobile devices, a big plus as the mobile web becomes ever more popular.

PageLines is more expensive than the average WordPress framework, but with consistent updates and a really passionate team behind it, it’s worth looking into if you want complete control over your website with a really solid base to start from.

Get the PageLines Framework

DIYThemes – Thesis Framework

Thesis theme

When the head of SEO for Google (Matt Cutts) uses a WordPress framework, you can be pretty sure it’s a solid platform. Thesis gets some bad rap because it’s design is both its strength and its weakness.

If you’re looking for an endlessly flexible framework to build your cutting-edge design site, then it’s probably not for you. However, it can still be modified and with enough CSS work you can make it look different enough to stand out from the crowd. Thesis is popular due to its speed, possibly the best integrated SEO control and elegant back-end.

Get the Thesis Framework

Headway Themes – Headway Framework

Headway is a drag-and-drop framework that provides a simple, intuitive way to build a website from scratch without having to be a programming ninja. It features a grid layout to build on top of, and with the use of ‘building blocks’ you can quickly put together a powerful website.

The layout of your site is completely customizable by arranging your layout via drag-and-drop, and it’s really the only one of its kind to offer this level of power with a visual interface. The SEO features of Headway are also really strong, and it reduces the need to install 20 different plugins to do the job.

Get the Headway Framework

Pro Theme Design – Elemental Framework

Elemental theme

The Elemental Framework shines in a couple of areas. Like most of the above, SEO is a pleasure to configure on a page-by-page basis, and largely bypasses the need to install additional plugins. Design wise, Elemental includes animated drop-down menus, custom page templates for different areas of your site, and easy to modify page-layouts.

It’s a favorite amongst bloggers, and it enables developers to delivery high-quality websites quickly, with great results.

Get the Elemental Framework

I hope that gives you an insight into the world of WordPress Frameworks, and that with this information in hand you’ll be able to choose wisely when you decide to make the leap! What other frameworks have I missed? We’d love to hear you suggestions in the comments.

 

Source:  WP Kube

 

 

 

Related articles

50 Useful Responsive Web Design Tools For Designers

Grid & Frameworks

Columnal

Columnal is a Pulp+Pixels project, which has been borrowed from cssgrid.net while some code inspirations has been taken from 960.gs. Columnal helps you a lot in your responsive web design, by making your grids flexible to change dynamically when the browser window is resized.

Skeleton

Skeleton is a simple and powerful CSS framework, which is mainly liked by developers and designers because of its simplicity and efficiency. There is no heavy-lifting with Javascript here, only good and pure CSS with clean documentation.

LessFramework 4

Less Framework is more or less a framework, in the name of its creator. It is an adaptive CSS grid system based on using inline CSS media queries, which makes the development of responsive websites much easier.

Semantic Grid System

Semantic Grid System is used to design responsive grid layouts. It uses pre-processed CSS extensions like LESS, SCSS or Stylus to deliver maximum efficiency. You can select column and gutter widths, choose the number of columns and switch between pixels and percentages.

Golden Grid System

Golden Grid System is a fluid-grid system which serves as the starting point of your responsive web design. It enables the website to serve good-looking pages ranging from 240 to 2560px.

320 And Up

320 and Up is a CSS media queries boilerplate, which serves to be the starting template for your responsive design. It follows a completely reverse approach than the several other boilerplates available.

Inuit.Css

Inuit.css is a CSS framework, which is extremely easy to use, even for novices. It has a minimalist approach, thus you need to deal with only things that are needed, but if need be, it can also be extended with a handful of plugins available.

Gridless

Gridless is a boilerplate for creating responsive and cross-browser websites with beautiful typography. This tool focuses on progressive development of a project, and it serves as the starting point of any design.

1140 CSS Grid

1140 CSS Grid is a great CSS grid system designed by Melbourne designer Andy Taylor, which lets your design fit perfectly at 1140px for large monitors and your fluid layout will adapt seamlessly to other smaller resolutions with very little extra work.

1KBCSSGrid

1KB CSS Grid designed by Tyler Tate, is a simple and lightweight CSS Grid generator. It will allow you to set the number of columns, column width and gutter width, and you can get a downloadable CSS for your websites grid.

Bootstrap

Bootstrap, created and maintained, by Mark Otto and Jacob Thornton at Twitter, is an excellent set of user interface elements, layouts, and javascript tools, freely available for you to download and use in your web design projects.

Fluid Grid Calculator

This simple tool will help you to quickly grab the CSS of your fluid grid website design.

Fluid Grids

Fluid Grid is a simple yet useful fluid grid framework, that creates responsive layouts based on 6, 7, 8, 9, 10, 12 or 16 columns.

Flurid

Flurid is a simple and very useful cross-browser CSS grid framework with up to 16 columns. And moreover it doesn’t hide pixels into margins.

Gridset

Gridset is a tool for making grids of any type, such as, columnar, asymmetrical, fixed, ratio, compound, responsive and more. This tool by Mark Boulton, is still in beta, but proves to be promising. And did I mention, using it is as simple as embedding a link.

Gridpak

Gridpak is an online responsive grid generator, where the number of columns, padding, and gutter can be changed, and custom breakpoints can be added. The CSS is generated by the tool and made ready for download. It also provides PNG grid templates, which can be used for designing purposes in Photoshop.

SimpleGrid

SimpleGrid, developed by Michael Kuhn, is a very simple and straightforward CSS framework for creating infinite grid-based layouts. By default, SimpleGrid is prepared for 4 distinct ranges of screen sizes.

Susy

Susy by Oddbird, is similar in action to the Semantic Grid System. It uses no extra markup or any other special classes, but is only aimed to the users of Saas and its extension Compass.

Tiny Fluid Grid

Tiny Fluid Grid is an awesome web app, that can help you determine the grid system of your website in an interactive way. You can set the number of columns, gutter percentage, minimum and maximum width of your website’s layout, and can get a downloadable CSS for it.

Variable Grid System

Variable Grid System is designed and developed by SprySoft and is based on the 960 Grid System. It allows the developers and designers to generate the custom grid and then download the accompanying CSS file based on that grid.

Sketch Sheets & Wireframes

[Back to top]

Responsive Web Design Sketch Sheets

This tool is useful in mapping out the placements of various elements in your website layout across various devices. With the help of this device, you can form an idea of where to place the necessary elements of a website for different screen sizes and resolutions.

Responsive Wireframes

Responsive Wireframes is an experimental tool created by James Mellers of Adobe. It is built with only HTML and CSS (no images or JS were used) which you can use to visualize how your responsive design would look like on actual browsers of various desktops and mobile devices.

StyleTiles

Style Tiles gives you a way to develop an idea of how a website would look like, independent of the complicated styles that come into play. It gives you the opportunity for a perfect responsive design workflow and also the ability to integrate client feedbacks.

JavaScript & JQuery Plugins

[Back to top]

Adapt.Js

Adapt.js is a Javascript solution and an excellent alternative to the CSS media queries. Using @media approach is good practice, but this does not work for all browsers. Nathan Smith, the creator of 960 Grid System, released Adapt.js, a very lightweight javascript library to overcome this problem.

Isotope

Isotope is an amazing jQuery plugin, which proves to be very useful while designing a responsive design. It not only helps to rearrange the elements of a page when the browser window is resized or the screen size is smaller, but it also helps to filter those elements.

Masonry

Masonry is an excellent jQuery plugin, which is used to create dynamic and adaptive layouts. This plugin helps to rearrange the elements in your responsive design, so they can fit better in the open-spots on the grid.

Respond.Js

Respond.js is a fast and lightweight (3 Kb minified and 1 Kb gzipped) script, whose main aim is to enable responsive web design in those which don’t support the CSS3 Media Queries, like IE browsers.

TinyNav.Js

TinyNav.js is a small and lightweight jQuery plugin, only 362 bytes, that converts big navigation lists into small dropdown menus for smaller screens.

Wookmark JQuery Plugin

Wookmark is a jQuery plugin that detects the browser window size and automatically arranges the elements of the page into columns. You can also see a live preview at the bottom of the page itself.

Testing & Preview

[Back to top]

ProtoFluid

ProtoFluid is a web-based prototyping tool that lets you test your website prototypes in various screen sizes and resolutions. Just type in the URL, select the device (or any custom dimensions) and press launch. Since it is a web-based tool, it also lets you use other extensions like FireBug.

Responsive.Is

Responsive.Is is created by TypeCast another browser emulator tool, which you can use to test your responsive design. Just type in a URL, and it will automatically change its size depending on the device you choose.

Responsivepx.Com

ResponsivePx is an awesome tool for testing your responsive website design. The main feature that distinguishes it from others, is its capability to resize the website pixel-by-pixel. This awesome feature, will let you identify the breakpoints and also test how the CSS media queries are working in your site.

Responsive Web Design Testing Tool

An awesome testing tool, that can allow you to view your responsive website in various screen sizes simultaneously in a single screen, while you build or design them. I like this tool mainly because it shows all the screen resolutions side-by-side which makes it easier for debugging.

ReView.Js

ReView is a dynamic viewport system, developed in pure JavaScript, which gives you a fantastic viewing experience for your responsive Web design.

Screenfly

Screenfly by QuirkTools, is an amazing tool that will enable you to view your responsive website in a variety of devices: Desktop, Tablet, Mobile and TV. It also has options to enable or disable scrolling or even to rotate the display.

Screenqueri.Es

Screenqueri.es is a pixel-perfect responsive design testing tool. Just enter any website address that you want to check, and this tool performs will show the website in various screen sizes according to device. You can also manually resize the size pixel-by-pixel to identify the breakpoints.

The Responsinator

Test your site in various devices from an iPhone and iPad, to a Kindle and on Android on theResponsinator. It also shows your site both in portrait and landscape mode. I like this tool much more because of the outlines of the devices displayed on the page, which brings more meaning to the whole process.

Sliders

[Back to top]

Blueberry

Blueberry is a fantastic open source jQuery image slider, which is written to specifically work for fluid or responsive layouts.

Elastislide

Want a carousel that will automatically adjust to screen size when the browser window is resized or when you are in a smaller screen? Elastislide is the most suitable jQuery plugin for your needs.

Responsive CSS3 Slider

This is a pure responsive CSS3 slider that can adapt to any screen size and screen resolution with ease. The nice thing about this slider is that, the arrows go inside the box when the device screen size is small enough. No JavaScript needed.

ResponsiveSlides.Js

ResponsiveSlides.Js is a very simple and extremely lightweight (only 1Kb) jQuery plugin that creates a responsive slider using unordered lists.It works on a wide range of browsers, also on IE6 and up.

Others

[Back to top]

Adaptive Images

Adaptive Images is an online tool for responsive web design, which detects the visitors’ screen size and creates, caches and delivers rescaled images, based on the screen size and resolution.

FitText.Js

FitText.js is a small javascript tool, which allows the automatic resizing of text and headlines when the browser window is resized. No more worries of text size mismatch with this tool on board.

FitVid.Js

Want to rescale the embedded videos when the browser window is resized or the device is of smaller resolution? FitVid.Js can help you acheive this. It is a lightweight, simple, easy-to-use jQuery plugin used to achieve fluid width embedded videos.

Retina Images

Retina Images is an awesome javascript solution, that will automatically serve @2X larger, high-resolution images when viewed on retina display. All you need to do is put a high-resolution version of each and every single image, and it will manage the rest.

Seamless Responsive Photo Grid

Seamless Responsive Photo Grid displays the images edge-to-edge on the browser, without any gaps in between images. The photos are tiled and they flow from left to right throughout the page in columns. The number of columns adjust accordingly as the browser window is resized.

SlabText

SlabText is a jQuery plugin or tool by Brian McAllister based on the slabText algorithm, that splits the headlines into rows before resizing each row to fill the available space. It is quite similar to the FitText.Js plugin in action.

Zurb – ResponsiveTables

Have you ever wondered how to deal with the big data tables in responsive design? Zurb, a CSS/JS combo gives you the answer; it takes the data tables and modifies them so that they do not break the responsive layout on smaller screen devices.

Categorizr

Categorizr is a very small PHP script, provides your visitors with a more targeted web experience. It will help you deliver device-specific designs for Tablet, TV, Mobile or Desktop.

Media Query Bookmarklet

Media Query Bookmarklet shows you what size the current viewport has and which media query was just fired for it.

The Responsive Calculator

The Responsive Calculator is a very simple online tool that can help you to turn pixels into percentages while designing your responsive website.

 

 

 

Related articles