Expanding Images using HTML5′s contenteditable tabindex
HTML5 has a new attribute, contenteditable, which can be applied to any element which allows it to be edited directly in the browser window. Think of text input with a predefined value, but it can literally be any element. Form elements like text inputs support the :focus pseudo class, which allow us to style those elements when they are clicked upon or otherwise navigated to. Giving an element the contenteditable attribute means it also now supports the :focus pseudo class, which opens up some interesting possibilities!
We’ll exploit this little trick to make an expanding image (like a lightbox without the overlay) right within some content.
UPDATE: Even better, you can give attributes a tabindex attribute, like you would a form element, which allow allows :focus without the editability. This article has been updated to go that route instead.
HTML5 has nice elements for including captioned images.
Jump!
We just give the figure element tabindex, so that it can be in focus.
Give each subsequent figure a tabindex value one higher and the images will be able to be tabbed through nicely from the keyboard! The Images
The images will be “full size”.
This means they will be scaled down for regular display on the page, and scaled up when we do our magical CSS expanding. Potentially a waste of bandwidth for the browsers that don’t support this. The tradeoff is your call.
The :focus part of this isn’t CSS3, the but shadows, transforms, and transitions are. The hover state will rotate the image a bit, and the :focus style (when the image is clicked on), will expand it, rotate it again, and make sure it’s on top with z-index.
The HTML5 contenteditable attribute is supported in Firefox 3.6+, Safari 4+, Chrome, and Opera (10.6 only tested). Note that the attribute will cascade down to all child elements. In our demo, having the image and figure caption be editable doesn’t make much sense, so we can turn it off individually on them.
Jump!
Opera respects the child elements not being editable, but still runs the spellchecker on them and will red-underline words it finds misspelled which can be a bit weird.
Our demo also relies upon transforms to “work” though, which are only supported in current WebKit browsers and Firefox 4+. Firefox 3.6 supports the transform but not the transition.
The fallback is that the images just don’t expand though, which is of course no big deal.
CSS Math Functions: A Simple Guide for Designers & Developers In modern CSS, math functions let you perform real calculations directly in your styles. This empowers your layouts, spacing, and responsive design with more flexibility and control. Let’s explore what CSS math functions are, why they matter, and how to use them. What Are CSS Math Functions? CSS math functions let you compute values in real time. Instead of hardcoding numbers, you can use formulas. The most commonly supported math functions are: calc() min() max() clamp() These allow mixing units (e.g., % + px ) or setting limits on values. Why Use Math Functions? Responsive design becomes easier — e.g. mix percentages and fixed px values. Dynamic spacing & sizing without needing many media queries. Constraints & boundaries — you can ensure a value stays between a minimum and maximum. Cleaner code — fewer manual adjustments. How Each Function Works + Examples 1. ca...
When a browser loads a webpage, each image file triggers a separate HTTP request. If you have 20 icons, that’s 20 extra requests. A sprite consolidates all icons into one file , so the browser downloads just that single image once. Then, using background-position , you “shift” the visible window of that image to show the correct icon. Learn how to use CSS image sprites to enhance your website's performance Workflow in Detail Collect Icons Gather all icons you use repeatedly (social media, buttons, UI elements). Create a Sprite Sheet Use a tool like: Figma or Photoshop for manual placement. SpritePad or Glue (command line) to automate sprite sheet generation and output CSS coordinates. Calculate Positions Each icon’s top-left coordinates inside the sprite image determine its background-position . Example: if an icon starts 96 px from the left and 64 px from the top, use: .icon-example { background-position : - 96px - 64px ; } Serve Optimally Save t...
Web Accessibility: Making the Internet Inclusive for Everyone What Is Web Accessibility? Web accessibility means designing and developing websites so that people of all abilities and disabilities can use them effectively . An accessible website ensures that users with visual, auditory, motor, or cognitive impairments can perceive, understand, navigate, and interact with its content. Why Accessibility Matters Inclusive Experience: The web should be usable by everyone, regardless of physical or cognitive abilities. Legal Compliance: Many countries enforce accessibility laws (such as the ADA in the U.S. or the RPwD Act in India). Non-compliance can lead to legal action. Better User Experience: Accessible design benefits all users, including those on mobile devices, in noisy environments, or with slow internet connections. SEO Benefits: Search engines favor well-structured, semantic content, which overlaps with accessibility best practices. Core Principles ...