2

Using Pictos Icon Font

I bought the Pictos icon font a few months back and recently decided to use it on a project. I'd never used an icon font before and have always just sliced up images in Photoshop. It was a bit of a revelation as to how easy it was to implement.

The first attempt

I didn't read up on how to use an icon font properly before attempting to implement, as I thought I knew what to do. So I dived in with:

The HTML

<ul class="focusAreaToolbar">
    <li><a href="#" title="Report" class="icon">Z</a></li>
    <li><a href="#" title="Share" class="icon">M</a></li>
    <li><a href="#" title="Print" class="icon">/</a></li>
</ul>

The CSS (I'm assuming you have added the font via an @font-face)

.icon {
  font-family: 'Pictos';
}

Pictos

Easy! It worked cross browser and looked how I intended. Then I turned the stylesheets off and saw Z M / instead of any meaningful alt text.

Time to read up on the subject: http://pictos.cc/articles/using-icon-fonts/

The second attempt

The HTML

<ul class="focusAreaToolbar">
    <li><a class="toolbarItem" href="#" data-icon="Z" title="Report"><span>Report</span></a></li>
</ul>

The CSS

[data-icon]:before {
    font-family: 'Pictos';
    content: attr(data-icon);
    -webkit-font-smoothing: antialiased;
}

This makes the HTML accessible, but there was a further step now. As you can see from the image above of what I was hoping to achieve visually, there are two types of icons - with and without text. The additional span tag in the HTML was to allow this flexibility and based on an old CSS image replacement technique:

ul.focusAreaToolbar li a.toolbarItem span { display: none; }

There was one further step needed with the new approach and that was to cater for IE7. I had to support it, but the data tag used for data-icon is a HTML 5 attribute and IE7 does not have any support for HTML 5. I added the following CSS in my IE7 exceptions stylesheet to make the text render in place of the icons, a disappointing but seemingly necessary compromise in making icon fonts accessible:

IE7 only styles (called with conditional comments)

ul.focusAreaToolbar li a.toolbarItem span { display: block; }

Providing IE7 users, or those on even older browsers, aren't your primary users, I would thoroughly recommend the use of an icon font over an image or an image sprite. If you do wish to support users on older browsers, you could always consider Using Google Chrome Frame.

Posted by Michael Dunbar

Categories:

0

What is a User Experience (UX) Designer?

If you ask this question to most software industry professionals they will define it as a role that encompasses the following areas of knowledge and as a practitioner of:

  • Information Architecture
  • Interaction Design
  • Visual Design
  • Usability Engineering
  • Prototype Engineering

This list can shrink or grow depending on the project and/or organisation that the individual is practising user experience design within. I'm sure it will also evolve further as the industry matures.

This has, more or less, been my understanding of what user experience design is and the areas a UX designer will work in on a project. However, I was recently asked to write a job description for a UX design role and it made me think about who a UX professional is. Considering my current job title is User Experience Designer, the question is quite pertinent and the answer will likely be lacking in objectivity.

Who is a UX Designer?

At the end of the 1990s and the beginning of the naughties, technology was racing ahead and leaving the average Joe behind. An interesting role emerged that served to bridge the gap between technology and the user. A web designer was both a technical resource and a designer with the goal of bridging the gap between Mr Average Joe and the Internet. My first role as a web designer began in April 2000.

The world has turned a few times since then and once again technology is exploding and in danger of leaving the user behind in a state of bewilderment. We all now expect to be "connected" however we choose to access the Internet be it by computer, mobile, tablet, television, games console, etc…

The role of a User Experience Designer is to ensure that the user enjoys successfully achieving their goal regardless of technology. Their role is to bridge the gap between technology and the user. Sound familiar?

The role has evolved with the industry, but for me a good UX Designer is like the old web designer role in being both a technical resource and a design (both visual and architectural) resource in enabling a software product to help the user to successfully achieve their goal in a manner that leaves them with a smile on their face.

In a large project team the role can be broken down into all the areas of speciality I listed above. For me, a good User Experience Designer excels in all. I also see them as being involved, either directly or indirectly, in the development phase to ensure their designs are realised by the development team.

Agile development provides the perfect platform for a designer to tightly integrate with the team that will implement your designs and allow you to guide your vision to the hands of your user.

These really are exciting times for the User Experience professional.

Posted by Michael Dunbar

Categories:

1

Creating a user persona

I'm in the process of redesigning a website and am at that point where, after collecting all my initial research, am writing a series of user personas. I thought I'd share with you what I think makes a good persona.

A persona is a document that describes ways in which types of users will use your service. In design circles, a persona is essentially an archetypal representation of a user. Alan Cooper solidified the idea into a design philosophy in 1995, and designers have been using it to improve their user experience ever since.

quote

an archetypal representation of a user

A persona has two main goals:

  1. To help make design decisions
  2. To remind you that you are designing for real people with real goals and frustrations

A good persona is based on the tasks, behaviours and attitudes of your users. You must understand these before attempting to write a persona.

Avoid using comic names, joke or stock photography and long narratives in your personas. You want a project team to take your personas seriously and actually use and reference them in design conversations. Try to use names of real users, take photos of your users in the action of completing tasks relevant to your intended user journey where possible (if not use icons) and keep the description of the user to the tasks in hand.

Here is an example of one of my personas for my project. Jeremy is a GP:

Persona

Suggested reading: Communicating the User Experience - A Practical Guide for Creating Useful UX Documentation. Richard Caddick and Steve Cable.

Posted by Michael Dunbar

Categories:

0

Using Google Chrome Frame

quote

Internet Explorer 8 and below are probably still a headache when implementing user interfaces

If, like me, you have a large corporate or public sector user base to design for then Internet Explorer 8 and below are probably still a headache when implementing user interfaces. This can be a pain when creating websites, but given time you can work around most issues with conditional comments and CSS "hacks".

When writing more complex web based applications it is not always so easy. I'm currently working on an application called Connect, which I'll talk more about when the project is ready to go in my portfolio. I wanted to use HTML 5, some aspects of CSS3 and more importantly I wanted it to have a responsive interface for web and mobile device use. I began designing and prototyping the first cut of the interface and it soon became apparent that older versions of Internet Explorer simply weren't going to be up to the job.

In steps Google Chrome Frame.

Integrating Google Chrome Frame into your website

You can cut and paste the code from the website linked to above and Chrome Frame will be instantly available on your interface. As long as Chrome Frame is installed on the users machine, then the meta tag is all that is required to make any browser become a Google Chrome emulator:

<meta http-equiv="X-UA-Compatible" content="chrome=1">

or to target specific browsers:

<meta http-equiv="X-UA-Compatible" content="chrome=IE8">

There are two methods to detect and prompt to install Chrome Frame, one of which is client side and the other is server side. Both are good, but I decided to keep this client side.

<html>
<body>
  <script type="text/javascript"
   src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>

  <script>
   CFInstall.check({
     mode: "overlay"
   });
  </script>
</body>
</html>

This will open the following prompt window.

CF Default

Not very pretty I hear you say...

You can easily customise the Javascript and add a bit of CSS to make the prompt more in keeping with the theme of your interface.

<!--[if lt IE 8]>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1/CFInstall.min.js"></script>
       
        <div id="overlay"></div>
        <div id="chromeFramePrompt">
         <h2>Plugin required</h2>
            <p>We notice that you are using an old version of Internet Explorer. You will be able to use Connect, if you install the Chrome Frame plugin from Google.</p>
            <p>Alternatively, please update your browser.</p>
            <div class="buttonContainer">
          <a href="http://www.google.com/chromeframe/eula.html?user=true" class="primary">Install plugin</a>
            </div>
        </div>
       
        <script>
         CFInstall.check({
          mode: "overlay",
            node: "placeholder",
            preventPrompt: "true",
            onmissing: ChromeFramePrompt
          });          function ChromeFramePrompt() {
            $("#chromeFramePrompt").show();
            $("#overlay").show();
          }
        </script>
   <![endif]-->

Add a sprinkling of CSS and you get something like:

CF Custom

The pros and cons of using Google Chrome Frame

The pros

  • Write standard compliant CSS
  • No need for conditional comments, extra CSS files and nasty hacks
  • Use grids for responsive web design
  • A unified user experience regardless of user client capabilities
  • Less code = less testing = less development time

The cons

  • You have to install a plugin
  • The plugin is approx 170MB in size
  • You currently need admin rights to install, unless you are willing to point your users at the developers channel
  • Microsoft claim there are security issues with Chrome Frame, but then they would say that. If you use IE6 then you are obviously not interested in security anyway.

 

Posted by Michael Dunbar

Categories: