
👋 Oi, mga repapips, Brian Dys here! I love music, photography, and creative stuff like UX design and art. This is a place where I collect my thoughts and works. Apart all these, I’m Jaycelle’s better half and Bryce’s dad. 🥰
The HTML Anchor Element <a> should also stand for “action” since its use is very powerful from being a simple hyperlink to being an element that performs a specific action. Think icons in web apps that are <a> underneath the HTML markup.
You might have a 16×16 px icon for a toolbar action item – but is 16×16 px active area enough to be properly activated? Perhaps for a desktop device with a mouse and pointer. But for touch devices, we must ensure that our action elements are comfortable enough for the average human fingers or thumbs. This goes without saying that bigger active areas are easier to point at and activate than small ones.
The recommended size of active areas (or hit targets) for iOS is 44×44 px and 48×48 px for Android. This ensures that users could comfortably tap or click on active elements such as icons, lists, and buttons.
Now, padding doesn't literally mean CSS padding
– although we could also achieve it that way. For our examples below, we will set the active area of a 16×16 px icon to 48px thru the width
and height
CSS properties.
[codepen_embed height=”638″ theme_id=”1820″ slug_hash=”zxdPBJ” default_tab=”result” user=”BrianSahagun”]See the Pen Action Padding by Brian Dys Sahagun (@BrianSahagun) on CodePen.[/codepen_embed]
This example shows if you have a small icon and you simply leave it as is. The active area is small enough to target/activate.
We increased the size of the <a> element to 48×48 px thru width
and height
CSS properties. As you can see if you hover your mouse, the active area is bigger and easier to target/activate.
This example shows the icons having sizes of 16px and active areas of 48px.
The benefits of having a larger image (48px) which will be used as a smaller image (16px) are:
There are several CSS considerations when using sprite image being resized from its original size.
First, since a sprite image has multiple images in it and you only need to show one image for each element (and avoid showing parts of the adjacent image), we need to set up a separate element that will contain only the background-image. In this case, the <span>. On the other hand, the <a> will contain the dimensions of the active area.
Second, we have to set the <span>’s display
property to inline-block
so that we could control its horizontal and vertical alignment within its parent element (which is <a>). Remember, since the icon’s size is smaller than the active area, we need to align it at the middle.
Third, you have to set the desired width
and height
of the icons which are both 16px.
Fourth, of course, is to point to the sprite image using background-image
.
[css]
.label {
display: inline-block;
width: 16px;
height: 16px;
background-image: url( ‘../img/sprite.png’ );
background-repeat: no-repeat;
}
.link .label {
background-position: -16px 0;
}
[/css]
Fifth, ensure that the sprite image will not tile like a pattern – this is achieved thru background-repeat: no-repeat
.
Sixth is the tricky part wherein you need to calculate the size of your sprite image. In the example, I have a two-by-two (2×2) 48px sprite image – which requires a background-size: 200% 200%
to display properly. Read more on CSS background-size.
The consideration here is that all the grids in your sprite image must have a consistent size – like everything has a 48px area – otherwise, the computation will show overlaps.
And notice how the background-position
depended on the dimensions of width
and height
.
For touch interactions using thumbs, a much bigger active area is needed – 72px. Having a 48px icon, we can safely set it as-is at 48px and set the active area to 72px. Notice the change in the CSS and how the background-position
depended on the dimensions of width
and height
:
[css]
.label {
width: 48px;
height: 48px;
}
.link .label {
background-position: -48px 0;
}
[/css]
There are other approach in using icons in action elements, namely:
Link padding simply means adding padding to the HTML Anchor Element <a>.
It is important that we don’t leave the link as it is – we must make it large enough to be easily activated by any pointing device (mouse pointer or touch).
Let’s take a very simply example – a set of navigation items:
[codepen_embed height=”572″ theme_id=”1820″ slug_hash=”VYWaYE” default_tab=”result” user=”BrianSahagun”]See the Pen Link Padding by Brian Dys Sahagun (@BrianSahagun) on CodePen.[/codepen_embed]
In Example 1, notice that the only active area of the links are the words themselves and not the whitespace beside them. You can see the active area by the blue background highlight when you hover on the links.
Now, compare Example 1 to Example 2. When navigating with a pointing device such as a mouse, it is easier in Example 2 to hover on the navigation items and click the chosen link; for navigating using touch, it is also easier in Example 2 since the active area is larger and you can tap far away from the other navigation items – avoiding an accidental activating of the other links.
To pad a link, there are two things to consider:
[css]
a {
display: block;
padding: 1rem;
}
[/css]
In Examples 1 and 2, you can see that the list has a fixed width and border that shows until where the navigation items end. Ensure that you clearly put active areas in a clear manner so that users won’t mistakenly click on a whitespace with a “hidden” link (see Example 3).
Now, why would users “click” or “touch” whitespace? I, personally, do that as a “comfort zone” knowing that activating on a whitespace releases any unknown focus on other elements – it’s similar to pressing Esc repeatedly.
—
Next post will be about padding action links – think icons in web app toolbar.
Make example of how simple a semantic markup can be made into a component.
Use Search for example.
While HTML adjusted for the use of fragmentation in content structure (e.g., Form label scattered across the place and only connected by ID’s and for attributes), as well as ARIA adopted to Web Components to provide meaning and semantics to its structure and free-wheeling use of elements.
We must not forget that even webapps can be deduced into a simple document, so as long as they provide human-readable information.
The ultimate test still is stripping off the presentation layer, diving deep into the interaction layer and presenting only the information to the user.
This is the simplest we can approach designing website and applications.
Thus, we must make an element.
I received a confirmation that HopScotch got approved in WordPress Themes Directory.
I took a portrait using my DSLR. It produced an image with a 3:2 aspect ratio.
I went to a photo lab to have it printed.
Do I want it cropped? Hell, no.
I spent hours enhancing and editing it. Besides, I already cropped it to perfection in Photoshop.
No cropping? Then here are the only popular photo paper sizes that I could choose from:
The other sizes like 3.5×5 (3R), 5×7 (5R), 8×10 (8R) will crop my masterpiece.
So I had it printed on an 8×12 photo paper.
I went to the picture frames section of my favorite department store.
Only to find out that they are only selling these frame sizes (cue Psycho shower theme):
Now, do I end up snipping the printed photo to fit into an 8R frame?
No. I ended up buying a certificate frame with enough margin to fit my photo.
This age is digital age; this year is 2014 and it’s ending. Everyone has a digital camera in his or her pocket.
Most likely, the digital picture that one camera produces has either these aspect ratios:
Even a full frame film camera is in 3:2.
So why in the world are photo labs and picture frames still speaking in the language of 5Rs and 8Rs?
Photo papers and picture frames must cater to the popular aspect ratios.
Support 1:1 Instagram size if you must!
Reading in Facebook about an upcoming Procurement Hack by the Open Data Philippines and PhilGEPS, I followed a link to http://data.gov.ph/hackathon and I was shown a 404 Not Found page.
I could have been well within my wits to simply use Google Search but the immediate thing I did was to search for the word “hackathon” using data.gov.ph’s Search Form – that’s why it’s there, right?
There, I saw the title of what I was looking for as the second result – #KabantayNgBayan.
The link took me to another page with yet another link.
Hoping to “learn more” about #KabantayNgBayan, I followed the link to http://beta.data.gov.ph/news/kabantayngbayan-hacking-national-budget which turned out to be worse than a 404.
Now I already knew where the real page was upon hitting that Server Not Found (thanks, Google Search). But we should expect more from Government websites to provide us with the information we are looking for – immediately.
Let me itemize the things that must not be experienced by other users – be it those looking for hackathon information or those looking for more important information on Philippine Government websites.
Hackathons are like sleepover without the sleep – in a workshop with only cardboards, glues, and scissors as your materials and you are expected to come up with a rocket ship to relocate Philae to a sunny spot. Overnight.
But the websites hosting hackathons shouldn’t appear as if it was done in a half-hackathon event and launched. Think of UX Event websites that actually do not understand what “UX” means.
It’s true that this is a simple case of a broken link (or a user who opted not to use Google Search). Besides, I already found what I was looking for. But this scenario has proven to me that there’s a lot to improve regarding how the Government publishes and maintains information on its websites – not to mention when it comes down to searching for it – will the user find what he or she is looking for immediately?