Postagens com a Tag ‘offtopic’

Better User Experience With Storytelling, Part 2

fevereiro 11th, 2010
width="650">
width="650">
Smashing-magazine-advertisement in Better User Experience With Storytelling, Part 2 />  in Better User Experience With Storytelling, Part 2  in Better User Experience With Storytelling, Part 2  in Better User Experience With Storytelling, Part 2

In the first part of this Better User Experience With Storytelling series, we explored some of the basic structures and story patterns found in myths and religions. We saw how these patterns continued into modern stories such as The Matrix and Star Wars. We also explored some of the basics of bringing storytelling into the user experience process and some places to get started.

Concluding this two-part article, we hear from creative professionals who are leading the way in this relatively new world of combining the craft of storytelling with user experience. We’ll also see how storytelling can be applied to more than just interactive experiences: we find it in everything from packaging to architecture.

UX Cover 2 in Better User Experience With Storytelling, Part 2 />Image credit: guldfisken

[Offtopic: by the way, do you know the Smashing Network has its own Smashing Network RSS Feed? Only excerpts are displayed in the feed.]

A Few Modern-Day Storytellers

Although the idea of using storytelling within the user experience process is fairly new, a few professionals are using it in their projects. I spoke with some of these modern-day storytellers to get their perspective and see how they are applying storytelling to their work.

Dorelle Rabinowitz

Dorelle is a storyteller who designs, illustrates and tells stories in a variety of media and contexts. Mostly she tells stories.

Dorelle in Better User Experience With Storytelling, Part 2

Question: How do you approach storytelling in UX?

Dorelle: I see it as another tool we can use as a catalyst for communicating during our design activities. For me as a designer, it’s about putting a human face on the design process and bringing people together. You can get designers, engineers, product managers, strategists and execs jazzed about a proposed feature because of a story, and it can be extremely fulfilling. As a person, it’s all about the emotional connection.

Back in the day, I’d worked on an Oxygen media site called “Our Stories,” where we created short online digital stories with our audience. We called it co-creation, and when I moved more into designing user experiences I realized that stories helped me understand my users better. As I did more and more work, I realized that storytelling facilitates communication, that people respond emotionally to stories, bond over stories and share stories again and again, and that the more I integrated storytelling into my work the better the work was.

So much of what we do isn’t only about the design but about how we deal with people, negotiate and plan. Storytelling can be effective in all of these situations as well as in driving towards our solutions. I think the value of using stories is independent of the type of experience.

Question: In the end, business goals (i.e. profit) rules the day. How does storytelling tie into this?

Dorelle: Stories help bridge understanding, so storytelling can help teams get on the same page and speak the same language—leading to expected results. Stories can help people work more collaboratively and thus help teams get it done faster—faster time to market. Stories can help reframe business problems so that projects solve the right problems and come to a better solution.

Question: Where is the best place to learn more?

Dorelle: Cindy Chastain’s article in Boxes and Arrows on Experience Themes is a great read.

Curt Cloninger

Curt is an artist and writer. He says his art doesn’t really tell a standard narrative with a climax and resolution but rather tries to create a kind of event experience.

Curt in Better User Experience With Storytelling, Part 2

Question: How do you approach storytelling in UX?

Curt: Design, particularly graphic design, can be understood as a visual form of communication, and storytelling is a historically tested form of communication. Storytelling or narrative design is more like something to keep in mind when considering the user’s experience.

To me, narrative design just means having a consistent “voice” and having every design element contributing to the same goal or conclusion. It also means allowing for an arc in the user experience. And it means allowing the user to have some kind of personal say in completing her experience. This is the difference between a novel (where the user mentally fills in lots of visual blanks) and a Hollywood action film (where all the blanks are filled in for the user). A novel is arguably more engaging.

Question: In the end, business goals (i.e. profit) rules the day. How does storytelling tie into this?

Curt: Hollywood tells stories, and they seem to make a lot of money. Politicians, journalists and large corporations often tell stories (i.e. lies), and they make money. The evolution of any brand over time is a kind of narrative. Corporations spend all sorts of money trying to convince us that their main character (Ronald McDonald) is the good guy. Narrative and capitalism have always enjoyed a fruitful relationship.

Question: Where is the best place to learn more?

Curt: I like Nathan Shedroff’s Experience Design book. It’s more about “XD” than “UX,” but it addresses narrative at several points throughout. Richard Schechner’s href="http://books.google.com/books?id=sVRvCoaHAREC&dq=Richard+Schechner's+"Performance+Theory"&printsec=frontcover&source=bn&hl=en&ei=k7NDS_nxI4zqMdDUsI4J&sa=X&oi=book_result&ct=result&resnum=5&ved=0CB0Q6AEwBA#v=onepage&q=Richard%20Schechner's%20%22Performance%20Theory%22&f=false">Performance Theory is good. It has nothing to do with user experience design per se, but it is about theater, tribal ritual and the cultural interfaces that people construct to give meaning to their worlds.

Christian Saylor

Christian is a storyteller who designs user experiences. He believes that the things around us have very powerful stories to tell.

Christian in Better User Experience With Storytelling, Part 2

Question: How do you approach storytelling in UX?

Christian: Storytelling gives us purpose and a sense of place. So, it hasn’t been so much a “discovery” of storytelling as a natural progression towards uncovering an experience buried deep within a narrative that wants to be told. So this idea of adopting “storytelling” as a means to uncover a rich experience for the “end” user, whoever they may be, just makes sense.

At the end of the day, the job of the (UX) designer is to help tell a story that is relevant and meaningful, regardless of time, device or even location. We use “personas” (characters in our story) and “scenarios” (narratives that tell a story about the persona) in order to fully understand not only the target audience but also their goals and desires, which will ultimately help to create a meaningful experience for them.

I strongly believe that everything has a story associated with it. Every business, social group, concept, methodology and relationship is desperately seeking out better ways to engage with its audience. Some just happen to do it on a large scale (Apple), while others quietly create a pattern of life that goes unnoticed until it disappears (the remote control). From packaging that sits on the store shelf to the applications that follow us throughout our days, story influences just about every aspect of our lives. Story is all around us. It gives us a sense of understanding and knowledge of the people and things that are important to us.

I think the most important aspect of storytelling for me is that it has the ability to change the way we view and interact with our world.

Question: In the end, business goals (i.e. profit) rules the day. How does storytelling tie into this?

Christian: If you’re telling the right story to the wrong audience, or even telling the right story the wrong way, then your business or product will ultimately fade away. Design and technology are the catalysts of change in the “experience economy.” And if we don’t seek out better ways to tell our story, then our business, product or service will be in jeopardy of losing its vitality. And as we all know, the business world is constantly looking at the bottom line. We live in a world saturated by products and services that vie for our attention, and the experience—the way in which a story is unfolded—will be the difference between a company’s success and failure.

Question: Where is the best place to learn more?

Christian: Lovemarks (the future beyond brands) by Saatchi & Saatchi. It has unbelievable insight into the way we fall in love with the companies and products that surround us.

(Disclosure: Both Christian and the author are employees of Universal Mind.)

Cindy Chastain

Cindy is a trained filmmaker and screenwriter. She continues to make films and write scripts and considers herself a visual and dramatic storyteller.

Cindy in Better User Experience With Storytelling, Part 2

Question: How do you approach storytelling in UX?

Cindy: Storytelling is another discipline that can be used in the context of design as 1) a device, 2) a framework and/or 3) a craft to draw upon. In other words, we can use story as a way to capture and sell an idea; we can use it as a way to frame an approach to the design of a product or service; or we can use narrative techniques to craft an interaction and, hence, a variety of behavioral and emotional responses to a story.

We tell stories that seek to order chaos, provide meaning and engage the emotions of our listeners. We design experiences that hopefully do something similar. But in the context of design, meaning is also about what this experience, product or service will do for a person. It’s about how something fits into or enhances his life. It’s about understanding how something is supposed to function.

As designers we do well at facilitating the dialogue between people and the interactive products they use. But we often neglect to consider the more intangible layer of experience, the stories that evolve dynamically through interactions that people have with the things we make. We also lack an approach to holistic design. If we can learn to approach design more like writers approach stories, we will not only build richer experiences but start to develop a craft in our work that knows how and when certain narrative techniques can be used to engage the minds, emotions and imaginations of users.

Knowing the craft of narrative will help us build better stories, which will help us turn a set of lifeless features and functions into a whole experience that engages the minds and emotions of customers.

Question: In the end, business goals (i.e. profit) rules the day. How does storytelling tie into this?

Cindy: Brand message is no longer the thing that sells. Experience sells. If the intangible pleasure, emotion or meaning we seek can be made tangible through the use of story and narrative techniques, we will build more compelling product experiences. And if the experience is more compelling, businesses will profit from droves of loyal, experience-discerning customers.

Without this understanding, choices about what features should be included and how they should behave seem both uninspired and disconnected. Sure, we have business goals, user needs, design principles and best practices to draw on, but these things won’t get us to a place where a team is collaborating in the same conceptual space, let alone designing for emotion and meaning.

Question: Where is the best place to learn more?

Cindy: Start with the discipline itself, like Story, Robert McKee’s book about screenwriting. For a dive into theory, I recommend Narration in the Fiction Film, by David Bordwell and the classic Computers as Theatre by Brenda Laurel. And for the first word on storytelling read The Poetics by Aristotle.

The Storytelling Experiences Around Us

There are many experiences in which storytelling is used to create a compelling message that draws users in. The stories are not always visible or apparent right away, but underneath many good experiences we can find great stories. They may appear in a series of interactions that tie into a larger story or simply in an emotional connection that we form with a product or brand.

In Packaging: Apple

Iphonebox in Better User Experience With Storytelling, Part 2 /> Image source: Re.Mo and Typical Story Arc.

One company the excels at delivering a powerful story is Apple. Laid over the image of the iPhone box above is the story arc (introduced in part 1) that most screenplays and novels follow. Purchasing an Apple product and opening the many beautiful layers of the packaging follow a similar story arc in building anticipation. As you move through the process, you find compelling photography and clever writing. These build a sort of satisfying tension until you finally arrive at the climax of the experience and uncover the iPhone. A more common anti-climactic approach would be to wrap the iPhone in bubble plastic, reducing the story to a mere “Buy me.”

In Technology: Microsoft Courier

Microsoft Tablet in Better User Experience With Storytelling, Part 2

The Microsoft Courier device is in the “late prototype” stage of development. This is more of a booklet than Apple’s iPad, with dual multi-touch screens. This video uses storytelling to take you through the user experience of the booklet. Instead of simply running through some of its cool features, it tells us the compelling story of a project in which the potential of the Courier is exploited.

In Marketing: Six Scents Perfume

Perfume in Better User Experience With Storytelling, Part 2

The Six Scents range of fragrances is created annually by pairing six prominent artists with six celebrated perfumers. The goal is to help raise awareness for a specific charitable cause. For the second series, each bottle comes with a DVD that contains a film and photography. The film and imagery create a story around each scent to evoke a certain feeling and theme.

In Architecture: HBO Store

Hbo in Better User Experience With Storytelling, Part 2

The HBO Store (in mid-town Manhattan) is designed with storytelling built seamlessly into an immersive experience. The architecture and technology allow the space to become a new way to experience the props and merchandise for the HBO-based shows. The goal of the store (designed in part by design and branding studio Imaginary Forces) was to create an intelligent and memorable experience for visitors.

In Data: Taxi07:Roads Forward

Taxi in Better User Experience With Storytelling, Part 2

In her comments on storytelling, Dorelle Rabinowitz shows how storytelling can be used to communicate otherwise boring data and turn it into a more accessible experience. One example of this was Taxi07:Roads Forward. It was a report for the New York City Taxi & Limousine Commission on the current state of the taxi cab industry in New York. The information was presented through stories in comic book form and beautiful infographics.

In Websites: Showtime Sports

Sho in Better User Experience With Storytelling, Part 2

In a project for Showtime Sports, Cindy Chastain and the team at Interactive Partners created an engaging experience for fans using experience themes. Fans would be able to follow and learn about the full fight story online interactively through video. The experience themes guided not just the content but the functional requirements and website architecture.

The End Is The Beginning Of This Story

Many aspects of storytelling and user experience could not be covered in a few articles. This series is meant to give you a starting point to explore and learn more. The end of this story hasn’t been written. This is just the beginning of using storytelling in new ways.

Here are a few good tools to start with:

Resources

Authors note: A special thanks to the storytellers interviewed for this article for taking time to share their thoughts and experiences with me.

(al)

/>

© Francisco Inchauste for Smashing Magazine, 2010. | Permalink | 11 comments | Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
Post tags:

Leia o artigo completo aqui!/Read full article here

Developing Sites With AJAX: Design Challenges and Common Issues

fevereiro 11th, 2010
width="650">
width="650">
Smashing-magazine-advertisement in Developing Sites With AJAX: Design Challenges and Common Issues />  in Developing Sites With AJAX: Design Challenges and Common Issues  in Developing Sites With AJAX: Design Challenges and Common Issues  in Developing Sites With AJAX: Design Challenges and Common Issues

Almost every movie has a scene in which a character pull the protagonist aside and says, “There’s something you should know about [insert another character's name here].” Most of the time, we find out some dark secret about a supposed friend of the protagonist or that the main ally is actually an evil overlord. This is that moment, and I am here to tell you a few things about our friend in the Web 2.0 world: AJAX.

We seem to have AJAX licked. The Web technology is ubiquitous, and libraries and frameworks make it dead easy for us to create highly interactive Web applications and to spice up our static pages and blogs.

For example, we could take the following HTML…

<div id="target"></div>
<p><a href="#" class="ajaxtrigger">Let there be AJAX magic</a></p>

… and add this jQuery code:

$('.ajaxtrigger').click(function(){
  $('#target').load('ajaxcontent.html');
});

In a browser, if we clicked on the link labelled “Let there be AJAX magic,” the content of the HTML document ajaxcontent.html would be loaded and written into the element with the ID target. You can try this very simple AJAX example here. It’s simple and easy to use, but what’s really happening there? What is AJAX?

[Offtopic: By the way, did you know that Smashing Magazine has a mobile version? Try it out if you have an iPhone, Blackberry or another capable device.]

What Is AJAX?

After the main HTML document has loaded, AJAX loads content from the server and replaces parts of the document with that content rather than reload the main document. It’s as simple as that. AJAX stands for “Asynchronous JavaScript and XML” and was meant to load only XML documents, but we soon used it to load everything under the sun, and so the XML part was quickly forgotten. The asynchronous part is the killer feature; but what is it?

Ajax in Developing Sites With AJAX: Design Challenges and Common Issues />The traditional model for web applications (left) compared to the Ajax model (right).

Let’s start by analysing how a normal Web interaction works:

  1. The user enters a URI (like http://wait-till-i.com/index.php) into a user agent (usually a browser).
  2. The browser turns this URI into an IP and requests the file located at the URI specified endpoint.
  3. The browser loads the file and, if it recognizes the document type, tries to display it.
  4. If the document is in HTML, we get an interface that we can interact with; for example, by clicking a link or entering data into a form and submitting it.
  5. In both cases, the whole document is replaced and the sequence restarts.

This has worked since the beginning of the Web and has become expected behaviour for Web surfers. With AJAX, we disrupt this sequence of events. Instead of reloading the document or loading a new one, we replace only a part of the interface, either when the user requests it or automatically every few seconds to display new information.

The benefits of AJAX are pretty clear:

  • We maintain a consistent interface, rather than discard it only to bring it up again with a few slight changes after a long and annoying loading process.
  • We request only the data that we need, when we need it, saving us a lot of server traffic.
  • We are able to offer data without wrapping HTML around it to make it an interface.
  • We allow for simultaneous interaction; a user would be able, for example, to fill out a form while an attachment uploads in the background.

However, with great power comes great responsibility, and with AJAX we have taken it upon ourselves to simulate browser behavior for end users.

AJAX Should Not Break The Web

The first thing to make sure of is that you do not break the Web with your AJAX solutions. The above example would, though:

<div id="target"></div>
<p><a href="#" class="ajaxtrigger">Let there be AJAX magic</a></p>

This is not useful HTML. If JavaScript is not available or anything else goes wrong, you would be offering the end user a link that goes nowhere. This is annoying; I’ve come to your website, took the step of clicking a link, got excited by the prospect of awesome content but don’t get anything. Not good. So, rather than keep the URI in the JavaScript part of the AJAX solution, leave it in the HTML:

<div id="target"></div>
<p><a href="ajaxtest-fullpage.html" class="ajaxtrigger">
  Let there be AJAX magic
</a></p>

This would ensure that the link works; if there is a JavaScript error, the browser would simply move on to load and display ajaxcontent.html. The jQuery code would change accordingly:

$('.ajaxtrigger').click(function(){
  var url = $(this).attr('href');
  $('#target').load(url);
  return false;
});

Instead of hard-wiring a URI to load, we just read the href attribute of the link. The return false is needed to stop the browser from following the link after jQuery has initiated the AJAX request. This also means that any link with the class ajaxtrigger will load content via AJAX and display it in the element with the ID target. You can try this reusable AJAX example here.

There is a problem, of course, because the document we load might be a full HTML document, with a head and a body and so on. This works well in the browser, but the AJAX request would load and inject this document it into another document, which is invalid HTML and would cause display issues. Try this out by clicking the “Load a full document” link on the page referred to above.

Let’s say that ajaxtest-fullpage.html is the following:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  [... some links and title and so on ...]
</head>
<body>
<div id="doc" class="yui-t7">
  <div id="hd" role="banner"><h1>Excerpt from Alice's Adventure Underground</h1></div>
  <div id="bd" role="main">
    <blockquote
     cite="http://ia341030.us.archive[...]-h.htm">
      <p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had  peeped into the book her sister was reading, but it had no pictures or conversations in it, and where is the use of a book, thought Alice, without pictures or conversations? So she was considering in her own mind, (as well as she could, for the hot day made her feel very sleepy and stupid,) whether the pleasure of making a daisy-chain was worth the trouble of getting up and picking the daisies, when a white rabbit with pink eyes ran close by her.</p>
    </blockquote>
    <p>Excerpt taken from
      <a href="http://ia341030.us.archive[...]-h.htm">archive.org</a>.
    </p>
  </div>
  <div id="ft" role="contentinfo">
    <p>Demo by <a href="http://wait-till-i.com">Chris Heilmann</a></p>
  </div>
</div>
</body>
</html>

jQuery is all about selectors, which is why the load() function allows you to cut down on the returned HTML by defining a selector. This means that you can change the script to the following (you can try the selector filtering example for yourself):

$('.ajaxtrigger').click(function(){
  var url = $(this).attr('href');
  $('#target').load(url+' #bd blockquote');
  return false;
});

This loads only the blockquote into the other document, so you wouldn’t be creating invalid HTML with the AJAX call. However, we lose the other benefit of AJAX, which is to load less content. If the page is 100 KB and you want to show only the main text, which is 2 KB, why should your users have to wait for 98 KB to load?

To work around this, you need to go server-side. In PHP, you can get information about the request that was sent to load the page. One bit of information is the request method; JavaScript libraries such as jQuery send a specific header across when they load a document with AJAX. You can use this in PHP to set up conditional content:

<?php if($_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest'){?>
This is content requested by AJAX.
<?php }?>

<?php if($_SERVER['HTTP_X_REQUESTED_WITH']==''){?>
This is the normal content requested in a browser
<?php }?>

Try this header, switching out example for yourself: click the “Load a document with AJAX” link, and then right-click (or Command-click) the same link to open it in a new tab (or hit the “Load the same document without AJAX” link). The results should be “This is content requested by AJAX” and “This is the normal content requested in a browser” respectively.

This way, you can keep all of the header and footer information in includes and load them only when the request could not be done with AJAX. Try the header includes example to see it in action:

<?php if($_SERVER['HTTP_X_REQUESTED_WITH']==''){?>
  include('header.php');
<?php }?>

<blockquote
 cite="http://ia341030.us.archive[...]-h.htm">
  <p>Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, and where is the use of a book, thought Alice, without pictures or conversations? So she was considering in her own mind, (as well as she could, for the hot day made her feel very sleepy and stupid,) whether the pleasure of making a daisy-chain was worth the trouble of getting up and picking the daisies, when a white rabbit with pink eyes ran close by her.</p>
</blockquote>
<p>Excerpt taken from
  <a href="http://ia341030.us.archive[...]-h.htm">archive.org</a>.
</p>

<?php if($_SERVER['HTTP_X_REQUESTED_WITH']==''){?>
  include('footer.php');
<?php }?>

Using this “unobtrusive AJAX” approach does a few things:

  • You don’t create broken links, ever.
  • You make it easier to maintain functionality; no need to hunt for URIs in the JavaScript—everything is in the HTML.
  • You allow users to open links in another window or tab.
  • You maintain the AJAX-enabled and AJAX-disabled content in the same document without duplicating content.

“Unobtrusive JavaScript” is the term for this method of developing highly interactive websites. It was coined by Stuart Langridge in 2002, and I wrote a self-training course for it in 2004. Incidentally, Stuart was also the first author to cover AJAX in a JavaScript book, the unfortunately named DHTML Utopia. My own not-quite-so-succinctly-titled book Beginning JavaScript with DOM Scripting and AJAX was, I think, the second. Both books follow the approach shown here and create AJAX solutions that fall back to non-JavaScript versions.

Jeremy Keith tried to further popularize this idea of “safer AJAX” in 2006 by calling it “Hijax”, and he wrote a book titled Bulletproof AJAX in 2007. Sadly, though, I have encountered people who use this as an excuse, saying, “We’re building an AJAX solution now, and we’ll move it to Hijax later.” This will not work! Do it right the first time and you’ll have a stable solution. There is no “We’ll fix it in the next iteration” when it comes to essential functionality in Web development: 12 years of professional development have taught me that much.

AJAX Design Challenges

In dealing with AJAX as designers, we have to reconsider the ways in which we define interfaces. Rather than concentrate on the look and feel of the page and subsequent pages, we need to drill down to an atomic level. Each part of an AJAX interaction needs to be defined. Also, think about non-JavaScript versions of widgets.

With AJAX interfaces, we move into a world of applications that have states and views and out of a world in which our document or page model was based on ideas carried over from print. This for me is a good thing. The Web is a rich medium, not a sequence of linked designs.

AJAX And Usability

As mentioned, we use AJAX to disrupt the normal browsing behaviour of our users. This can be a good thing: no one claims that browsers do everything right, but understanding just how many things we should take care of when taking over the browser is important.

What Browsers Do That You Need to Simulate

We sometimes forget just how many things the browser does for us:

  • When we click a link, an indicator alerts us to a loading process (whether an animated icon, progress bar, etc.).
  • For large files, the progress bar gives us an idea of how far we’ve reached in the loading process.
  • If we get tired of waiting, we can hit the “Stop” button or try again by reloading the page.
  • If a page cannot be found, we are shown an error page.
  • If a page takes too long to load, we are shown an error page.
  • Other errors we encounter (for example, a page that needs authentication, or a document that has been moved) are also displayed on a special page.
  • We can right-click a link to open it in a new tab or window, instead of replacing the current document.
  • We can bookmark a page and come back to it at any time in the future.
  • When we need to undo something that’s gone wrong, a “Back” button takes us back one step in our journey.

All of this needs to be accounted for in a full-fledged AJAX application, because AJAX should improve the end user’s experience rather than make it harder. Let’s now enhance our AJAX script until we can say that we’ve covered the basics.

Bookmarking and the Back Button

One thing I won’t go into in detail is the “Back” button and bookmarking functionality. To make this work, you need to update the URI of the current page with a fragment and reload a hidden frame in the page. There are all kinds of annoying differences between browsers, too, and you can use something like the history plug-in for jQuery to get this to work.

Alerting the User That Something Is Loading

Probably the first thing to fix is to tell the user that something is loading when they click a link or push a button. If the page shows no apparent change, the user will think something is wrong and keep clicking. This is an unfortunate human reflex, because the more you tell a computer to do something, the slower and more confused it gets.

A simple way to provide the user with feedback is to show a loading message. To do this in jQuery, we need to get away from the load() method and instead use ajax(), which gives us information about what happens to the request, such as:

  • The beforeSend event that is fired before the AJAX request is initiated, and
  • The success event that is fired when the AJAX request is successful.

Putting them together, we can add a loading message to the target element when the AJAX request starts, which is replaced when the data has successfully loaded:

$(document).ready(function(){
  var container = $('#target');
  $('.ajaxtrigger').click(function(){
    doAjax($(this).attr('href'));
    return false;
  });
  function doAjax(url){
    $.ajax({
      url: url,
      success: function(data){
        container.html(data);
      },
      beforeSend: function(data){
        container.html('<p>Loading...</p>');
      }
    });
  }
});

Error Handling

As you may have guessed, the next logical step is to handle error cases. This is something far too many AJAX solutions haven’t gotten right, and seeing a great application become useless just because one call has timed out is very frustrating.

We have to prepare for three different errors:

  • The user tries to load an external file that is not available because of AJAX security settings;
  • There is some server error (for example, “Page not found”);
  • The resource takes too long to load.

The following script takes care of all this, and you can see it in action on the error handling demo page.

$(document).ready(function(){
  var container = $('#target');
  $('.ajaxtrigger').click(function(){
    doAjax($(this).attr('href'));
    return false;
  });
  function doAjax(url){
    if(url.match('^http')){
      var errormsg = 'AJAX cannot load external content';
      container.html(errormsg);
    } else {
      $.ajax({
        url: url,
        timeout:5000,
        success: function(data){
          container.html(data);
        },
        error: function(req,error){
          if(error === 'error'){error = req.statusText;}
          var errormsg = 'There was a communication error: '+error;
          container.html(errormsg);
        },
        beforeSend: function(data){
          container.html('<p>Loading...</p>');
        }
      });
    }
  }
});

The changes are:

  • We test whether the link URI starts with http and then report an error that loading it with AJAX is not possible.
  • If the link doesn’t begin with http, we start a new AJAX request. This one has a few new features:
    • We define a timeout of 5 seconds (i.e. 5000 milliseconds);
    • We add an error handler.
  • The error handler either sends us what happened on the server as req.statustext or gives us the error message timeout when the 5 seconds are up. So, we need to check what we got before we write out the error message.

Highlighting Changes

We’re almost done enhancing the usability of our AJAX solution. One last touch is to make it very obvious that something on the page has changed. The standard way of doing this is called the yellow fade and was introduced in 2004 by 37signals in its Basecamp application.

With this technique, you change the background colour of the element to yellow and then fade it smoothly back to white. This grabs the user’s attention without overloading them (unlike zooming in on the content in or popping it up, PowerPoint style, which would overwhelm), and it is pretty easy to implement.

jQuery has a plug-in in the effects package called Highlight that does exactly that. Using it, we can highlight the AJAX returns, making it very obvious that something has changed:

$(document).ready(function(){
  var container = $('#target');
  $('.ajaxtrigger').click(function(){
    doAjax($(this).attr('href'));
    return false;
  });
  function doAjax(url){
    if(url.match('^http')){
      var errormsg = 'AJAX cannot load external content';
      container.html(errormsg).
        effect('highlight',{color:'#c00'},1000);
    } else {
      $.ajax({
        url: url,
        timeout:5000,
        success: function(data){
          container.html(data).
            effect("highlight",{},1000);
        },
        error: function(req,error){
          if(error === 'error'){error = req.statusText;}
          var errormsg = 'There was a communication error: '+error;
          container.html(errormsg).
            effect('highlight',{color:'#c00'},1000);
        },
        beforeSend: function(data){
          container.html('<p>Loading...</p>');
        }
      });
    }
  }
});

Notice the different colors for the error case and success case.

This is about all we need to do to make AJAX more usable. But to make it accessible to everyone out there, we have to do a bit more.

AJAX And Accessibility

Accessibility does not mean much more than hard-core usability. If the “average” user is confused by an interface that doesn’t work as they expect, imagine the predicament of users who cannot see the interface at all. Or think someone who has trouble noticing changes from one page to the next and all of a sudden has to deal with small changes on individual pages—changes they are not notified about. Imagine a keyboard user tabbing through a document to activate a link and out of the blue being confronted by 10 more links. There are a lot more cases such as these, and your interface should be able to handle them at least at a very basic level.

Much Ado About Screen Readers

If you research the topic of AJAX and accessibility, you will come across a lot of tutorials that deal with the problem of screen readers. I won’t go into details—this could be its own article—but here are the main points:

  • Screen readers are tools that read out to visually impaired users what is on the screen (or in the HTML and hidden by CSS).
  • Screen readers work on top of the normal browser and enhance its functionality. Specifically, they allow for quicker keyboard navigation (for example, jumping from headline to headline with a shortcut).
  • They take a copy of a document after it has loaded and apply changes to it.
  • This means that screen readers understand JavaScript, but they only execute a request when the page has loaded. If you change a document with JavaScript and AJAX after it has loaded, you need to notify the screen reader somehow that something has changed and refresh the copy of the page. This can be done by refreshing a form field as a hack.

The real problem with screen readers, and any assistive technology, is that they add yet another level of complexity to our Web interaction.

We have HTML interfaces such as links and forms that need to work with all kinds of input devices: keyboard, mouse, voice recognition software, to name a few. Then the browser needs to somehow tell the assistive software (whether a screen reader or software that zooms the screen or a voice recognition tool) that something has changed, and that other tool has to translate it into an understandable format. All of this can, and frequently does, fail.

Much like how HTML 5 is being pushed to replace HTML 4 because the latter is not rich enough to support the interfaces we want to build, WAI-ARIA is a standard that works around the problem of assistive technology and browsers not talking to each other.

With WAI-ARIA, you can tell a screen reader, for example, that a particular element on the page changes frequently and will be refreshed with AJAX. Again, this topic is too big to cover here, but some good articles are out there in case you are interested.

Important Feature #1: Keyboard Access

One very important requirement of accessibility and AJAX is providing keyboard access, and doing this in a very basic way is not hard. The element that triggers the AJAX call has to be something that users can access with the keyboard (i.e. either a link or a button). You can test this yourself: simply use the Tab key to jump from one keyboard-accessible element to the next in your document. Can you access all of the functionality, and is it obvious where you are at any given moment?

This is where you as a designer can do a lot to make your AJAX interface more accessible. Patrick Lauke has written a wonderful article on keyboard-access styling to get you on your way.

Important Feature #2: Notify at the Source

The second, very important, part is to notify users in the element that they activated that something is happening. You’ll often see interfaces where the activation button or link is in one spot but the content gets loaded somewhere else on the screen. One example of this is the contact form on Get Satisfaction:

Get-satisfaction-small2 in Developing Sites With AJAX: Design Challenges and Common Issues />Large view

When we can see the screen in full, everything is pretty obvious. But consider an end user who has to magnify the screen to 1600% to be able to read it. Or someone who gets easily confused and uses a tool to focus on the part of the screen they are interacting with and blur out the rest. Their experience is different:

Zoomed in Developing Sites With AJAX: Design Challenges and Common Issues

By clicking this, the user expects to be able to submit feedback. Instead, all they get is a darker screen, which could be a hardware problem (running out of battery?) or something else entirely. They have no information on which to base their next move.

You don’t even have to go as far as considering people with disabilities: just use a netbook whose viewport is a mere 300-pixels high (like my first-generation Eee PC) or a mobile interface that zooms into a certain part of the page (like my Blackberry with Opera Mini).

In any of these cases, your AJAX solution will be neither usable nor accessible if the section that is replaced is far removed from the button that fires the AJAX request.

You have two workarounds. The most obvious one is to keep the elements close together. If that is not possible, the other workaround is to change the content of the element that fires the AJAX request once the user clicks on it. This indicates to the end user what is going on.

Notifications in Developing Sites With AJAX: Design Challenges and Common Issues

As an added assistance, you can shift the keyboard focus to the target element when the AJAX request has been processed. Be aware, though, that this could confuse some users; being jumped around the screen without meaning to can be scary. Pretty, smooth-transitioning solutions look good to the rest of us, but they can be a total nightmare for users with learning disabilities.

Putting all of this together, take a look at this more accessible example. It adds a span to the link to show the state of the AJAX request, it highlights the content when it has finished loading, and then it shifts the focus to the new element. Here is the final code. Check the comments (// example) to see what is going on.

$(document).ready(function(){

  // this is the container we'll load content into
  var container = $('#target');

  // adding a tabIndex of -1 makes it keyboard accessible,
  // and we can set the focus to it
  container.attr('tabIndex','-1');

  // if a user clicks on an element with the class ajaxtrigger...
  $('.ajaxtrigger').click(function(){

    // define trigger as the link
    var trigger = $(this);

    // read its href attribute (which is the URI we'll load with AJAX)
    var url = trigger.attr('href');

    // if the element does not have a class called "loaded"
    if(!trigger.hasClass('loaded')){

      // add a new span to the element.
      trigger.append('<span></span>');

      // add a class called 'loaded' to the element
      trigger.addClass('loaded');

      // and define msg as the last span in the element
      var msg = trigger.find('span::last');

    // otherwise, simply define msg as the last span in the element
    } else {
      var msg = trigger.find('span::last');
    }
    // ^ this condition means we only add the span once and not
    //   every time users click the element.

    // call the doAjax function with the URI to load,
    // the span inside the link to change and the
    // target element to replace.
    doAjax(url,msg,container);

    // tell the browser to not follow the link
    return false;
  });

  // here's where the AJAX magic happens
  function doAjax(url,msg,container){

    // if the URI starts with http...
    if(url.match('^http')){
      // show an error and set the class of the span to 'error'
      msg.html(' (error!)').addClass('error');

      // tell the end user in the target element what the error is
      var errormsg = 'AJAX cannot load external content';

      // update the container with the error
      updateContainer(errormsg,'#c00');

    // if the URI does not start with http
    } else {

      // start an AJAX request using the url
      $.ajax({
        url: url,

        // give the request five seconds time, otherwise call it
        // a timeout error
        timeout:5000,

        // if all went well
        success: function(data){

          // set the span content to ready
          msg.html(' (ready.)');

          // update the container with the right data
          updateContainer(data,'#ff9');
        },

        // if there was an error
        error: function(req,error){

          // say in the link that there was an error and set the
          // class of the span to 'error'
          msg.html(' (error!)').addClass('error');

          // if the error just says error, get the real status
          // text from the browser (jQuery doesn't do this right)
          if(error === 'error'){error = req.statusText;}

          // tell the user that there is a communication error
          var errormsg = 'There was a communication error: '+error;

          // update the container with the error
          updateContainer(errormsg,'#c00');
        },

        // if the link was clicked but the AJAX request was not fired...
        beforeSend: function(data){

          // remove any "error" classes and set the span message to loading
          msg.removeClass('error').html(' (loading...)');
        }
      });
    }
  };

  // update the container
  function updateContainer(content,colour){
    container.
      // set the content
      html(content).
        // shift the browser focus
        focus().
          // flash the container for a second in the
          // specified colour
          effect('highlight',{color:colour},1000);
  }

});

The code is a bit longer than in that our other examples, but the payoff makes it very much worthwhile.

Important Feature #3: De-Clutter Your Interface

With a library such as jQuery, you can make anything on the page interactive and make it initiate AJAX requests. You could use roll-overs or drag-and-drop interfaces, and these are great to look at, but ask yourself: are they really intuitive? Browsers do not yet have any drag-and-drop functionality or even roll-overs. Roll over your menu bar; you have to click to initiate any action.

But by using JavaScript tricks, you can make any element keyboard accessible. And if you build widgets, go even further by following the rules of keyboard navigation. You could even create a screen reader-compatible drag-and-drop interface. But again, ask yourself a few questions:

  • Is it worth the hassle?
  • Does it really make the interface easier to understand?
  • Does it make it more natural to use?
  • Does it help all users reach their goal faster, or have you implemented the feature just because it looks cool?

Making the interface as simple as possible does not mean neutering your creativity. On the contrary, the easiest and simplest interfaces are the ones that have gone through a lot of research and design iterations. Great usability means not recognizing that something has been done to make the interface easy.

What Not To Use AJAX For

Never rely on AJAX to handle sensitive information, because modern debugging tools allow anyone to see what is happening on the page. Using the Firebug extension, I can get all of the information about the HTTP traffic of a certain document, including the AJAX requests:

Firebug in Developing Sites With AJAX: Design Challenges and Common Issues

By analyzing these requests, I could glean information that you wouldn’t want to show the world; for example, the endpoints of the services on your system (such as mail scripts), which I could exploit for my own purposes.

Nothing in your JavaScript or HTML is secure. I can change it on the fly and work around your protection mechanisms.

If you are not building a Web application but are merely offering articles for people to read or a catalogue to flip through, you probably shouldn’t go the AJAX route anyway.

The other thing to consider is search engines. If you load all of your content with AJAX, you aren’t offering much in your documents for search engines to index. Static HTML content is still best for search engine indexing—as well as performance, because pages can be packed and cached nicely on your server, if you do it right. Loading via AJAX brings up the content much faster for users and saves on bandwidth, but you will see less traffic from search engines. Something to consider.

The External Content Problem

One built-in security setting of AJAX is that you cannot load content on another server. This is critical, otherwise people would be able to call and inject whatever script they please from the Web. Definitely a bad idea.

You may sometimes need, though, to retrieve third-party content; i.e. load external content in your document as data (because you can always use iFrames to embed other documents). This is where we have to get clever with the technologies at our disposal.

The most common workaround for AJAX not being able to load something like http://icant.co.uk/index.php is to write a server-side script that loads the page and then prints it out. This is called a proxy, and you can see an example of the solution here.

Of utmost importance when using a proxy is to whitelist the URIs that you want to load. Do not simply load any URI off the Web, or else attackers would be able to read files from your server and use your server to send out spam and attack other servers, making it look as though you were the perpetrator.

Other ways to retrieve external content is by getting data in a special format called JSON-P or by using a hosted proxy service such as YQL. I’ll keep this brief because there are several solutions to this problem. If you are interested in learning more, check out this blog post on the subject.

What To Use AJAX For

When used wisely, AJAX makes our life on the Web easier. If you’re wondering when and how to use it, check out the examples in the Design Pattern Gallery, which are based on real user research. For starters, think about these use cases:

  • Adding a large attachment to a message. /> Nothing is more annoying than waiting for your browser to upload something without having a clue how fast and how far along it is. Browser progress bars give us a hint but no real numbers. The Yahoo User Interface uploader, as well as jQuery implementations such as Uploadify, show how that would look like in the browser.
  • Handling a lot of small data sets. /> A great example of this is the comments section in WordPress. Rather than having to click a lot of checkboxes or reload the page every time I want to delete or approve comments, all I do is click a few links.
  • Rating content. /> No need to reload the entire page if you just want a simple Yay or Nay from the user in response to a question.
  • Displaying constantly changing content. /> For example, financial tickers or instant updates from Twitter and Facebook.
  • Add your own use here.

I hope you’ve gained a few more insights into what AJAX is and how you can use it to improve the user experience in a way that is safe and doesn’t leave certain segments of users out in the cold. AJAX makes stuff smoother, but nothing is more annoying than a supposed enhancement spoiling the whole experience.

(al)

/>

© Christian Heilmann for Smashing Magazine, 2010. | Permalink | 52 comments | Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
Post tags: , ,

Leia o artigo completo aqui!/Read full article here

Color Theory for Designer, Part 3: Creating Your Own Color Palettes

fevereiro 11th, 2010
width="650">
width="650">
Smashing-magazine-advertisement in Color Theory for Designer, Part 3: Creating Your Own Color Palettes />  in Color Theory for Designer, Part 3: Creating Your Own Color Palettes  in Color Theory for Designer, Part 3: Creating Your Own Color Palettes  in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

In the previous two parts of this series on color theory, we talked mostly about the meanings behind colors and color terminology. While this information is important, I’m sure a lot of people were wondering when we were going to get into the nitty-gritty of actually creating some color schemes.

Well, that’s where Part 3 comes in. Here we’ll be talking about methods for creating your own color schemes, from scratch. We’ll cover the traditional color scheme patterns (monochrome, analogous, complementary, etc.) as well as how to create custom schemes that aren’t based strictly on any one pattern. By the end of this article, you’ll have the tools and skills to start creating beautiful color palettes for your own design projects. The best way to improve your skills is to practice, so why not set yourself a goal of creating a new color scheme every day.

[Offtopic: by the way, did you know that Smashing Magazine has one of the most influential and popular Twitter accounts? Join our discussions and get updates about useful tools and resources — follow us on Twitter.]

A Quick Review

Let’s start with a quick review of what was covered in parts 1 and 2. In part 1, we talked about how all colors have inherent meanings, which can vary depending on the country or culture. These meanings have a direct impact on the way your visitors perceive your site, even if it’s just subconsciously. The colors you choose can either work for or against the brand identity you’re trying to create.

Indiacolors in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

In part 2, we covered color terminology: hue (what color something is, like blue or red); chroma (how pure a color is, the lack of white, black or gray added to it); saturation (the strength or weakness of a color); value (how light or dark a color is); tone (created by adding gray to a pure hue); shade (created by adding black to a pure hue); and tint (created by adding white to a hue). These are important terms to know as we move forward and create our own color schemes.

Traditional Color Scheme Types

There are a number of predefined color scheme standards that make creating new schemes easier, especially for beginners. Below are the traditional schemes, with a few examples for each.

Colorwheel in Color Theory for Designer, Part 3: Creating Your Own Color Palettes />The basic, twelve-spoke color wheel is an important tool in creating color schemes.

Monochromatic

Monochromatic color schemes are made up of different tones, shades and tints within a specific hue. These are the simplest color schemes to create, as they’re all taken from the same hue, making it harder to create a jarring or ugly scheme (though both are still possible).

Examples:

Here are three examples of monochrome color schemes. For the most part with these schemes, the first color (if we look at this from left to right) would likely be used for headlines. The second color would be used for body text or possibly the background. The third color would likely be used for the background (or body text if color #2 was used as the background). And the last two colors would be used as accents or within graphics.

Monochrome-blue in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Monochrome-berry in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Monochrome-gold in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Analogous

Analogous color schemes are the next easiest to create. Analogous schemes are created by using three colors that are next to each other on the 12-spoke color wheel. Generally, analogous color schemes all have the same chroma level, but by using tones, shades and tints we can add interest to these schemes and adapt them to our needs for designing websites.

Examples:

Analogous-traditional in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

This is a traditional analogous color scheme, and while it’s visually appealing, there isn’t enough contrast between the colors for an effective website design.

Analogous-modified in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Here’s a color scheme with the same hues as the one above, but with the chroma adjusted to give more variety. It’s now much more suitable for use in a website.

Analogous-tradpink in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Another example of a traditional analogous scheme.

Analogous-modpink in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

And the above theme modified for use in a website design.

Complementary

Complementary schemes are created by combining colors from opposite sides of the color wheel. In their most basic form, these schemes consist of only two colors, but can easily be expanded using tones, tints, and shades. A word of warning, though: using colors that are exact opposites with the same chroma and/or value right next to each other can be very jarring visually (they’ll appear to actually vibrate along their border in the most severe uses). This is best avoided (either by leaving white space between them or by adding another, transitional color between them).

Examples:

Comp-purplegreen in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

A wide range of tints, shades, and tones makes this a very versatile color scheme.

Comp-redgreen in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Another complementary color scheme with a wide range of chromas.

Comp-orangeblue in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Don’t forget that beige and brown are really tints and shades of orange.

Split Complementary

Split complementary schemes are almost as easy as the complementary scheme. In this scheme, instead of using colors that are opposites, you use colors on either side of the hue opposite your base hue.

Examples:

Split-yellowgreen in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

A scheme where yellow-green is the base hue. It’s important to have enough difference in chroma and value between the colors you select for this type of scheme.

Split-red in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Another palette with a wide range of chromas.

Triadic

Triadic schemes are made up of hues equally spaced around the 12-spoke color wheel. This is one of the more diverse color schemes.

Examples:

Triad-berry in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Using a very pale or dark version of one color in the triad, along with two shades/tones/tints of the other two colors makes the single color almost work as a neutral within the scheme.

Triad-red in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Alternately, using one very bright hue with paired muted hues makes the single bright hue stand out more.

Double-Complementary (Tetradic)

Tetradic color schemes are probably the most difficult schemes to pull off effectively.

Examples:

Tetradic-red in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

A rather unimpressive tetradic color scheme. The best way to use a scheme like this is to use one color as the primary color in a design and the others just as accents.

Tetradic-pastel in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Tetradic color schemes can work well for creating color schemes with similar chromas and values. Just add a neutral (such as dark gray or black) for text and accents.

Tetradic-dark in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

It works just as well for darker color schemes.

Custom

Custom color schemes are the hardest to create. Instead of following the predefined color schemes discussed above, a custom scheme isn’t based on any formal rules. Keep in mind things like chroma, value, and saturation when creating these kinds of color schemes.

Examples:

Industrygiant in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

The colors here all have similar chroma and saturation levels.

Palisadespark in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Again, using colors with similar chroma and saturation is effective and creates a sense of cohesion across a color scheme.

50schristmas in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Using one color with a high chroma among other colors with lower chromas is another effective method (the higher chroma color can act as an accent).

Creating a Color Scheme

Creating your own color schemes can be a bit intimidating. But it’s not as complicated as many people think. And there are quite a few tricks you can employ to create great color palettes right from the start.

Danceofcolors in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

We’ve been over the different types of color schemes above. Now, let’s try creating a few of our own. There are plenty of tools online that will help you create a color scheme, but let’s forget about those for now and just use Photoshop.

Lets try breaking away from the color scheme types already mentioned, and create some custom schemes. While it’s important to know the ways that different colors interact and how traditional schemes are created, for most design projects you’ll likely create custom schemes that don’t strictly adhere to any predefined patterns.

So, for the purposes of our project here, we’ll create three color schemes each for two different websites. Our hypothetical clients are a modern architecture design blog and a high-end women’s clothing retailer who specializes in Victorian-influenced apparel.

We’ll start with a basic monochromatic scheme, just to get a feel for each. While I mentioned that traditional color scheme patterns aren’t used as often in design, monochomatic color schemes are the exception to that rule. You’ll likely find yourself using monochromatic schemes on a fairly regular basis.

Apparel-mono in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

For our apparel store, here’s a traditional monochromatic scheme, with white added in as a neutral.

Design-mono in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

For our design blog, we’ve gone with a color scheme made up of shades and tints of gray.

Apparel-one in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

This is almost an analogous color scheme, but we’ve left out one color. It’s made up of shades of purple and reddish-purple. These two colors fall next to each other on the color wheel, and work well together, especially when they’re used in different values and saturation levels.

Design-one in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Adding a couple shades of red to the gray color scheme adds a lot of visual interest and the potential for creating extra emphasis on certain parts within your designs.

Apparel-two in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Here, we’ve gotten rid of the purple hues and switched over to a burgundy. Again this is next to the reddish-purple on the color wheel. We’ve also added in a very pale yellow tone, which sits opposite purple on the color wheel. This serves as our neutral, and looks more like an off-white color when compared to our other hues.

Design-two in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

While this color scheme at first glance looks like another standard gray and red palette, if you look more closely you’ll see that the grays are actually tones of blue. Blue and red make up two thirds of a tetradic color scheme, but work just fine together without yellow, especially when the red is kept pure but the blue is toned down to the point of almost being gray.

Why Shades, Tones, and Tints Are Important

As you can see from the color schemes above, using tints, tones, and shades in your color schemes is vital. Pure hues all have similar values and saturation levels. This leads to a color scheme that is both overwhelming and boring at the same time.

Colorblotchedpaper in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

When you mix in tones, shades, and tints, you expand the basic 12-spoke color wheel into an infinite number of colors for use in your designs. One of the simplest ways to create a professional looking color scheme is to take a few tones, tints, and shades of a given color (avoiding the pure hue), and then add in another pure hue (or close to pure) that’s at least three spaces away on the color wheel (part of a tetradic, triatic, or split-complementary color scheme) as an accent color. This adds visual interest to your color scheme while still retaining a sense of balance.

Adding in Some Neutrals

Neutrals are another important part of creating a color scheme. Gray, black, white, brown, tan, and off-white are generally considered neutral colors. Browns, tans, and off-whites tend to make color schemes feel warmer (as they’re really all just tones, shades, and tints of orange and yellow). Gray will take on a warm or cool impression depending on surrounding colors. Black and white can also look either warm or cool depending on the surrounding colors.

Neutralcolors in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Black and white are the easiest neutrals to add into just about any color scheme. To add a bit more visual interest, though, considering using a very light or very dark shade of gray in place of white or black.

Adding browns, tans, and off-white hues are a bit trickier, but with some practice you’ll find adding them gets easier. For browns, consider using a very dark, chocolate brown in place of black. A pale off-white can be used in place of white or light gray in many cases. And tan can be used in place of gray, as well (create a tone by adding some gray to make it even easier).

Using Photos for Color Schemes

One of my personal favorite ways to create a color scheme is to use a photograph. There are automated tools online that can do this automatically for you (Adobe Kuler is one of them, and my personal favorite), or you can do it in Photoshop yourself.

Using Adobe Kuler, you can either browse or search for photos on Flickr, or you can upload your own image. If you’re stumped for what colors you want to use in a website design, try searching for related words on Flickr. Sometimes this can result in finding color schemes that you might not have thought of on your own.

Let’s try this method out, both ways (using Kuler and Photoshop). Find a photo you like on Flickr, one that you think evokes the feeling of the design you want to create. I chose this one:

Poppy in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Here’s the original color scheme that Kuler gives us when using this image:

Poppy-kuler-original in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

One of the coolest features Kuler has for creating color schemes from images is their “Select a Mood” option. Included here are Colorful, Bright, Muted, Deep, and Dark. These are the schemes we get when using each of those moods with the same photo:

Poppy-kuler-colorful in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Colorful

Poppy-kuler-bright in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Bright

Poppy-kuler-muted in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Muted

Poppy-kuler-deep in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Deep

Poppy-kuler-dark in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Dark

Now, let’s create a color scheme in Photoshop using the same image. This is a bit less scientific than the way Kuler does it. I usually just pick a color with the eyedropper tool, and then keep clicking on different spots in the image until I find other colors that go with it. Here are the results (this took less than five minutes to do in Photoshop, so it’s not as time-intensive as it sounds):

Poppy-photoshop in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Creating color schemes from images in Photoshop is easiest with images that are relatively monochromatic to begin with. With more colorful images, it gets trickier.

Let’s try another one, something more colorful this time. Here’s the original image we’ll work with:

Sari in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

And here are the five color schemes that Kuler gives us from this image:

Sari-kuler-colorful in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Colorful

Sari-kuler-bright in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Bright

Sari-kuler-muted in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Muted

Sari-kuler-deep in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Deep

Sari-kuler-dark in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Dark

And here’s what I came up with in Photoshop using the same image:

Sari-photoshop in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

As you can see, the Photoshop version I came up with is completely different than what Kuler came up with, but all of the schemes above are visually appealing. The Photoshop version here took a bit longer than the one above, partly because of the diversity of colors present in the image.

The Easiest Color Schemes

We’ve touched on this a bit before, but adding a bright accent color into an otherwise-neutral palette is one of the easiest color schemes to create. It’s also one of the most striking, visually. If you’re unsure of your skills in regard to creating custom schemes, try starting out with these types of palettes.

Here are a few examples to give you an idea of what I’m talking about:

Easiest-red in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Easiest-chartreuse in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Easiest-pink in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Easiest-lightblue in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Easiest-blue in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

You can see here how using browns instead of grays makes the entire scheme look warmer, even with the blue accent color.

You can use tones of any color instead of gray or brown in this type of scheme, just keep it very close to the gray end of the spectrum for the most fool-proof results. As a general rule, cool grays and pure grays are best for more modern designs. For traditional designs, warmer grays and browns often work better.

How Many Colors?

You’ll notice that throughout this post we’ve used color schemes with five separate colors. Five is a good number that gives plenty of options for illustrating the concepts here, and it’s a workable number in a design. But feel free to have more or fewer colors in your own schemes.

Coloredpencils in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

A lot of websites might only use three colors in their designs. Others use only two. And some might use eight or ten (which is a lot trickier than using fewer colors). Experiment and use as many or as few colors as you need to for your design. But you may want to start with a palette of five colors, and then add or subtract as you see fit and as you progress through the design process.

The easiest way to add a color is to start with one of the predefined, traditional color schemes and then work out from there. That at least gives you a bit of direction as far as which other colors to consider.

10 Sites With Great Color Schemes

To give you more inspiration, here are ten websites that have excellent color schemes. Some of the schemes below might look a bit odd at first glance but seeing how they’re actually used shows the wide range of possibilities color schemes can present.

Wentings Cycle & Mountain Shop

Wentings in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Wentings-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Trivuong.com

Trivuong in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Trivuong-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Oscar Barber

Oscarbarber in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Oscarbarber-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

North East Peace III Partnership

Northeastpeace in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Northeastpeace-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

mbA Architects

Mbaarchitects in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Mbaarchitects-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Studio 13

Studio13 in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Studio13-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Joy Project

Joyproject in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Joyproject-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Morphix Blog

Morphixblog in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Morphixblog-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

El Designo

Eldesigno in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Eldesigno-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

LemonStand

Lemonstand in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Scheme:

Lemonstand-scheme in Color Theory for Designer, Part 3: Creating Your Own Color Palettes

Conclusion

We’ve really only just touched on color theory in this series. There are specialists out there who have literally spent years refining their ability to choose colors that are appropriate to any situation.

The best way to learn to create beautiful color schemes is to practice. Create a scheme on a daily basis. You can use automated tools to do this at first (like Kuler’s tool for creating schemes from images), or just open up Photoshop and start. If you see a particularly beautiful or striking color in your daily life, try creating a scheme around it. And take advantage of all the sites out there that let you upload your color schemes and organize them for later reference. This makes all those color schemes more practical and easier to use in the future.

Further Resources

Here are some additional resources that should help you in creating your own color schemes, as well as some links with more information about traditional color schemes.

  • 10 Super Useful Tools for Choosing the Right Color Palette />A round-up from Web Design Ledger that covers ten great tools for finding and creating color palettes.
  • 100 Random Colors 2.0 />This page will load 100 random colors, with hex codes. It’s a great place to check if you’re looking for color inspiration.
  • Classic Color Schemes />This article from Color Wheel Pro covers all the traditional color schemes in detail, with examples.
  • ColorMunki />Another color scheming tool. Their library colors tab is particularly useful for finding and creating monochromatic color schemes.
  • ColorSchemer />A color scheme gallery and tool with a free online version.
  • ColourLovers />A community for color and design that includes a huge gallery of color palettes, search functionality as well as tools to create your own color palettes.
/>

© Cameron Chapman for Smashing Magazine, 2010. | Permalink | 48 comments | Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
Post tags:

Leia o artigo completo aqui!/Read full article here