Archive

Archive for July, 2016

The Remote Worker’s Tool Belt

July 6th, 2016 No comments
toptal-blog-image-1373446619219

The Remote Worker’s Tool Belt

Starting a new remote or work from home gig, be it a contract project or a full-time job, can be a little intimidating if you’re used to going into an office day after day.

But this style of employment is growing in popularity, with some very notable companies lending it their endorsements.

I’ve successfully worked remotely using these tools for years now on projects of various scales and durations. With this post, I hope to enumerate some of the best practices that I’ve picked up for working in a variety of situations. The remote and work-from-home guide here ranges from specific recommendations for software and hardware to tips for hitting your team’s deadlines.

The Remote or Home Office Setup

I can’t stress enough the importance of having the right office setup. It will both make you more productive and appear more professional. For example, a headset is crucial for avoiding echo during online calls; little things like this go a long way when working as a remote.

Here are some tools for working remotely that I consider essential in my own home office:

  • Headset. I really like wired headsets in particular because they don’t run out of battery at critical times. You’ll be wearing it a lot, so make sure you get something comfortable. I have two iMicro headsets: one for my desk and one that I pack in my laptop bag. As a laptop bag headset, it has two great qualities: because it’s USB powered, I don’t have to worry about keeping the batteries charged, and it’s very cheap to replace if it gets broken in my bag. Actually, I find this particular headset a little uncomfortable for long conference calls; if you’re doing a lot of those, then I recommend the Corsair Vengeance 2000: a comfortable, wireless headset with battery capability, allowing you to work all day. (By the way: none of these are referral links.)
  • Quiet place to think, with a door that shuts–especially if you live with other people, and especially if you have a family.
  • Stable Internet connection, or good backup connection. For example, I have DSL and have setup tethering on my phone if the DSL goes out. If you’re constantly having Skype issues or dropping calls, you’re becoming both less reliable and less professional in the eyes of others who might be trying to manage several remote employees.
  • Skype. This is good for ad-hoc conference calls, instant messaging with clients, or even creating low ceremony chat rooms.
  • SkypeOut, which lets you take and make calls from your phone to Skype contacts. This is awesome, especially for times when you’re away from your computer and (you’ve miscalculated a time, client has an emergency, etc.).
  • Electric kettle. Sometimes I want hot coffee but, don’t want to disturb my flow to get some.
  • Gallon jug of water. For the kettle, or for drinking. For long coding sessions, or long conference calls.

A depiction of an ideal remote or work from home office set up.

Some of these sound obvious, but you’d be surprised at the number of remotes who don’t hit all the marks here. As developers, we need a quiet space to think, uninterrupted. And as remote workers, we need a quiet place to host conference calls, meetings, pair programming sessions, etc., uninterrupted. Just working on your couch is probably not a good long-term remote work solution.

Software Tools

There are a bunch of good software tools out there to supplement your typical development environment and help you overcome the challenges associated with remote work. Here are a few that I really like:

  • AwayFind, which is good for urgent emails, particularly last minute messages from an attendee of a meeting, as it forwards their messages to you via SMS.
  • Time Zone Converter, for working with clients and colleagues around the world. I like Time And Date’s World Time Clock, Every Time Zone, and World Time Buddy.
  • Chat/IRC rooms for everyone on the team. This could be formal (e.g., a Campfire room) or just a Skype chat room (in Keep It Simple, Silly) style.
  • Bug tracker–this deserves its own section, so see below.

When planning meetings, always confirm both time zones. And when you get an invitation, you should always do the math backward and make sure you come up with the same numbers. If the meeting involves multiple time zones, I like including the UTC time also. Since everyone should know their offset from UTC, this is yet another check to make sure everyone’s on the same page.

I was on a decently-sized Rails team a few years ago. Several team members worked remotely for at least part of the time, and the team culture was that much work would be done in the evenings. I proposed setting up a chat room through the official team leader at the time, pointing to Campfire or some other paid chat service. Several weeks went by with no action and I decided to setup a Skype chatroom with just the developers, to test my theory that a chat room would be an asset for the team. This experiment proved very successful – so successful that we just kept using Skype chat instead of another solution. This Skype chat room was still in use when I left the project almost a year later. Sometimes, simple can be the best option.

Later on, during a critical deadline for the same project, we set up a Skype chatroom that included the developers, business analysists, the project managers and the client, so questions could be addressed quickly by the general group. While not as active as the developer-only chat room, it still worked really well. Skype chats can be moderated and controlled by some group chat commands, setting chat roles and setting access permissions, which allows you to really customize the chatroom to your use-case. Even a setup of such simplicity can improve remote productivity.

Remote Work Best Practices: Bug Tracking

I like to know three things from a bug tracker I’m using:

  • What am I working on right now?
  • What’s on my plate for the next release of this software?
  • What are the entire team’s deliverables for this release of the software?

Each of these has a purpose.

First, “What am I working on right now?”: When you work in a traditional office, you have background chatter–this gives you have a general idea of what everyone else is doing. An explicit marker in the bug tracker system stating, “Yes, I’m actively working on this right now”, can introduce a similar pattern and feel to remote work.

Secondly, “What’s on my plate for the next release?” means, “What bugs I’m responsible for” or “What bugs I’m handling”. There’s certainly some back-and-forth in every team, but it’s also good to know who to ask if you want to grab a bug, or need some help with finalizing your bugs for the release.

It’s also possible your team doesn’t work like this at all: for example, your workflow might be where each developer is only assigned one bug to start with and picks off the unassigned pile when their one bug is done. This can be productive as well.

The “Next release of the software” doesn’t have to be anything big–I’ve been on teams where the “next release” meant, “3 days from now, we’re going to release a new alpha build for the client”. But it’s still good for everyone to know what’s coming up in this new release. Especially if you pick off unassigned tickets when your current ticket is complete.

I’ve included some recommendations for specific bug trackers at the bottom of the post.

Remote Work Best Practices: Team Communication

For some, team communication is the most intimidating part of working remotely or from home. But this will only be an issue if you let it be.

In an office, as you stroll by everyone on the way to your seat, there’s a bit of banter, people saying “Hello”. Your coworkers know you’re at work because they see you, over there, at your desk, working.

Remote workers need to be slightly more explicit–nobody knows that you’re working unless you tell them. But if you establish the right communication practices, your colleagues will be available at the press of a button, rather than a stroll across the office, down the elevator, etc.

These tips apply more for a remotely managed employee as part of a bigger team, but may be useful if it’s just you as the sole developer.

Making Your Presence Felt: Don’t Go Invisible

I picked up several of these ideas from the Wide Teams Podcast Episode 48.

At the beginning of the day, get on IRC (or whatever tool your team uses) and say “Hello”, chat about how people’s days are going, etc., etc. Even if it means getting on IRC and asking about kids, weekends, sports teams, or weekend hacking. When people know you’re currently hard at work at home, you don’t become invisible. Build a relationship and let people know that you are there.

Chat with people on chat and make sure you stay involved with your colleagues. This is different than when you bump into people in the coffee room, etc., etc. You need to explicitly reach out and stay in touch so that when you commit code or need assistance, people are ready.

‘Starting day’, ‘Lunchtime’, and ‘Be back’ Messages

Along with making your presence felt, you should also let your remote teammates know when you’re not working. Just like in a traditional office setting, you don’t want to disappear for the rest of the day and leave your colleagues hanging.

If you’re on a team with a number of other developers or managing remote employees, it makes sense to check in when you start your work day. A simple “Good morning, everyone” to let people know that you’re at your desk ready to start work on the project, and no longer at home or in bed.

Sending “Be back in 1 hour” messages for lunch or work breaks during the day is nice too. Remote work is great for many things, but one worrisome scenario is that you ask your colleague a question and receive no response. Are they not responding because they’re away for 30 minutes? Or because they are deep in the zone and not listening to chat? Maybe in a meeting? “Be back in…” messages can alleviate these concerns and smooth out the workflow.

When you’re done for the afternoon, let people know when you’ll be back. Maybe it’s “See you all in the morning”, or “Be back later this evening to get [x] done”. But like the “Back in 1 hour” messages, they set a certain expectation to which your team can adapt.

There’s an interesting startup called Sqwiggle that may solve some of these problems (although I haven’t tried it myself yet). In addition to taking a picture of you every few seconds, it also lets team members click on your picture to start video/audio chatting, as well as providing a text chat component. The idea behind the picture is to see, at a glance, if you’re at your computer or not. (There’s nothing worse than trying to chat with someone online and not hearing back quickly. Are they caught up with something else? Deep in the zone? Don’t see the chat notification? In the bathroom right now?). I heard about Sqwiggle on the Wide Teams Podcast Episode 83.

On Projects Where You Can Setup the Best Practices

Remote freelancing gigs are always different. (That’s part of the appeal!) Sometimes you’re brought into an existing team of developers purely as staff augmentation. Maybe this team has been together for some time and, in that case, they’ve already established communication practices.

On the other hand, sometimes you’re the only developer on the project, working with a non-technical client. You can setup your own software development best practices and have some control over how to run the operation. Below are some best practices from my decade or so of remote work experience. Mostly, these are targeted at half-week (20 hours/week) or full-week schedules (40 hours/week).

Standup Meetings

There’s something to be said about holding standup meetings to talk about the state of the project. These are very common in traditional offices, but there’s no reason why they can’t be productive for the remote team: they’re just another way to enforce communication between the two parties: client and developer.

A traditional stand-up meeting asks what you were working on yesterday, what you’ll be working on today, and if there are any obstacles in your way. This format may or may not work given the size of your team: if it’s a single developer project, then these actual questions make no sense.

How often you should have a standup meeting is really dependent on team size and culture. However, here are my recommendations:

  • 1-3 developers: 2 standup style meetings a week
  • 4+ developers: daily standup meetings

With 1-3 developers, these questions are mostly self-evident: you know what each developer is doing because it’s easy to track their individual work as they plow through tickets: everyone knows what everyone is doing, because there’s just not that many people doing work.

With larger remote teams, there are more parts in motion: you want to make sure that nobody is stepping on anyone’s virtual toes by replicating work, or making incompatible changes.

Given Toptal‘s per-week payment structure, two meetings a week gives the client enough time to express concerns about the project before they feel cheated out of a weekly rate. Just having one meeting a week could mean that the client is unhappy about the quality of work, and the developer has no time to adjust the deliverables.

Advanced remote teams may have other methods of keeping all the stakeholders on the same page without scheduling an actual meeting while they work from home. I still like getting on the phone/Skype/Hangouts with someone and having a meeting that way.

For small teams, two standup meetings a week works really well: course corrections are made quickly, but developers still have something substantial to report during each meeting.

Delivering on the Next Release Remotely

Depending on the size of the project, I like deliverables sent to the client weekly for small (1-2 developer), and bi-weekly for larger (3+ developer) projects. This rhythm gives developers enough time to complete sizable chunks of work, including an interface (or improved user experience) for the client to see.

For non-technical clients, the only metric by which they can guage progress is what they can see on the screen.

It’s important for developers to remember, especially with non-technical clients, that progress you can visualize with a user interface is often the only thing that matters to the client. Non-technical clients don’t care that you pushed out 500 lines of code this week, or that you had a hard time interacting with some web service; the only metric by which they can gauge progress is what they can see on the screen. That’s not to say that doing good work on the back-end is irrelevant, but rather that you need to make all this good work tangible in the eyes of the client.

This image depicts the importance of deliverables, especially in a remote work situation.

Which is why I like weekly or bi-weekly deliverables. Anything shorter than that often puts the developer in a hard place: maybe they get stuck doing back-end work for two days and don’t have time to finish the interface, so they have nothing to show the client.

Depending on the type of software project, not all of these client releases will be released to the public. For example, if you’re working on a Rails project, you may want to deploy approved changes immediately; on the other hand, with a mobile app, you may call a release “1.3a10”, but the current release is just part of the bigger feature set of a new 1.3 version of the software that will be deployed later.

This is where the remote bug tracker best practices come into play. With bug tracking, the client knows:

  1. What’s on the team’s plate for this deliverable
  2. If it’s been completed
  3. If the work has been approved by the client.

The client knows what to expect from this release, and developers know what work is ahead of them.

If your remote team is mature enough to use continuous deployment and/or Kanban then that’s fine. However, these are both very advanced techniques that are more suited towards organizations with a strong, developer-based culture. Most organizations, where custom software development is seen as necessary but costly, are probably not ready for either of these techniques. Why’s that? Two things I’ve seen is that the client can’t keep up with the number of changes developers want them to review, or priorities change too rapidly for development to get any one thing done.

Recommendations

If you do happen to walk into a team where you’ll be establishing the best practices, I’ve listed some tools below for managing your remote work. Keep in mind that these are just my recommendations: certainly, this guide isn’t for everyone; and if you don’t like these tools, there is probably a tool that fits your needs better.

  • Planscope.io, in weekly mode. This is a time tracker + bug tracker + project estimation tool that sends clients daily emails when you work on their project and lets them see how things are going in terms of progress and budget. This is great for projects of 1-4 developer/months in size.
  • App Trajectory is a bug tracker for small teams with a focus on estimating and breaking the project down into one-to two-week chunks (iterations). App Trajectory can tell you how much work you’re completing in an iteration, and how many iterations until all the known work is complete. This is great for projects 2-12 developer/months in size.
  • Pivotal Tracker is a bug tracker tool for clients with a focus on Agile methodologies. This is great if you are doing formal Agile iterations or have a project size measured in developer/years.
  • FlowDock for chat. Flowdock offers some advantages over plain IRC or Skype chat: in addition to integrating with popular services, it also lets you tag conversations for quick reference later. FlowDock also keeps a list of status activities (code checkins, etc.) which are separated from general chats. (I.e., in the web interface, automated status updates are on the left, while chats are on the right.)
  • Again, Campfire is also great for chat.

Conclusion

Getting started with remote or work from home can be quite an adjustment, both for you and the client. I’ve had it go very right, and very wrong. But, when it goes right, it can be an excellent way for clients or employers to solve the “talent crunch” problem, and create a wider range of opportunities for developers who live outside major technological centers or “startup” hubs. There’s a whole world of efficiency to be gained from developers working together remotely with the right best practices in-place.

This was original written by Ryan Wilcox on TopTal’s blog

Read More at The Remote Worker’s Tool Belt

Categories: Designing, Others Tags:

Drawing the Facebook Heart Emoji in Illustrator

July 6th, 2016 No comments
Dansky_Learn How to Draw the Facebook Heart Emoji in Adobe Illustrator

In this tutorial, we’re going to learn how to draw the Facebook ‘love’ heart emoji in Adobe Illustrator.

1. Create a New Document.

2. Select the Ellipse Tool, Left-click anywhere on the artboard and hold Shift to draw a circle. Give this circle a black Fill and remove any Strokes.

3. Turn on Smart Guides by going to View > Smart Guides. Select the Pen Tool, and Left-click on the right-centre anchor point on the circle created in Step 2.

drawing-facebook-heart-emoji-illustrator-1

4. Hold Shift and Left-click below the anchor point that we created. This is going to be the base (lowest point) for our heart icon.

5. Left-click just above the left-centre anchor point of the circle, and Hold to drag out the curve. If done correctly, you should now have created half of the heart icon. With both shapes selected, go to Window > Pathfinder, and select Unite to combine these shapes into one object.

drawing-facebook-heart-emoji-illustrator-2

6. With the half-heart shape selected, go to Edit > Copy, and then Edit > Paste in Place. Next go to Object > Transform > Reflect, and reflect along the Vertical Axis. Drag this reflected shape over to the right until it snaps in place alongside your first half of the heart.

7. Select both halves of your heart icon, and go to the Pathfinder Palette, and select Unite to combine into one complete heart shape.

8. With your heart shape selected, Double-click the colour picker in the Toolbar, and specify a 6 digit hex colour of #F25268. This is the colour of the Facebook heart emoji.

drawing-facebook-heart-emoji-illustrator-3

9. If the ‘dip’ in the centre of your heart (at the top) is too low, then you can redraw it using the Pen Tool to be more shallow. Draw the first half of the dip using the Pen Tool, and then repeat Steps 6-7 to create the other half and merge into one symmetrical shape.

10. Once you have your new, slightly shallower ‘dip’, select everything on the artboard and in the Pathfinder Palette, select Unite to combine everything into one complete shape.

drawing-facebook-heart-emoji-illustrator-4

11. Adjust the Width and Height of your heart to make it taller, shorter, narrower or wider as desired. Try not to adjust these values too much however, as this will skew your heart out of shape – this step is more about making any minor corrections to the overall size of your heart, without distorting it too much out of shape.

drawing-facebook-heart-emoji-illustrator-5

Download Adobe Illustrator.

Read More at Drawing the Facebook Heart Emoji in Illustrator

Categories: Designing, Others Tags:

Face facts: You’re replaceable, and there’s only 2 things you can do about it

July 6th, 2016 No comments

Let’s say that co-owners of a business who know nothing about creating a website (except that they need one) are in the market for a website.

They need a site that gives potential customers all the info they need about the boutique and includes an e-commerce section, too. And ideally, they’d like the project to be wrapped up sooner, rather than later, if you please.

These business owners are going to consider the offerings of the first four readers of this article.

You’re one of the four, of course…

You create websites. You have great experience and know you’ll be able to deliver exactly what the business owners need. You charge a fair price—one that adequately values your labor and experience—and always deliver an end product that’s up to spec.

The reader next to you produces a website that meets all of the owners’ requirements – but charges half your price. The next reader in line creates a website (that also meets basic requirements) at half your turnaround time. And the person who came before all three of you offers a faster turnaround and lower price on a website that—yep—still meets all of the owners’ requirements.

Whose work is better?

Let’s say that you have a strong hunch your competitors are cutting corners. You’re pretty sure at those prices and turnaround schedules, they’ve got to have subpar practices in place. They put in zero effort to optimize the site for search. They have no strategy to the sites they create. Or they just have (ugh) crappy, generic design.

You could try to secure the boutique owners’ business by pointing out all of the many, many ways your work is the best. You could stress your years of experience. You could tell your potential customers again and again that you create great websites. The best websites. Better than all the websites of all the other designers they’re considering, though, of course, you really have no surefire way of determining exactly who they’re considering or what your competitors’ final products are like.

Unfortunately, your competitors are probably doing the same thing.

And your potential customer doesn’t know who to believe. But whatever. They need this thing done. They choose the designer with price that is lowest and turnaround that’s fastest, since to them all competitors’ experience and final sites are on-par.

How are you supposed to make yourself stand out?!

If you can’t do it cheaper or faster and so. many. customers. don’t understand why your techniques or practices are better than other companies’, how the hell are you supposed to stand out in such a crowded field?

I see two big opportunities to set yourself apart:

Option 1: Find a niche and burrow deep. Like, really deep

This one’s all about zeroing in on your customer.

Maybe it’s crafting strategy and producing websites for food trucks serving woodfired pizza. Maybe it’s oral surgeons’ offices. Maybe it’s California boho-chic boutiques and fashion designers. General contractors. Elementary schools. Veterinarians.

Whatever it is, find your niche. Narrow it down. Then narrow it down some more. Learn all the ins and outs of maxillofacial surgery, or the precise message that boho-chic boutiques are trying to send. Orient your tone, sales pitch, and offerings to cater to that niche. Reach out to trade groups. Conferences. Professional networks.

Focusing in on a specific niche doesn’t mean that you’re closing yourself off to other customers. Instead, it’s a way to create a stronger connection with a specific subset of buyers. And that connection can raise you above your competitors in the eyes of your customer.

Option 2: Play to your differences, not just your strengths

This one’s about focusing in on you.

When you offer a final product, as we web designers do, you’re replaceable. People all around the globe can create websites. And an endless array of competitors can beat you in price, efficiency, or other commodified measures.

The one thing that your competitors can’t beat you in is being you. Only you are you.

I know that sounds pretty cheesy, but it’s true. There’s something that makes you you, and not someone else. There’s something that makes your team your team, and not any other team. There’s some quality that catches the attention of others and piques their interest—oh, that’s different.

Stand out. Engross them with your you. Find that unique point of difference, explore it, emphasize it, solidify it. When you zero in on what makes you different, not just what makes your skills strong, or your process solid, you stand out.

LIFETIME ACCESS: 500,000+ Stock Vectors, Illustrations and Icons – only $39!

Source

Categories: Designing, Others Tags:

40 Super Sleek Fonts for Clean Web Design

July 6th, 2016 No comments
Screen Shot 2016-07-06 at 9.37.02 AM

A few weeks ago, I showed you some of the best fonts for use in grunge style design. Creating grungy designs can be fun, but sometimes a site requires a cleaner approach, one where artsy design elements take a back seat to clear presentation of content. Typography plays a big role in this type of design. If you have been struggling to find the right font for your clean designs, here are 40 of them that are both clean and beautiful.

Museo Sans

Geo Sans Light

Geo Sans Light

Duepuntozero

Duepuntozero

Oregon LDO

Oregon LDO

Sansation

Sansation

Engel Light

Engel Light

Comfortaa

Comfortaa

Forgotten Futurist

Forgotten Futurist

Walkway

Walkway

Steiner

Steiner

Eurofurence

Eurofurence

Baar Metanoia

Baar Metanoia

Existence Light

Existence Light

Asenine

Asenine

Anna

Anna

Cicle

Cicle

Aubrey

Aubrey

Waukegan LDO

Waukegan LDO

Qlassik

Qlassik

Bebas

Bebas

Mank Sans

Mank Sans

Yorkville

Yorkville

Redring 1969

Redring 1969

Aldo

Aldo

Blue Highway

Blue Highway

Steelfish

Steelfish

Opticon One

Opticon One

Y2K Neophyte

Y2K Neophyte

Jacks Font

Jacks Font

Swansea

Swansea

Vegur

Vegur

Albertino

Albertino

Print Clearly

Print Clearly

Liberation

Liberation

Yoxall

Yoxall

Lois Ann

Lois Ann

SF Arborcrest Medium

SF Arborcrest Medium

APHont

APHont

Fertigo Pro

Fertigo Pro

Anivers

Anivers

Read More at 40 Super Sleek Fonts for Clean Web Design

Categories: Designing, Others Tags:

Accessible SVGs

July 6th, 2016 No comments

Scalable Vector Graphic (SVG) is emerging as the preferred graphic format to use on the web today. Are you abandoning the icon font or replacing old pg, gif and png graphics for the well-supported SVG, too? Let’s see how this will impact users of assistive technology (AT) and what is needed in order to ensure a great user experience for everyone.

Graphics and Alternative Text

Before getting started with accessible SVGs, a few quick things to consider regarding graphics, accessibility and alternative text.

1. Does the graphic in question need alternative text?

If a graphic is purely decorative, it does not need to have alternative text.

All tags need the alt attribute to be valid, but the attribute can be left empty (no space) and still validate. ?

2. What is the context of the graphic and the text surrounding it?

If there text/content surrounding the graphic that provides the alternative text, it does not need additional additional alt text. For example:

See the Pen SVG as img src for figure with figcaption by Heather Migliorisi (@hmig) on CodePen.

What is the most appropriate alternative text for the graphic when it needs an alt attribute (see example 4 for more information)? Depending on the content of the image, it can handled differently:

See the Pen SVG as img src for figure with figcaption by Heather Migliorisi (@hmig) on CodePen.

3. Does the graphic have a function? If so, it should be conveyed to the user

For example, instead of labeling icons exactly as they are represented:

Bad Code Example:

<a href="http://codepen.io/username">
  <img src="codepen_icon.png" 
      alt="CodePen Logo">
</a>

Provide some context for the user:

Good code example:

<a href="http://codepen.io/username">
  <img src="codepen_icon.png" 
  alt="See Picked Pens">
</a>

For more information, please read WebAIM’s, “Alternative Text” article for a comprehensive understanding of accessible graphics and the WAI Web Accessibility Tutorials on Images.

The following examples were developed to work with:

  1. Browsers that support SVG: IE 10+, FF, Chrome and Safari
  2. Most common screen readers used: Jaws, NVDA, VoiceOver (VO) and Narrator

Basic Image Replacement

For the most basic implementation of an SVG, we have following options:

1. SVG as img src

See the Pen SVG as img src by Heather Migliorisi (@hmig) on CodePen.

Let’s check our browser usage stats to see if we need to do anything further. If the site’s users are on latest version (Safari Desktop Version 9.1.1 or iOS Version 9.3.2) or newer we can stop here.

However, if the majority of the users are still on older versions of Safari or iOS, we need to add role="img" to the Pixels, my super cute cat.

? Shout out to the folks that fixed the Safari/WebKit bug!

This example is fine to use as just a basic image replacement, but it doesn’t allow for us to access to contents of the SVG for either AT or CSS/JS. So, if we want more control over the SVG, we’ll need to inline the SVG directly in the HTML.

2. Inline SVG

Inlining the SVG provides more predictable results and control than if it is added with or because the SVG source is directly available in the DOM which is exposed to the accessibility API that is used by AT.

Let’s take the same basic SVG from the example and say we want to add movement to the eyes. We can do that via JS if we inline the SVG directly into the HTML.

See the Pen Basic SVG – Cat by Heather Migliorisi (@hmig) on CodePen.

Since this SVG does not contain any visible text that describes the graphic, we need to add the alternative text (invisible) by:

  • Inside the , add:
    • A short title of the SVG
      • must be the first child of it’s parent element
      • will be used as a tooltip as the pointing device moves over it
  • A description can be added if needed
    • a description – note this is not read by narrator (bug filed)

According to the W3C specification, we shouldn’t have to do anything extra for SVGs beyond providing the </code> and possibly a <code></code> because they should be available to the Accessibility API. Unfortunately, browser support is not quite there yet (bugs reported for: <a target="_blank" href="https://bugs.chromium.org/p/chromium/issues/detail?id=231654&q=SVG%20%20title%20attribute&colspec=ID%20Pri%20M%20Stars%20ReleaseBlock%20Component%20Status%20Owner%20Summary%20OS%20Modified">Chrome</a> and <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1151648">Firefox</a>). </p> <p>So, to ensure the AT can access the <code><title></code> and <code></code>:</p> <ul> <li>Add the appropriate ID’s to the <code><title></code> and <code></code>: <ul> <li><code><title id="uniqueTitleID">The title of the SVG

  • A longer, more complete description for complex graphics.
  • On the tag, add:
    • aria-labelledby="uniqueTitleID uniqueDescID" (use the title and desc ID’s) – both title and description are included in aria-labelledby because it has better screen-reader support than aria-describedby (see tip #4)
  • One more thing:

    • On the tag, add:
      • role="img" (so that the SVG is not traversed by browsers that map the SVG to the group role)

    Want to add a simple animation, such as eyes blinking?

    setInterval(function blinkeyes() {
      var tl = new TimelineLite();
      tl.to(".eye", .4, {scaleY:.01, repeat:3, repeatDelay:.4, yoyo:true, transformOrigin: "50% 70%", ease:Power2.easeInOut});
      return tl; 
     }, 5000);
    
    var master = new TimelineLite(); 
    master.add(blinkeyes());

    Update the title/description so that it accurately explains the image.

    <desc id="catDesc">An illustrated gray cat with bright green blinking eyes.</desc>

    See the Pen Simple Inline Accessible SVG Cat – using title and desc by Heather Migliorisi (@hmig) on CodePen.

    3. Embed SVG via object or iframe

    bug warning For now, I’d steer clear of trying to use and . In terms of use with a screen reader, they are not adequate.

    Here’s how it went for me:

    Choose your method of embedding the SVG and add tabindex="0":

    <object type="image/svg+xml" 
        data="/path-to-the-svg/filename.svg" 
        width="50%" 
        tabindex="0">
      <img src="Fallback_image.jpg" alt="alt content here">
    </object>
    <iframe src="/path-to-the-svg/filename.svg" 
        width="65%" 
        height="500" 
        sandbox 
        tabindex="0">
      <img src="Fallback_image.jpg" alt="alt content here">             
    </iframe>

    Starting with the final SVG from the inline example, we need to replace role="img" with role="group" on the svg.

    <svg id="cat" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 800" aria-labeledby="pixels-title pixels-desc" role="group">

    Here’s where it starts to go down hill…

    Add a element in the SVG that contains the content of </code> and possibly <code></code> (for NVDA):</p> <pre><code><text id="nvda-title">A cute, gray cat with green eyes. Cat illustration by Heather Migliorisi.</text></code></pre> <p>Then, add a class to hide the text visually, but keeping the content available for screen readers. We can do this by setting the <code>font-size: 0</code>.</p> <pre><code>.sr-only { font-size: 0; }</code></pre> <p>So, you end up with both the <code><title></code> (and possibly <code></code>) <em>and</em> <code></code> containing the same content in order to support both JAWS and NVDA.</p> <div><strong>NOTES:</strong> </p> <ul> <li>Neither <code></code> nor <code></code> worked in Chrome. Chrome sees the fallback content, so you could throw alt text in there, which would be a third (or fourth) place to store the same content.</li> <li>JAWS does not read the <code></code> content (beyond what is in aria-labelledby/describedby)</li> </ul> </div> <p>I recommended (based on browser/screen reader support) to use <code><img></code> if possible. Although it’s not always possible, as object/iframe support interactivity/animation where img often does not, and <a target="_blank" href="https://css-tricks.com/a-complete-guide-to-svg-fallbacks/">fallbacks</a> are tricker. </p> <h3>Icons</h3> <p>There are several articles on the topic of replacing the icon font with an SVG. I was curious if using SVG for the icons would allow for easier accessibility implementation. Meaning: if the browsers would support the <code><title></code> when you implement the SVG with <code></code> in the main source SVG. Sadly, nope. But, it’s easy enough to do so with the icon itself and we’ll show you how below.</p> <p>Once the SVG file is created that contains the icons (I like to use <a target="_blank" href="https://icomoon.io/">icomoon</a> for this) and it is included in the document (http://codepen.io/hmig/full/OXWMLr/), we need to determine the patterns (icon + link, icon + text, just the icon, ect) that are needed for the site. From those patterns, we can devise the appropriate method of applying alternative text.</p> <p>To start, the code for icons usually looks like this from an icon generator:</p> <pre><code><svg> <title>phone</title> <use xlink:href="#icon-phone"></use> </svg></code></pre> <h4>Example 1: Standalone Icon, Meaningful</h4> <p>Meaningful icons need alternative text. This method is very similar to the “Basic Image Replacement, Inline SVG Example.”</p> <ul> <li>Update the title text to be reflective of what the icon is there for … let’s say it’s showing a service supports mobile devices </li> <li>To the <code></code>, add <code>role="img"</code> (because the SVG is not mapped consistently, so it is not always acknowledged by AT. For example, the following does not work: Mac – VoiceOver + Chrome or Safari, Windows – NVDA + FF)</li> </ul> <pre><code><svg role="img"> <title>Supports Mobile Devices</title> <use xlink:href="#icon-phone"></use> </svg></code></pre> <p>Again, let’s check our browser usage stats to see if we need to do anything further. If the site’s users are on latest version (Chrome 49.1) or newer we can stop here.</p> <p>However, if the majority of the users are still on older versions of Chrome, we need to add an <code>id="xxxx"</code> to the <code><title></code> and an <code>aria-labelledby="xxxx"</code> on the <code></code>.</p> <p>? Shout out to the folks that fixed the <a target="_blank" href="https://bugs.chromium.org/p/chromium/issues/detail?id=566252">the Chrome bug</a>!</p> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/EyxBQa/">Example 1: Standalone SVG Icon, Meaningful</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <h4>Example 2: Standalone Icon, Decorative</h4> <p>Decorative icons (icons that repeats the information conveyed by text or do not add significant value) do not need alternative text and they should be hidden from the screen reader. For this example, hide the SVG with <code>aria-hidden="true"</code>.</p> <pre><code><p> <svg aria-hidden="true"> <title>checkmark</title> <use xlink:href="#icon-checkmark"></use> </svg> Success! Your order went through. </p></code></pre> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/yJYVpa/">yJYVpa</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <h4>Example 3: Linked Icon, no text</h4> <p>For linked icons that are not paired with text, we can use aria-label on the <code><a></code> element to provide descriptive, alternative text. Add <code>aria-label="See Picked Pens"</code> the <code><a></a></code> element.</p> <pre><code><a href="link" aria-label="See Picked Pens"> <svg> <use xlink:href="#icon-codepen"></use> </svg> </a></code></pre> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/dXYOZj/">Example 3: Linked Icon, no text</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <h4>Example 4: Linked Icon, with static text</h4> <p>Again, for linked icons that are paired with text, let’s use <code>aria-label</code> on the <code><a></a></code> element to provide descriptive, alternative text. </p> <p>With <code>aria-label</code> on the anchor tag, the screen reader does not announce the text inside of the link. Add <code>aria-label="See Picked Pens"</code> the <code><a></a></code> element.</p> <pre><code><a href="link" aria-label="See Picked Pens"> <svg> <use xlink:href="#icon-codepen"></use> </svg> CodePen </a></code></pre> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/NrGbwP/">Linked Icon, with static text</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <h4>Example 5: Linked Icon, with dynamic text</h4> <p>Let’s say there’s a dynamic value in the linked text + the icon. Here, we should not use <code>aria-label</code> on the link because then the value of the dynamic text is lost. For this example, we can use spans and the off-screen text method. The numeric value in the span with id=”itemsInCart” is the dynamically added element.</p> <ul> <li>Add an additional span with the rest of the alternative text (e.g. “items in your shopping cart”)</li> <li>Add the <code>class="offscreen-text"</code> to visually hide this text</li> <li>Add <code>aria-hidden="true"</code> to the svg</li> </ul> <pre><code><a href="http://example.com" id="cart"> <span id="itemsInCart">0</span> <span class="offscreen-text">items in your shopping cart</span> <svg aria-hidden="true"> <use xlink:href="#icon-cart"></use> </svg> </a></code></pre> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/mEeOBv/">Example 5: Linked Icon, with dynamic text</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <p><strong>Complete list of the icon examples:</strong> </p> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/yObzRL/">Accessible SVG Icons</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <h3>Complex images – An Accessible Graph</h3> <p>It’s great that we can use SVGs instead of PNGs and JPGs, especially when it comes to complex web content like a graph. It would be excessive to provide all of this info in the <code>alt</code> attribute, so providing alternative text for this image (as a png/jpg) would be tricky. Instead, we can use an SVG and make all of that text directly accessible! </p> <figure></figure> <h4>1. Setting up the file</h4> <p><strong>Order of layers</strong> – In Adobe Illustrator, the layers will export in the SVG from the bottom up. This is important because we want to set up the layers in the order we want them to be logically traversed by the keyboard for reading. The “Jaws” group should be listed first in the code, so the Jaws layer is at the very bottom in Illustrator.</p> <figure><img decoding="async" src="https://css-tricks.com/wp-content/uploads/2016/06/image06.png" alt=""></figure> <p><strong>Layer Naming</strong> – It’s a good idea to name the layers because they will be added as id’s to the exported SVG. Don’t worry if layers are named the same, the id’s will be incremented in that case.</p> <figure><img decoding="async" src="https://css-tricks.com/wp-content/uploads/2016/06/image08.png" alt=""></figure> <p><strong>Layer Grouping</strong> – It’s important to note how the items are grouped here. Text label + the key item (for color) and the bar in the graph are all contained in a group for each graph variant (Jaws, NVDA, ect). The reason for setting it up this way is for someone using a screen reader for reading comprehension. In some browsers, the user can click the bar and the corresponding text is read out and/or highlighted.</p> <p><strong>Saving/exporting</strong> – As a safeguard, I like to keep two versions of my SVG, one for editing in Illustrator and the other for code editing. So, I do a “save as” for the illustrator version and “file > export > svg” for the cleaner, web version.</p> <p><strong>Optimization</strong> – The last thing before hand-editing the SVG, is to optimize it. Jake Archibald’s tool, <a target="_blank" href="https://jakearchibald.github.io/svgomg/">SVGOMG</a>, is an excellent tool for this. Add the SVG, then, switch to “CODE” view to see exactly what the feature toggles are doing. Set “prettify” on because we still have to edit the code, so we want it to be readable. </p> <figure><img decoding="async" src="https://css-tricks.com/wp-content/uploads/2016/06/image00.gif" alt=""></figure> <p>It is best to hold off on hand-editing the SVG (adding accessibility features) until it’s 100% certain the SVG is complete design-wise. Once we start down the road of hand-editing, it can be hard to catch if an editor (Inkscape/Illustrator/etc) has inadvertently changed something that was explicitly added.</p> <p><strong>Source control</strong> – If using a git-based variation of source control (git, SourceTree, ect), commit the SVG. Managing the file through one of these will help catch any funky/unwanted changes if it is opened and saved from Illustrator (or other visual editors) after it was edited by hand because any code (aria-*) Illustrator doesn’t understand, it removes/deletes. </p> <h4>2. Let’s make it accessible</h4> <p><strong>Screen reader traversable</strong> – Make sure the SVG is traversable in all browsers by adding <code>role="group"</code> to the <code></code>. According to the new SVG spec, they should map to the graphics-document role. However, the spec is still in working draft mode, therefore, the browsers have not implemented that yet. </p> <p><strong>Title and desc</strong> – Since we have text elements in the SVG that acts like the title and description, let’s link them up to the <code></code> element with <code>aria-labelledby="graph-title</code>” and <code>aria-describedby="graph-desc".</code></p> <p><strong>Content cleanup</strong> – Clean up any weird elements that Illustrator may have created. For example, several <code></code>s were added to the following <code></code> element. A screen reader may read out the individual letters (“J” “a” “w” “s” “- 44%”) instead of the word (“Jaws – 44%”). So, remove the unnecessary <code></code>s wrapped around the individual letters.</p> <p><strong>Example bad:</strong></p> <pre><code><text class="cls-2" transform="translate(345.49 36.45)"> J <tspan x="6.23" y="0">a</tspan> <tspan x="14.22" y="0">w</tspan> <tspan x="26.51" y="0">s - 44%</tspan> </text></code></pre> <p><strong>Example fixed:</strong></p> <pre><code><text class="cls-2" transform="translate(345.49 36.45)"> Jaws - 44% </text></code></pre> <p><strong>Add a link to the survey</strong> – Content-wise, since this graph is based-upon a survey, let’s link to it. For now (it is not a requirement in SVG 2), in SVGs, add <code>xlink:</code> to the <code>href</code>.</p> <pre><code><a xlink:href="http://webaim.org/projects/screenreadersurvey6/#used"></code></pre> <p>For more information on xlink, check out <a target="_blank" href="http://thenewcode.com/1066/Well-Always-Have-Paris-Using-SVG-Namespacing-and-XLink">“We’ll Always Have Paris: Using SVG Namespacing and XLink”</a> by Dudley Storey.</p> <p><strong>Add semantic roles</strong> – Add some semantic roles to the groups containing the bars, label and key. Let’s make the group that contains all of these a list because most screen readers will announce the total number of items in the list and what position in the list the current item is:</p> <pre><code><g id="bars" role="list"></code></pre> <p>and the individual groups inside can be listitems:</p> <pre><code><g id="Jaws" role="listitem"></code></pre> <p><strong>Add a label to the list</strong> – Provide AT users a little more info about the graph they are interacting with. Add a label to the group containing the list with <code>aria-label="bar graph"</code>.</p> <pre><code><g id="bars" role="list" aria-label="bar graph" transform="translate(0,58)"></code></pre> <p><strong>Test and fix</strong> – Let’s <a target="_blank" href="https://www.paciellogroup.com/blog/2015/01/basic-screen-reader-commands-for-accessibility-testing/">test it with the screen reader</a>. As expected, the screen reader reads through the title, desc and key list items. But, it also goes through the percentage values on the y-axis, each rect and line. </p> <p>A quick note on hiding elements (rect, circle, text) from AT in an SVG – The only way to “hide” elements from a screen reader in an SVG is by adding <code>role="presentation"</code> to it. What this does is negates the element’s native semantics from mapping to the accessibility API. If you have multiple items you want to hide, unfortunately, you cannot wrap everything in a <code></code> and add the <code>role="presentation"</code> to it. The only thing that does is hide that element from the AT, the children of it are still traversable. So, we have to add <code>role="presentation"</code> on each individual element we want hidden. On the bright side, the new SVG Accessibility Spec aims to ease a lot of this burden. Elements, such as shapes without alt text, will be treated as if they had a role of none or presentation.</p> <p><strong>Hide the shapes/lines</strong> – Hide the shape elements from the screen reader by adding <code>role="presentation"</code> to each element.</p> <figure><a target="_blank" href="http://webaim.org/projects/screenreadersurvey6/"><img decoding="async" src="https://css-tricks.com/wp-content/uploads/2016/06/image02.png" alt=""></a></figure> <p><strong>Hide Text Elements</strong> – Hide the confusing text elements (as shown above highlighted in yellow – the 0-50% on the y-axis, the x/y axis lines and the bars in the chart) from the screen reader by adding <code>role="presentation"</code> and <code>aria-hidden="true"</code>.</p> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/MeJKee/">Accessible Complex Image – Bar Graph</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <p>Screen reader demo videos: </p> <ul> <li><a target="_blank" href="https://www.youtube.com/watch?v=7mKPbuqJC3k&feature=youtu.be">JAWS</a></li> <li><a target="_blank" href="https://www.youtube.com/watch?v=Y8-2YzW0xds&feature=youtu.be">NVDA</a></li> <li><a target="_blank" href="https://www.youtube.com/watch?v=vBuIzme3CJ0&feature=youtu.be">VoiceOver</a></li> <li><a target="_blank" href="https://www.youtube.com/watch?v=EHeRnmBEWoU&feature=youtu.be">Narrator</a></li> </ul> <h4>Interactive images</h4> <p>Even better than accessible charts and graphs are accessible interactive images. Let’s look at a simple timeline infographic. What this breaks down to is: the top “title” text section and the timeline section. From there, the timeline breaks down to time segments that contain a title, image and description.</p> <figure><img decoding="async" src="https://css-tricks.com/wp-content/uploads/2016/06/image03.png" alt=""><br /><figcaption>The inspiration for this example was found on <a target="_blank" href="http://tympanus.net/Tutorials/InteractiveSVG/">codrops</a>, but I wanted to see if I could make an accessible variation. The adorable cat icons are from <a target="_blank" href="http://iconka.com/en/">iconka</a>.</figcaption></figure> <p>Let’s add some life to this and animate the time segments. Instead of showing all of the info at once, let’s just show the time and activity title circle. When a user interacts with the time area or activity circle, the rest of the content will be revealed.</p> <h4>1. Setting up the file</h4> <p>First, follow the “Setting up the file” section previously covered in this article. Starting from the web optimized version, let’s skip past the css animation part is set up and dig right into making it accessible.</p> <h4>2. Making it accessible</h4> <p>Style properties were removed in the following examples to simplify the code, but are in the actual demo.</p> <p><strong>Screen reader traversable</strong> – Make sure the SVG is traversable in all browsers, so add <code>role="group"</code> to the <code></code>.</p> <pre><code><svg id="InteractiveSVG" role="group"></code></pre> <p><strong>Title and desc</strong> – For this example, we can use the text at the top of the SVG <code></code> as the title and link it by adding <code>aria-labelledby</code> to the <code></code>.</p> <figure><img decoding="async" src="https://css-tricks.com/wp-content/uploads/2016/06/image09.png" alt=""></figure> <pre><code><svg id="InteractiveSVG" aria-labelledby="timeline-title" aria-describedby="timeline-desc" role="group"></code></pre> <p>Then, add an id to the <code></code> and link it up with <code>aria-describedby</code> on the <code></code>. </p> <pre><code><desc id="timeline-desc">An Interactive Timeline</desc></code></pre> <pre><code><svg id="InteractiveSVG" aria-labelledby="timeline-title" aria-describedby="timeline-desc" role="group"></code></pre> <p><strong>Add semantic roles</strong> – Add some semantic roles to the groups containing the timeline and time segments. Let’s make the group that contains all of these a list: <code></code>.</p> <p>Add a label to the list: <code></code></p> <p>and the individual grouped time segments inside can be listitems: <code></code></p> <p><strong>Interactive/keyboard accessible</strong> – Immediately after each <code></code> that has the <code>role="listitem"</code> add an <code><a target="_blank"></a></code> so that it contains the entire group. Currently, this is the ONLY way to add interactivity to an SVG. </p> <p><strong>Add <code>tabindex="0"</code></strong> to ensure that it is focusable in all browsers.</p> <pre><code><a xlink:href="#play-group" tabindex="0" id="play-group"></a></code></pre> <p><strong>Fix the semantics of the link</strong> – Notice that the link is to itself. This really isn’t a semantic link because it does not link to anything and could confuse screen reader users. So, let’s add a <code>role="img"</code> to signify that it’s an image element instead of a link. </p> <pre><code><a xlink:href="#play-group" role="img" id="play-group"></a></code></pre> <p><strong>Make the text inside of the time segment accessible</strong> – Adding the img role stops the AT from traversing the rest of the elements, so we need to add aria-labelledby with the ids of the text elements in the order they should be read. </p> <pre><code><a xlink:href="#play-group" role="img" aria-labelledby="play-time play-text" tabindex="0" id="play-group"></a></code></pre> <p><strong>Add hidden descriptive text for the images</strong> – Use the with an offscreen css class, so that visually, it is hidden, but it remains in the dom.</p> <pre><code><tspan class="offscreen" id="play-description">A gray kitten tangled in a ball of yarn.</tspan></code></pre> <p><strong>Add the ID</strong> to the aria-labelledby on the xlink so that it is read.</p> <pre><code><a xlink:href="#play-group" role="img" aria-labelledby="play-time play-text play-description" tabindex="0" id="play-group"></a></code></pre> <p><strong>Set visual CSS for focus</strong> – Setting a visual representation for focus is needed for folks using the keyboard to navigate. I liked how it looked, so I added it to the hover state as well.</p> <pre><code>a:focus [class*="time-circle"], a:hover [class*="time-circle"] { stroke: black; stroke-width: 5; paint-order: stroke; }</code></pre> <p><strong>Add JavaScript for window focus</strong> – With SVGs, when you navigate through the link items, the window does not always shift to ensure the element is in the viewport. The reason is some browsers (<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=778654">bug filed</a> and hopefully fixed soon) are scrolling the <code></code> element as a whole without regard to the children elements that may be offscreen. So, let’s add some JavaScript to scroll the window to ensure the focused elements are visible. </p> <p>There’s probably a more efficient way to do this, but this is just a quick example:</p> <pre><code>$("#play-group").focus(function() { window.scrollTo(250,350); }); ... $("#cuddle-group" ).focus(function(){ window.scrollTo(250 , 1350); });</code></pre> <p>See the Pen <a target="_blank" href="http://codepen.io/hmig/pen/yJgeOe/">Accessible Interactive SVG</a> by Heather Migliorisi (<a target="_blank" href="http://codepen.io/hmig">@hmig</a>) on <a target="_blank" href="http://codepen.io/">CodePen</a>.</p> <p>Screen reader demo videos: </p> <ul> <li><a target="_blank" href="https://www.youtube.com/watch?v=MqMQTN5UMvg&feature=youtu.be">JAWS</a></li> <li><a target="_blank" href="https://www.youtube.com/watch?v=CRXYPrEEg0s&feature=youtu.be">NVDA</a></li> <li><a target="_blank" href="https://www.youtube.com/watch?v=ae1qyUa2gPc&feature=youtu.be">VoiceOver</a></li> <li><a target="_blank" href="https://www.youtube.com/watch?v=m4ucBNCyoYU&feature=youtu.be">Narrator</a></li> </ul> <h3>SVGs and High Contrast Mode</h3> <p>Another wrench in the mix: Windows and High Contrast Mode for people with low vision use this feature to help with the readability of content. It’s a wrench because, when used, the text and document body may change color when the feature is activated, but elements in an SVG are not updated when a user selects different contrast modes.</p> <figure><img decoding="async" src="https://css-tricks.com/wp-content/uploads/2016/06/image04.png" alt=""><br /><figcaption>image from http://disney.wikia.com/wiki/File:Alice-facepalm.jpg</figcaption></figure> <p>The good news: There are media queries to handle this.</p> <p>Examples for how to fix the icon section in the article:</p> <pre><code>@media screen and (-ms-high-contrast: active) { .icon svg { /* select a color that will contrast well on black or white because other color modes can be chosen and you need a color that will work with either */ fill: green; } } /* black text on white background *. @media screen and (-ms-high-contrast: black-on-white) { .icon svg { /* select a dark color that will contrast on black (#fff is too much contrast) */ fill: #333; } } /* black text on white background */ @media screen and (-ms-high-contrast: white-on-black) { .icon svg { /* select a light color that will contrast on white (#000 is too much contrast) */ fill: #efefef; } }</code></pre> <h3>Conclusion</h3> <ul> <li>Determine if alternative text is needed <ol> <li>If no, hide the image/SVG <code>aria-hidden="true"</code></li> <li>If yes: <ol> <li>Add/link up title and/or description to the SVG element</li> <li>Use roles to add semantic value (e.g. <code>role="list"</code>, <code>role="listitem"</code>)</li> <li>Hide graphical and group elements that should not be read w/ <code>role="presentation"</code></li> <li>Hide text elements that should not be read with <code>role="presentation"</code> and aria-hidden=”true”</li> </ol> </li> </ol> </li> <li>Determine if the SVG is interactive <ol> <li>If no – do nothing else</li> <li>If yes: <ol> <li>Set focus with xlink + <code>tabindex="0"</code></li> <li>If the link is not an actual link, add a role to ensure it is semantic</li> <li>Add JS for setting window focus</li> <li>Set visual CSS for focus: outline</li> </ol> </li> </ol> </li> <li>Test with various screen readers + browsers. Test different contrast modes. Test keyboard navigation.</li> </ul> <h3>Special Thanks</h3> <p>A huge “thank you” to Amelia Bellamy-Royds and Leonie Watson for double checking some of the examples and pointing out issues! I couldn’t have put this article together without their help.</p> <p>Bugs filed while working on this article o/</p> <p>Microsoft:</p> <ul> <li><a target="_blank" href="https://connect.microsoft.com/IE/Feedback/Details/2483564">https://connect.microsoft.com/IE/Feedback/Details/2483564 </a></li> <li><a target="_blank" href="https://connect.microsoft.com/IE/Feedback/Details/2480772">https://connect.microsoft.com/IE/Feedback/Details/2480772 </a></li> </ul> <p>Mozilla:</p> <ul> <li><a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1257399">https://bugzilla.mozilla.org/show_bug.cgi?id=1257399</a></li> <li><a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1257600">https://bugzilla.mozilla.org/show_bug.cgi?id=1257600</a></li> </ul> <p>Bugs fixed while working on this article ?</p> <ul> <li><a target="_blank" href="https://bugs.webkit.org/show_bug.cgi?id=145263">Safari/WebKit bug</a> that required the adding of <code>role="img"</code> to the <code></code> tag </li> <li><a target="_blank" href="https://bugs.chromium.org/p/chromium/issues/detail?id=566252">Chrome bug</a> that made you add aria-labelledby or aria-label to the svg in order to have the title read.</li> </ul> <h3>Resources</h3> <ul> <li><a target="_blank" href="https://sarasoueidan.com/blog/icon-fonts-to-svg/">Making the Switch Away from Icon Fonts to SVG: Converting Font Icons to SVG</a> by Sara Soueidan</li> <li><a target="_blank" href="https://www.w3.org/WAI/tutorials/images/">WAI Image Tutorial</a> </li> <li><a target="_blank" href="http://webaim.org/techniques/alttext/#context">WebAIM: Alternative Text, Context is Everything</a></li> <li><a target="_blank" href="https://www.w3.org/TR/html51/semantics-embedded-content.html#alt-text">W3C – Requirements for providing text to act as an alternative for images</a></li> <li><a target="_blank" href="https://www.smashingmagazine.com/2015/03/web-accessibility-with-accessibility-api/#accessibility-apis">Accessibility APIs: A Key To Web Accessibility</a> by Léonie Watson & Chaals McCathie Nevile</li> <li><a target="_blank" href="https://www.w3.org/TR/SVG11/struct.html#DescriptionAndTitleElements">W3C – The ‘desc’ and ‘title’ elements</a></li> <li><a target="_blank" href="https://www.sitepoint.com/tips-accessible-svg/">Tips for Creating Accessible SVG</a> by Léonie Watson</li> <li><a target="_blank" href="https://jakearchibald.github.io/svgomg/">SVGOMG</a> by Jake Archibald</li> <li><a target="_blank" href="https://jakearchibald.github.io/svgomg/">W3C – graphics-doc (role)</a></li> <li><a target="_blank" href="http://thenewcode.com/1066/Well-Always-Have-Paris-Using-SVG-Namespacing-and-XLink">We’ll Always Have Paris: Using SVG Namespacing and XLink</a> by Dudley Storey</li> <li><a target="_blank" href="https://www.paciellogroup.com/blog/2015/01/basic-screen-reader-commands-for-accessibility-testing/">Basic screen reader commands for accessibility testing</a> by The Paciello Group</li> <li><a target="_blank" href="http://w3c.github.io/aria/svg-aam/svg-aam.html#include_elements">W3C – Including Elements in the Accessibility Tree</a></li> <li><a target="_blank" href="https://msdn.microsoft.com/en-us/library/windows/apps/hh465764.aspx">-ms-high-contrast media feature</a></li> </ul> <hr> <p><small><a target="_blank" rel="nofollow" href="https://css-tricks.com/accessible-svgs/">Accessible SVGs</a> is a post from <a target="_blank" rel="nofollow" href="https://css-tricks.com/">CSS-Tricks</a></small></p> <div class="fixed"></div> </div> <div class="under"> <span class="categories">Categories: </span><span><a href="http://www.webmastersgallery.com/category/design/" rel="category tag">Designing</a>, <a href="http://www.webmastersgallery.com/category/uncategorized/" rel="category tag">Others</a></span> <span class="tags">Tags: </span><span></span> </div> </div> <div class="post" id="post-847416"> <h2><a class="title" href="http://www.webmastersgallery.com/2016/07/06/infographic-fontsmiths-complete-guide-to-typography-terms/" rel="bookmark">Infographic: Fontsmith’s complete guide to typography terms</a></h2> <div class="info"> <span class="date">July 6th, 2016</span> <span class="author"><a href="http://www.webmastersgallery.com/author/admin/" title="Posts by admin" rel="author">admin</a></span> <span class="comments"><a href="http://www.webmastersgallery.com/2016/07/06/infographic-fontsmiths-complete-guide-to-typography-terms/#respond">No comments</a></span> <div class="fixed"></div> </div> <div class="content"> <div class="ftpimagefix" style="float:left"><a target="_blank" href="http://www.webdesignerdepot.com/2016/07/infographic-fontsmiths-complete-guide-to-typography-terms/"><img decoding="async" src="http://netdna.webdesignerdepot.com/uploads/2016/07/Typography-Terms-full.jpg" title="" alt=""></a></div> <p> As a web designer, typography is paramount. Even on sites where images or video are the main focus, the way you treat text will make or break your site’s usability and aesthetic. Even so, most of us are <em>not</em> expert typographers.</p> <p>We may have a handle on a few of the basic terms, and the rules we need to make text generally look good. That’s a start. But typography is a field, an industry, and a science unto itself. I personally haven’t gone too far beyond that <a target="_blank" href="http://practicaltypography.com/typography-in-ten-minutes.html">Typography in Ten Minutes</a> tutorial, because web design also brings in myriad other concerns.</p> <p>However, if you want to get anywhere in serious type work, you’ll need to at least know how to talk the talk. Whether you’re building a logo, formatting a book, building a site that has a much greater typographical focus than most, or just working with a type designer, you may run into terms you don’t know.</p> <p>That’s why the helpful people over at <a target="_blank" href="http://www.fontsmith.com/">Fontsmith</a> have created this infographic as reference material. Here’s how their Type Design Director, Phil Garnham, introduces it:</p> <blockquote> <p>As type designers we can get immersed in an insular typographical bubble at times. It’s easy to forget that our language, the lingo, words and terms that we use to discuss, critique and refine our designs is under the constant pressure of discourse and scrutiny within, often redefining itself.</p> <p>We thought that it would be an interesting project to research and illustrate a few of the key words that we use everyday here in the Fontsmith studio but then before we knew it we were up to nearly 80 terms! Unable to cut the list down we’ve prepared this infographic that lists all the vocabulary in one place.</p> </blockquote> <p>Check out the infographic below:</p> <p></p> <table width="100%"> <tr> <td valign="center"> <a target="_blank" href="http://www.mightydeals.com/deal/big-floral-bundle.html?ref=inwidget"><b>Floral Bundle: 100+ Files Containing Beautiful Patterns and Elements – only $24!</b></a> </td> <td width="90"> <a target="_blank" href="http://www.mightydeals.com/?ref=inwidget"><br /><img decoding="async" loading="lazy" src="http://mightydeals.com/web/images/widget-logo.png" height="40" width="90" border="0" title="" alt=""><br /></a> </td> </tr> </table> <p><a target="_blank" href="http://www.webdesignerdepot.com/2016/07/infographic-fontsmiths-complete-guide-to-typography-terms/">Source</a></p> <div class="fixed"></div> </div> <div class="under"> <span class="categories">Categories: </span><span><a href="http://www.webmastersgallery.com/category/design/" rel="category tag">Designing</a>, <a href="http://www.webmastersgallery.com/category/uncategorized/" rel="category tag">Others</a></span> <span class="tags">Tags: </span><span></span> </div> </div> <div class="post" id="post-847417"> <h2><a class="title" href="http://www.webmastersgallery.com/2016/07/06/quick-ux-prototyping-with-adobe-xd-shortcuts-pdf-cheatsheet/" rel="bookmark">Quick UX Prototyping With Adobe XD Shortcuts (PDF Cheatsheet)</a></h2> <div class="info"> <span class="date">July 6th, 2016</span> <span class="author"></span> <span class="comments"><a href="http://www.webmastersgallery.com/2016/07/06/quick-ux-prototyping-with-adobe-xd-shortcuts-pdf-cheatsheet/#respond">No comments</a></span> <div class="fixed"></div> </div> <div class="content"> <div class="ftpimagefix" style="float:left"><a target="_blank" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/i6cMCxB7HdQ/"><img decoding="async" src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0"></a></div> <table width="650"> <tr> <td width="650"> <div> <a target="_blank" href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=smashing-rss&position=2"><img decoding="async" src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=smashing-rss&position=2" border="0" alt=""></a> <a target="_blank" href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=smashing-rss&position=3"><img decoding="async" src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=smashing-rss&position=3" border="0" alt=""></a></div> </td> </tr> </table> <p>Every designer has their favorite <a target="_blank" href="https://www.smashingmagazine.com/2016/04/factors-selecting-mobile-prototyping-tool/">prototyping tools</a>. However, when it comes to <strong>UX wireframing and prototyping</strong>, there is often more than one tool involved. Sooner or later, you find yourself switching from one tool to another to cherry-pick the best ones among them. </p> <figure><a target="_blank" href="https://www.smashingmagazine.com/2016/07/quick-ux-prototyping-with-adobe-xd-shortcuts-pdf-cheatsheet"><img decoding="async" loading="lazy" src="https://media-mediatemple.netdna-ssl.com/wp-content/uploads/2016/07/repeat-grid-padding-2.gif" width="398" height="141" alt="Quick UX Prototyping With Adobe XD Shortcuts (PDF Cheatsheet)" title="Quick UX Prototyping With Adobe XD Shortcuts (PDF Cheatsheet)"></a></figure> <p>Adobe announced Project Comet in October last year to provide a fast and efficient all-in-one solution. A few months ago, the secret behind the codename was revealed and pushed to the public in a preview version: Adobe Experience Design CC (Adobe XD). Made for fast and fluid UX design, XD gives you everything in one neat bundle: it lets you <strong>sketch out ideas, create interactive prototypes, test and share them</strong>.</p> <p>The post <a target="_blank" rel="nofollow" href="https://www.smashingmagazine.com/2016/07/quick-ux-prototyping-with-adobe-xd-shortcuts-pdf-cheatsheet/">Quick UX Prototyping With Adobe XD Shortcuts (PDF Cheatsheet)</a> appeared first on <a target="_blank" rel="nofollow" href="https://www.smashingmagazine.com/">Smashing Magazine</a>.</p> <div class="fixed"></div> </div> <div class="under"> <span class="categories">Categories: </span><span><a href="http://www.webmastersgallery.com/category/uncategorized/" rel="category tag">Others</a></span> <span class="tags">Tags: </span><span></span> </div> </div> <div class="post" id="post-846981"> <h2><a class="title" href="http://www.webmastersgallery.com/2016/07/06/ten-requirements-for-making-home-page-carousels-work-for-end-users-if-needed/" rel="bookmark">Ten Requirements For Making Home Page Carousels Work For End Users (If Needed)</a></h2> <div class="info"> <span class="date">July 6th, 2016</span> <span class="author"></span> <span class="comments"><a href="http://www.webmastersgallery.com/2016/07/06/ten-requirements-for-making-home-page-carousels-work-for-end-users-if-needed/#respond">No comments</a></span> <div class="fixed"></div> </div> <div class="content"> <div class="ftpimagefix" style="float:left"><a target="_blank" href="http://feedproxy.google.com/~r/SmashingMagazine/~3/CXOirXLxW7I/"><img decoding="async" src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0"></a></div> <table width="650"> <tr> <td width="650"> <div> <a target="_blank" href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=smashing-rss&position=2"><img decoding="async" src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=smashing-rss&position=2" border="0" alt=""></a> <a target="_blank" href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&collection=smashing-rss&position=3"><img decoding="async" src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&collection=smashing-rss&position=3" border="0" alt=""></a></div> </td> </tr> </table> <p>Are home page carousels actually helpful to users? Or are they simply popular because they are an easy tool for solving internal discussions in large organizations about who gets to put their banner on the home page?</p> <figure><a target="_blank" href="https://www.smashingmagazine.com/2016/07/ten-requirements-for-making-home-page-carousels-work-for-end-users"><img decoding="async" loading="lazy" src="https://media-mediatemple.netdna-ssl.com/wp-content/uploads/2016/06/1-williams-sonoma-opt.png" width="500" height="441" alt="Ten Requirements For Making Home Page Carousels Work For End Users (If Needed)" title="Ten Requirements For Making Home Page Carousels Work For End Users (If Needed)"></a></figure> <p>The short answer is that home page carousels <em>can</em> work, but in practice the vast majority of implementations perform poorly with end users.</p> <p>The post <a target="_blank" rel="nofollow" href="https://www.smashingmagazine.com/2016/07/ten-requirements-for-making-home-page-carousels-work-for-end-users/">Ten Requirements For Making Home Page Carousels Work For End Users (If Needed)</a> appeared first on <a target="_blank" rel="nofollow" href="https://www.smashingmagazine.com/">Smashing Magazine</a>.</p> <div class="fixed"></div> </div> <div class="under"> <span class="categories">Categories: </span><span><a href="http://www.webmastersgallery.com/category/uncategorized/" rel="category tag">Others</a></span> <span class="tags">Tags: </span><span></span> </div> </div> <div class="post" id="post-846871"> <h2><a class="title" href="http://www.webmastersgallery.com/2016/07/06/good-to-have-chrome-extensions-for-web-developers/" rel="bookmark">Good to Have: Chrome Extensions for Web Developers</a></h2> <div class="info"> <span class="date">July 6th, 2016</span> <span class="author"></span> <span class="comments"><a href="http://www.webmastersgallery.com/2016/07/06/good-to-have-chrome-extensions-for-web-developers/#respond">No comments</a></span> <div class="fixed"></div> </div> <div class="content"> <div class="ftpimagefix" style="float:left"><a target="_blank" href="http://feedproxy.google.com/~r/Noupe/~3/LR7VRDBBgP0/chrome-extensions-web-developers-98290.html"><img decoding="async" src="http://www.noupe.com/wp-content/uploads/2016/07/browser-773215_640.png" alt="Good to Have: Chrome Extensions for Web Developers "></a></div> <p>Browsers have been evolving over the past years, and by now, there are plenty of tools for developers, allowing you to test your web projects in-depth, foremost regarding HTML, CSS, and JavaScript. This way, both JavaScript errors, as well as wrong CSS labels are recognized. However, the developer tools can’t do everything (yet). Thus, there are a few valuable Chrome extensions to facilitate work for you.</p> </p> <h3>Recognize Fonts With “WhatFont.”</h3> <p>As a web designer and developer, you hang around on other websites now and then to get inspired. If for example, you found a font on a website that you’d like to use yourself, the extension “<a target="_blank" href="http://www.noupe.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvd2hhdGZvbnQvamFib3BvYmdjcGptZWRsanBiY2FhYmxwbWxtZmNvZ20%3D&feed-stats-url-post-id=98290" title="WhatFont">WhatFont</a>” can help you.</p> <div><img decoding="async" loading="lazy" src="https://www.drweb.de/magazin/wp-content/uploads/2016/06/chrome-erweiterungen_whatfont-640x272.jpg" alt="„WhatFont“" width="640" height="272"></p> <p>“WhatFont”</p> </div> <p>Instead of searching the font name in the stylesheets, you can just hover over the respective text with the mouse when using “WhatFont”. A small tooltip tells you the name of the used font. Via click on the text, additional information is given out, like font size and color.</p> <h3>Picking Up Colors Using “Eye Dropper.”</h3> <p>Colors can be recognized in a similar way to fonts. To get the exact color from a website, you need to copy it from the stylesheet. If you want to grab a color from a picture, all you can do is take a screenshot to copy it into your image editor.</p> <div><img decoding="async" loading="lazy" src="https://www.drweb.de/magazin/wp-content/uploads/2016/06/chrome-erweiterungen_eye-dropper-640x465.jpg" alt="„Eye Dropper“" width="640" height="465"></p> <p>“Eye Dropper”</p> </div> <p>“<a target="_blank" href="http://www.noupe.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvZXllLWRyb3BwZXIvaG1kY21sZmtjaGRtbm1ubWhlb2RvZGRoamVkZmNja2E%3D&feed-stats-url-post-id=98290" title="Eye Dropper">Eye Dropper</a>” makes all of that redundant. The extension provides a pipette that allows you to pick up a color from a website. While doing that, “Eye Dropper” doesn’t restrict itself to elements that have had a color assigned to them via CSS. You are also able to get a color value from an image.</p> <p>The color is given out as hexadecimal, RGB, and HSL value, including proper CSS labeling.</p> <h3>Deactivating Cookies With “Disable Cookies.”</h3> <p>Deactivating JavaScript or turning off the cache for a website – all of this is uncomplicated thanks to the Chrome developer tools. Only the fast activation and deactivation of cookies is not possible in Chrome directly.</p> <p>For that, you usually need to dive into the settings. The detour is rather complicated just to test how a website reacts to deactivated cookies.</p> <p>The extension “<a target="_blank" href="http://www.noupe.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvZGlzYWJsZS1jb29raWVzL2xrbWptZmljYW9pZmdncGZhcGJmZmtnZ2VjYmxlYW5n&feed-stats-url-post-id=98290" title="Disable Cookies">Disable Cookies</a>” now allows you to easily enable and disable cookies for a website via a button in the toolbar.</p> <h3>Measuring Distances and Sizes Using “Page Ruler” and “Dimensions.”</h3> <p>Are all elements on your website placed correctly? Are all the distances and sizes right? The following extensions<br /> help you measure your site.</p> <div><img decoding="async" loading="lazy" src="https://www.drweb.de/magazin/wp-content/uploads/2016/06/chrome-erweiterungen_page-ruler-640x116.jpg" alt="„Page Ruler“" width="640" height="116"></p> <p>“Page Ruler”</p> </div> <p>The “<a target="_blank" href="http://www.noupe.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvcGFnZS1ydWxlci9qbHBrb2pqZGdibGxtZWRvYXBnZm9kcGxmaGNibmJwbg%3D%3D&feed-stats-url-post-id=98290" title="Page Ruler">Page Ruler</a>” can be used to place a rectangle on a website either manually, or by entering numeric values. Here, the distances to all four page borders, as well as the rectangle’s width and height are displayed.</p> <div><img decoding="async" loading="lazy" src="https://www.drweb.de/magazin/wp-content/uploads/2016/06/chrome-erweiterungen_dimensions-640x116.jpg" alt="„Dimensions“" width="640" height="116"></p> <p>“Dimensions”</p> </div> <p>An alternative is the extension “<a target="_blank" href="http://www.noupe.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvZGltZW5zaW9ucy9iYW9jYWFnbmRoaXBpYmdrbGVtb2FsbWtsamFpbWZkag%3D%3D&feed-stats-url-post-id=98290" title="Dimensions">Dimensions</a>“. This one measures the distances between two adjacent elements on its own. To make it do that, just place the mouse pointer between the respective elements. Two lines show you which distance is measured. It always measures the vertical and horizontal distance to adjacent elements.</p> <h3>Automatically Refresh a Page After Changes With “LivePage.”</h3> <p>Refreshing a website is probably one of the most common actions. Changes to HTML, CSS, and JavaScript files are made, and they need to be tested in the browser afterward.</p> <p>The extension “<a target="_blank" href="http://www.noupe.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvbGl2ZXBhZ2UvcGlsbm9qcG1kb29mYWVsYmluYWVvZGZwamhlaWprYmg%3D&feed-stats-url-post-id=98290" title="LivePage">LivePage</a>” takes the task of frequent manual refreshing off of you. Whenever a resource, like a CSS file, was changed on the server, the extension automatically refreshes the page.</p> <h3>Creating Screenshots Using “Awesome Screenshot.”</h3> <div><img decoding="async" loading="lazy" src="https://www.drweb.de/magazin/wp-content/uploads/2016/06/chrome-awesome-screenshot-640x252.jpg" alt="„Awesome Screenshot“" width="640" height="252"></p> <p>“Awesome Screenshot”</p> </div> <p>Whether it’s for the presentation in your portfolio or for a client: website screenshots are always necessary. “<a target="_blank" href="http://www.noupe.com/?feed-stats-url=aHR0cHM6Ly9jaHJvbWUuZ29vZ2xlLmNvbS93ZWJzdG9yZS9kZXRhaWwvYXdlc29tZS1zY3JlZW5zaG90LWFwcC9tZnBpYWVoZ2piYmZlZG5vb2loYWRhbGhlaGFiaGNqbw%3D%3D&feed-stats-url-post-id=98290" title="Awesome Screenshot">Awesome Screenshot</a>” allows you to take screenshots with one click. Here, only the content of the current tab is included.</p> <p>Additionally, you also get to decide whether you want a screenshot of the visible area in the browser, or the entire website. It is also possible to take a complete screenshot of long, scrollable pages.</p> <p><em>(dpe)</em></p> <div class="fixed"></div> </div> <div class="under"> <span class="categories">Categories: </span><span><a href="http://www.webmastersgallery.com/category/uncategorized/" rel="category tag">Others</a></span> <span class="tags">Tags: </span><span></span> </div> </div> <div class="post" id="post-845105"> <h2><a class="title" href="http://www.webmastersgallery.com/2016/07/05/video-player-2-0-for-adobe-muse/" rel="bookmark">Video Player 2.0 for Adobe Muse</a></h2> <div class="info"> <span class="date">July 5th, 2016</span> <span class="author"><a href="http://www.webmastersgallery.com/author/admin/" title="Posts by admin" rel="author">admin</a></span> <span class="comments"><a href="http://www.webmastersgallery.com/2016/07/05/video-player-2-0-for-adobe-muse/#respond">No comments</a></span> <div class="fixed"></div> </div> <div class="content"> <div class="ftpimagefix" style="float:left"><a target="_blank" href="http://webdesignledger.com/video-player-2-0-adobe-muse/"><img decoding="async" src="http://webdesignledger.com/wp-content/uploads/2016/07/muse-for-you-unsplash-video-player-2.0-widget-photo-adobe-muse-cc-2015.2-1024x683.jpeg" alt="Muse For You - Video Player 2.0 Widget - Article Image - Unsplash"></a></div> <p><strong>Add a responsive video player to your <a target="_blank" title="Adobe" rel="nofollow" href="https://clk.tradedoubler.com/click?p=264355&a=2784243&g=22804962">Adobe</a> Muse website. No Coding Skills Required.</strong></p> <p> <img decoding="async" loading="lazy" src="http://webdesignledger.com/wp-content/uploads/2016/05/Adobe_Muse_logo-500x487.png" alt="Adobe Muse CC Logo" width="103" height="100"></p> <p>Video has taken over the internet. YouTube reports mobile video consumption rises 100% every year. Adding a video to a landing page can increase conversion by 80%. After watching a video 64% of users are more likely to buy a product online.</p> <p>That is why I decided to create the Video Player 2.0 widget. This is the only video player widget you will ever need for your <a target="_blank" title="Adobe" rel="nofollow" href="https://clk.tradedoubler.com/click?p=264355&a=2784243&g=22804962">Adobe</a> Muse website. With this video player you can add the following to your <a target="_blank" title="Adobe" rel="nofollow" href="https://clk.tradedoubler.com/click?p=264355&a=2784243&g=22804962">Adobe</a> Muse website:</p> <ul> <li>HTML5 video</li> <li>YouTube video</li> <li>Vimeo video</li> <li>Use the video player as an audio player</li> </ul> <p><a target="_blank" href="http://museforyoushop.com/"><img decoding="async" loading="lazy" src="http://webdesignledger.com/wp-content/uploads/2016/07/muse-for-you-video-player-2.0-widget-adobe-muse-cc-2015.2-500x281.png" alt="Muse For You - Video Player 2.0 Widget - Adobe Muse CC" width="500" height="281"></a></p> <p>The video player is responsive so it gets larger or smaller depending on the browser width. You can edit the colors of the video player, and even add cornered edges around the video. The perfect way to showcase your video in a functional and creative way.</p> <p><img decoding="async" loading="lazy" src="http://webdesignledger.com/wp-content/uploads/2016/07/muse-for-you-unsplash-video-player-2.0-widget-photo-adobe-muse-cc-2015.2-500x333.jpeg" alt="Muse For You - Video Player 2.0 Widget - Article Image - Unsplash" width="500" height="333"></p> <p>Here are the features included in the widget:</p> <div></div> <ul> <li>Add HTML5 Video</li> <li>Add YouTube and Vimeo Videos</li> <li>Use video player as an audio player.</li> <li>Set the video player to a custom size</li> <li>Set the video player to 100% width</li> <li>Have the video player be responsive and set the max-width</li> <li>Lightweight</li> <li>Customize the colors of the video player</li> <li>Change the corner radius of the video player</li> <li>Add captions to the video player</li> <li>Enable or disable control buttons</li> <li>Play or pause video when clicking on video player</li> <li>Enable control tooltip</li> <li>Enable seek tooltip</li> <li>Hide controls</li> <li>Show poster image when video is finished</li> <li>Disable right click on video</li> <li>Display duration of the video</li> <li>Set the video to fullscreen</li> <li>Autoplay Video</li> <li>Loop Video</li> <li>Video plays on mobile</li> </ul> <p>In the video above I go over how to use the widget and where to access it. The widget is filled with great options to allow you to really customize the video player for your Adobe Muse website. No coding skills required. The widget can be found at <a target="_blank" href="http://museforyoushop.com/">http://museforyoushop.com</a>.</p> <p>Happy Musing :).</p> <p>Read More at <a target="_blank" rel="nofollow" href="http://webdesignledger.com/video-player-2-0-adobe-muse/">Video Player 2.0 for Adobe Muse</a></p> <div class="fixed"></div> </div> <div class="under"> <span class="categories">Categories: </span><span><a href="http://www.webmastersgallery.com/category/design/" rel="category tag">Designing</a>, <a href="http://www.webmastersgallery.com/category/uncategorized/" rel="category tag">Others</a></span> <span class="tags">Tags: </span><span></span> </div> </div> <div id="pagenavi"> <span class="newer"><a href="http://www.webmastersgallery.com/2016/07/page/13/" >Newer Entries</a></span> <span class="older"><a href="http://www.webmastersgallery.com/2016/07/page/15/" >Older Entries</a></span> <div class="fixed"></div> </div> </div> <!-- main END --> <!-- sidebar START --> <div id="sidebar"> <!-- sidebar north START --> <div id="northsidebar" class="sidebar"> <!-- feeds --> <div class="widget widget_feeds"> <div class="content"> <div id="subscribe"> <a rel="external nofollow" id="feedrss" title="Subscribe to this blog..." href="http://www.webmastersgallery.com/feed/"><abbr title="Really Simple Syndication">RSS</abbr></a> </div> <div class="fixed"></div> </div> </div> <!-- showcase --> <div id="text-389627311" class="widget widget_text"> <div class="textwidget"><a href="http://feeds2.feedburner.com/webmastersgallery" title="Subscribe to my feed" rel="alternate" type="application/rss+xml"><img src="http://www.feedburner.com/fb/images/pub/feed-icon32x32.png" alt="" style="border:0"/></a><a href="http://feeds2.feedburner.com/webmastersgallery" title="Subscribe to my feed" rel="alternate" type="application/rss+xml">Subscribe for latest Updates</a></div> </div><div id="text-389629461" class="widget widget_text"> <div class="textwidget"><form style="border:1px solid #ccc;padding:3px;text-align:center;" action="http://feedburner.google.com/fb/a/mailverify" method="post" target="popupwindow" onsubmit="window.open('http://feedburner.google.com/fb/a/mailverify?uri=webmastersgallery', 'popupwindow', 'scrollbars=yes,width=550,height=520');return true"><p>Enter your email address:</p><p><input type="text" style="width:140px" name="email"/></p><input type="hidden" value="webmastersgallery" name="uri"/><input type="hidden" name="loc" value="en_US"/><input type="submit" value="Subscribe" /><p>Delivered by <a href="http://feedburner.google.com" target="_blank" rel="noopener">FeedBurner</a></p></form></div> </div></div> <!-- sidebar north END --> <div id="centersidebar"> <!-- sidebar east START --> <div id="eastsidebar" class="sidebar"> <!-- categories --> <div class="widget widget_categories"> <h3>Categories</h3> <ul> <li class="cat-item cat-item-518"><a href="http://www.webmastersgallery.com/category/affiliate-programs/">Affiliate Programs</a> </li> <li class="cat-item cat-item-147"><a href="http://www.webmastersgallery.com/category/design/">Designing</a> </li> <li class="cat-item cat-item-519"><a href="http://www.webmastersgallery.com/category/domain-names/">Domain Names</a> </li> <li class="cat-item cat-item-37"><a href="http://www.webmastersgallery.com/category/e-commerce/">E-commerce</a> </li> <li class="cat-item cat-item-509"><a href="http://www.webmastersgallery.com/category/internet-directories/">Internet Directories</a> </li> <li class="cat-item cat-item-510"><a href="http://www.webmastersgallery.com/category/message-boards/">Message Boards</a> </li> <li class="cat-item cat-item-1"><a href="http://www.webmastersgallery.com/category/uncategorized/">Others</a> </li> <li class="cat-item cat-item-506"><a href="http://www.webmastersgallery.com/category/programming/">Programming</a> </li> <li class="cat-item cat-item-511"><a href="http://www.webmastersgallery.com/category/promotion-and-marketing/">Promotion and Marketing</a> </li> <li class="cat-item cat-item-534"><a href="http://www.webmastersgallery.com/category/scripts-and-programming/">Scripts and Programming</a> </li> <li class="cat-item cat-item-513"><a href="http://www.webmastersgallery.com/category/search-engines/">Search Engines</a> </li> <li class="cat-item cat-item-135"><a href="http://www.webmastersgallery.com/category/social-media/">Social Media</a> </li> <li class="cat-item cat-item-514"><a href="http://www.webmastersgallery.com/category/softwares/">Softwares</a> </li> <li class="cat-item cat-item-515"><a href="http://www.webmastersgallery.com/category/tips-and-tutorials/">Tips and Tutorials</a> </li> <li class="cat-item cat-item-338"><a href="http://www.webmastersgallery.com/category/web-hosting/">Web Hosting</a> </li> <li class="cat-item cat-item-516"><a href="http://www.webmastersgallery.com/category/webmaster-tools/">Webmaster Tools</a> </li> <li class="cat-item cat-item-501"><a href="http://www.webmastersgallery.com/category/webmaster-resources/">Webmasters Resources</a> </li> <li class="cat-item cat-item-3"><a href="http://www.webmastersgallery.com/category/web-design/">Website Design</a> </li> </ul> </div> </div> <!-- sidebar east END --> <!-- sidebar west START --> <div id="westsidebar" class="sidebar"> <!-- blogroll --> <div class="widget widget_links"> <h3>Blogroll</h3> <ul> <li><a href="http://wordpress.org/development/">Development Blog</a></li> <li><a href="http://codex.wordpress.org/">Documentation</a></li> <li><a href="http://wordpress.org/extend/plugins/">Plugins</a></li> <li><a href="http://wordpress.org/extend/ideas/">Suggest Ideas</a></li> <li><a href="http://wordpress.org/support/">Support Forum</a></li> <li><a href="http://wordpress.org/extend/themes/">Themes</a></li> <li><a href="http://planet.wordpress.org/">WordPress Planet</a></li> </ul> </div> </div> <!-- sidebar west END --> <div class="fixed"></div> </div> <!-- sidebar south START --> <div id="southsidebar" class="sidebar"> <!-- archives --> <div class="widget"> <h3>Archives</h3> <ul> <li><a href='http://www.webmastersgallery.com/2025/02/'>February 2025</a></li> <li><a href='http://www.webmastersgallery.com/2025/01/'>January 2025</a></li> <li><a href='http://www.webmastersgallery.com/2024/12/'>December 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/11/'>November 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/10/'>October 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/09/'>September 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/08/'>August 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/07/'>July 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/06/'>June 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/05/'>May 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/04/'>April 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/03/'>March 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/02/'>February 2024</a></li> <li><a href='http://www.webmastersgallery.com/2024/01/'>January 2024</a></li> <li><a href='http://www.webmastersgallery.com/2023/12/'>December 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/11/'>November 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/10/'>October 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/09/'>September 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/08/'>August 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/07/'>July 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/06/'>June 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/05/'>May 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/04/'>April 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/03/'>March 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/02/'>February 2023</a></li> <li><a href='http://www.webmastersgallery.com/2023/01/'>January 2023</a></li> <li><a href='http://www.webmastersgallery.com/2022/12/'>December 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/11/'>November 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/10/'>October 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/09/'>September 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/08/'>August 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/07/'>July 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/06/'>June 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/05/'>May 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/04/'>April 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/03/'>March 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/02/'>February 2022</a></li> <li><a href='http://www.webmastersgallery.com/2022/01/'>January 2022</a></li> <li><a href='http://www.webmastersgallery.com/2021/12/'>December 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/11/'>November 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/10/'>October 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/09/'>September 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/08/'>August 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/07/'>July 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/06/'>June 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/05/'>May 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/04/'>April 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/03/'>March 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/02/'>February 2021</a></li> <li><a href='http://www.webmastersgallery.com/2021/01/'>January 2021</a></li> <li><a href='http://www.webmastersgallery.com/2020/12/'>December 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/11/'>November 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/10/'>October 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/09/'>September 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/08/'>August 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/07/'>July 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/06/'>June 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/05/'>May 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/04/'>April 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/03/'>March 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/02/'>February 2020</a></li> <li><a href='http://www.webmastersgallery.com/2020/01/'>January 2020</a></li> <li><a href='http://www.webmastersgallery.com/2019/12/'>December 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/11/'>November 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/10/'>October 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/09/'>September 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/08/'>August 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/07/'>July 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/06/'>June 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/05/'>May 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/04/'>April 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/03/'>March 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/02/'>February 2019</a></li> <li><a href='http://www.webmastersgallery.com/2019/01/'>January 2019</a></li> <li><a href='http://www.webmastersgallery.com/2018/12/'>December 2018</a></li> <li><a href='http://www.webmastersgallery.com/2018/11/'>November 2018</a></li> <li><a href='http://www.webmastersgallery.com/2018/10/'>October 2018</a></li> <li><a href='http://www.webmastersgallery.com/2018/09/'>September 2018</a></li> <li><a href='http://www.webmastersgallery.com/2018/08/'>August 2018</a></li> <li><a href='http://www.webmastersgallery.com/2018/07/'>July 2018</a></li> <li><a href='http://www.webmastersgallery.com/2018/04/'>April 2018</a></li> <li><a href='http://www.webmastersgallery.com/2018/01/'>January 2018</a></li> <li><a href='http://www.webmastersgallery.com/2017/12/'>December 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/11/'>November 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/09/'>September 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/08/'>August 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/07/'>July 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/06/'>June 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/05/'>May 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/04/'>April 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/03/'>March 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/02/'>February 2017</a></li> <li><a href='http://www.webmastersgallery.com/2017/01/'>January 2017</a></li> <li><a href='http://www.webmastersgallery.com/2016/12/'>December 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/11/'>November 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/10/'>October 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/09/'>September 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/08/'>August 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/07/' aria-current="page">July 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/06/'>June 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/05/'>May 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/04/'>April 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/03/'>March 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/02/'>February 2016</a></li> <li><a href='http://www.webmastersgallery.com/2016/01/'>January 2016</a></li> <li><a href='http://www.webmastersgallery.com/2015/12/'>December 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/11/'>November 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/10/'>October 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/09/'>September 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/08/'>August 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/07/'>July 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/06/'>June 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/05/'>May 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/04/'>April 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/03/'>March 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/02/'>February 2015</a></li> <li><a href='http://www.webmastersgallery.com/2015/01/'>January 2015</a></li> <li><a href='http://www.webmastersgallery.com/2014/12/'>December 2014</a></li> <li><a href='http://www.webmastersgallery.com/2014/11/'>November 2014</a></li> <li><a href='http://www.webmastersgallery.com/2014/10/'>October 2014</a></li> <li><a href='http://www.webmastersgallery.com/2014/09/'>September 2014</a></li> <li><a href='http://www.webmastersgallery.com/2014/08/'>August 2014</a></li> <li><a href='http://www.webmastersgallery.com/2014/07/'>July 2014</a></li> <li><a href='http://www.webmastersgallery.com/2014/06/'>June 2014</a></li> <li><a href='http://www.webmastersgallery.com/2013/07/'>July 2013</a></li> <li><a href='http://www.webmastersgallery.com/2013/01/'>January 2013</a></li> <li><a href='http://www.webmastersgallery.com/2012/12/'>December 2012</a></li> <li><a href='http://www.webmastersgallery.com/2012/08/'>August 2012</a></li> <li><a href='http://www.webmastersgallery.com/2012/07/'>July 2012</a></li> <li><a href='http://www.webmastersgallery.com/2012/06/'>June 2012</a></li> <li><a href='http://www.webmastersgallery.com/2012/05/'>May 2012</a></li> <li><a href='http://www.webmastersgallery.com/2012/04/'>April 2012</a></li> <li><a href='http://www.webmastersgallery.com/2012/01/'>January 2012</a></li> <li><a href='http://www.webmastersgallery.com/2011/11/'>November 2011</a></li> <li><a href='http://www.webmastersgallery.com/2011/06/'>June 2011</a></li> <li><a href='http://www.webmastersgallery.com/2011/03/'>March 2011</a></li> <li><a href='http://www.webmastersgallery.com/2011/02/'>February 2011</a></li> <li><a href='http://www.webmastersgallery.com/2011/01/'>January 2011</a></li> <li><a href='http://www.webmastersgallery.com/2010/12/'>December 2010</a></li> <li><a href='http://www.webmastersgallery.com/2010/11/'>November 2010</a></li> <li><a href='http://www.webmastersgallery.com/2010/09/'>September 2010</a></li> <li><a href='http://www.webmastersgallery.com/2010/07/'>July 2010</a></li> <li><a href='http://www.webmastersgallery.com/2010/06/'>June 2010</a></li> <li><a href='http://www.webmastersgallery.com/2010/05/'>May 2010</a></li> <li><a href='http://www.webmastersgallery.com/2010/02/'>February 2010</a></li> <li><a href='http://www.webmastersgallery.com/2009/12/'>December 2009</a></li> <li><a href='http://www.webmastersgallery.com/2009/08/'>August 2009</a></li> <li><a href='http://www.webmastersgallery.com/2009/07/'>July 2009</a></li> <li><a href='http://www.webmastersgallery.com/2009/06/'>June 2009</a></li> <li><a href='http://www.webmastersgallery.com/2009/05/'>May 2009</a></li> <li><a href='http://www.webmastersgallery.com/2009/04/'>April 2009</a></li> <li><a href='http://www.webmastersgallery.com/2009/03/'>March 2009</a></li> </ul> </div> <!-- meta --> <div class="widget"> <h3>Meta</h3> <ul> <li><a href="http://www.webmastersgallery.com/wp-login.php">Log in</a></li> </ul> </div> </div> <!-- sidebar south END --> </div> <!-- sidebar END --> <div class="fixed"></div> </div> <!-- content END --> <!-- footer START --> <div id="footer"> <a id="gotop" href="#" onclick="MGJS.goTop();return false;">Top</a> <a id="powered" href="http://wordpress.org/">WordPress</a> <div id="copyright"> Copyright © 2009-2025 Webmasters Gallery </div> <div id="themeinfo"> Theme by <a href="http://www.neoease.com/">NeoEase</a>. Valid <a href="http://validator.w3.org/check?uri=referer">XHTML 1.1</a> and <a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3">CSS 3</a>. </div> </div> <!-- footer END --> </div> <!-- container END --> </div> <!-- wrap END --> </body> </html>