#Gotham:...
Explore tagged Tumblr posts
jcmarchi · 17 days ago
Text
Revisiting Image Maps
New Post has been published on https://thedigitalinsider.com/revisiting-image-maps/
Revisiting Image Maps
I mentioned last time that I’ve been working on a new website for Emmy-award-winning game composer Mike Worth. He hired me to create a highly graphical design that showcases his work.
Mike loves ’90s animation, particularly Disney’s Duck Tales and other animated series. He challenged me to find a way to incorporate their retro ’90s style into his design without making it a pastiche. But that wasn’t my only challenge. I also needed to achieve that ’90s feel by using up-to-the-minute code to maintain accessibility, performance, responsiveness, and semantics.
Designing for Mike was like a trip back to when mainstream website design seemed more spontaneous and less governed by conventions and best practices. Some people describe these designs as “whimsical”:
adjective
spontaneously fanciful or playful
given to whims; capricious
quaint, unusual, or fantastic
— Collins English Dictionary
But I’m not so sure that’s entirely accurate. “Playful?” Definitely. “Fanciful?” Possibly. But “fantastic?” That depends. “Whimsy” sounds superfluous, so I call it “expressive” instead.
Studying design from way back, I remembered how websites often included graphics that combined branding, content, and navigation. Pretty much every reference to web design in the ’90s — when I designed my first website — talks about Warner Brothers’ Space Jam from 1996.
Warner Brothers’ Space Jam (1996)
So, I’m not going to do that.
Brands like Nintendo used their home pages to direct people to their content while making branded visual statements. Cheestrings combined graphics with navigation, making me wonder why we don’t see designs like this today. Goosebumps typified this approach, combining cartoon illustrations with brightly colored shapes into a functional and visually rich banner, proving that being useful doesn’t mean being boring.
Left to right: Nintendo, Cheestrings, Goosebumps.
In the ’90s, when I developed graphics for websites like these, I either sliced them up and put their parts in tables or used mostly forgotten image maps.
A brief overview of properties and values
Let’s run through a quick refresher. Image maps date all the way back to HTML 3.2, where, first, server-side maps and then client-side maps defined clickable regions over an image using map and area elements. They were popular for graphics, maps, and navigation, but their use declined with the rise of CSS, SVG, and JavaScript.
<map> adds clickable areas to a bitmap or vector image.
<map name="projects"> ... </map>
That <map> is linked to an image using the usemap attribute:
<img usemap="#projects" ...>
Those elements can have separate href and alt attributes and can be enhanced with ARIA to improve accessibility:
<map name="projects"> <area href="" alt="" … /> ... </map>
The shape attribute specifies an area’s shape. It can be a primitive circle or rect or a polygon defined by a set of absolute x and y coordinates:
<area shape="circle" coords="..." ... /> <area shape="rect" coords="..." ... /> <area shape="poly" coords="..." ... />
Despite their age, image maps still offer plenty of benefits. They’re lightweight and need (almost) no JavaScript. More on that in just a minute. They’re accessible and semantic when used with alt, ARIA, and title attributes. Despite being from a different era, even modern mobile browsers support image maps.
Design by Andy Clarke, Stuff & Nonsense. Mike Worth’s website will launch in April 2025, but you can see examples from this article on CodePen.
My design for Mike Worth includes several graphic navigation elements, which made me wonder if image maps might still be an appropriate solution.
Image maps in action
Mike wants his website to showcase his past work and the projects he’d like to do. To make this aspect of his design discoverable and fun, I created a map for people to explore by pressing on areas of the map to open modals. This map contains numbered circles, and pressing one pops up its modal.
My first thought was to embed anchors into the external map SVG:
<img src="projects.svg" alt="Projects"> <svg ...> ... <a href="..."> <circle cx="35" cy="35" r="35" fill="#941B2F"/> <path fill="#FFF" d="..."/> </a> </svg>
This approach is problematic. Those anchors are only active when SVG is inline and don’t work with an <img> element. But image maps work perfectly, even though specifying their coordinates can be laborious. Fortunately, plenty of tools are available, which make defining coordinates less tedious. Upload an image, choose shape types, draw the shapes, and copy the markup:
<img src="projects.svg" usemap="#projects-map.svg"> <map name="projects-map.svg"> <area href="" alt="" coords="..." shape="circle"> <area href="" alt="" coords="..." shape="circle"> ... </map>
Image maps work well when images are fixed sizes, but flexible images present a problem because map coordinates are absolute, not relative to an image’s dimensions. Making image maps responsive needs a little JavaScript to recalculate those coordinates when the image changes size:
function resizeMap() ["load", "resize"].forEach(event => window.addEventListener(event, resizeMap) );
I still wasn’t happy with this implementation as I wanted someone to be able to press on much larger map areas, not just the numbered circles.
Every <path> has coordinates which define how it’s drawn, and they’re relative to the SVG viewBox:
<svg width="1024" height="1024"> <path fill="#BFBFBF" d="…"/> </svg>
On the other hand, a map’s <area> coordinates are absolute to the top-left of an image, so <path> values need to be converted. Fortunately, Raphael Monnerat has written PathToPoints, a tool which does precisely that. Upload an SVG, choose the point frequency, copy the coordinates for each path, and add them to a map area’s coords:
<map> <area href="" shape="poly" coords="..."> <area href="" shape="poly" coords="..."> <area href="" shape="poly" coords="..."> ... </map>
More issues with image maps
Image maps are hard-coded and time-consuming to create without tools. Even with tools for generating image maps, converting paths to points, and then recalculating them using JavaScript, they could be challenging to maintain at scale.
<area> elements aren’t visible, and except for a change in the cursor, they provide no visual feedback when someone hovers over or presses a link. Plus, there’s no easy way to add animations or interaction effects.
But the deal-breaker for me was that an image map’s pixel-based values are unresponsive by default. So, what might be an alternative solution for implementing my map using CSS, HTML, and SVG?
Anchors positioned absolutely over my map wouldn’t solve the pixel-based positioning problem or give me the irregular-shaped clickable areas I wanted. Anchors within an external SVG wouldn’t work either.
But the solution was staring me in the face. I realized I needed to:
Create a new SVG path for each clickable area.
Make those paths invisible.
Wrap each path inside an anchor.
Place the anchors below other elements at the end of my SVG source.
Replace that external file with inline SVG.
I created a set of six much larger paths which define the clickable areas, each with its own fill to match its numbered circle. I placed each anchor at the end of my SVG source:
<svg … viewBox="0 0 1024 1024"> <!-- Visible content --> <g>...</g> <!-- Clickable areas -->` <g id="links">` <a href="..."><path fill="#B48F4C" d="..."/></a>` <a href="..."><path fill="#6FA676" d="..."/></a>` <a href="..."><path fill="#30201D" d="..."/></a>` ... </g> </svg>
Then, I reduced those anchors’ opacity to 0 and added a short transition to their full-opacity hover state:
#links a opacity: 0; transition: all .25s ease-in-out; #links a:hover opacity: 1;
While using an image map’s <area> sadly provides no visual feedback, embedded anchors and their content can respond to someone’s action, hint at what’s to come, and add detail and depth to a design.
I might add gloss to those numbered circles to be consistent with the branding I’ve designed for Mike. Or, I could include images, titles, or other content to preview the pop-up modals:
<g id="links"> <a href="…"> <path fill="#B48F4C" d="..."/> <image href="..." ... /> </a> </g>
Try it for yourself:
Expressive design, modern techniques
Designing Mike Worth’s website gave me a chance to blend expressive design with modern development techniques, and revisiting image maps reminded me just how important a tool image maps were during the period Mike loves so much.
Ultimately, image maps weren’t the right tool for Mike’s website. But exploring them helped me understand what I really needed: a way to recapture the expressiveness and personality of ’90s website design using modern techniques that are accessible, lightweight, responsive, and semantic. That’s what design’s about: choosing the right tool for a job, even if that sometimes means looking back to move forward.
Biography: Andy Clarke
Often referred to as one of the pioneers of web design, Andy Clarke has been instrumental in pushing the boundaries of web design and is known for his creative and visually stunning designs. His work has inspired countless designers to explore the full potential of product and website design.
Andy’s written several industry-leading books, including Transcending CSS, Hardboiled Web Design, and Art Direction for the Web. He’s also worked with businesses of all sizes and industries to achieve their goals through design.
Visit Andy’s studio, Stuff & Nonsense, and check out his Contract Killer, the popular web design contract template trusted by thousands of web designers and developers.
1 note · View note
violent138 · 1 year ago
Text
I think it would be slightly funny if the Bats occasionally dropped by other cities, solved a bit of crime, barely had to use any crazy measures (not everywhere is as bad as Gotham) and the leadership of those cities was kind of like, "This is what you keep complaining about? They're so handy!" to a very unamused, highly corrupt Gotham official.
225 notes · View notes
frownyalfred · 1 year ago
Text
Tips for writing those gala scenes, from someone who goes to them occasionally:
Generally you unbutton and re-button a suit coat when you sit down and stand up.
You’re supposed to hold wine or champagne glasses by the stem to avoid warming up the liquid inside. A character out of their depth might hold the glass around the sides instead.
When rich/important people forget your name and they’re drunk, they usually just tell you that they don’t remember or completely skip over any opportunity to use your name so they don’t look silly.
A good way to indicate you don’t want to shake someone’s hand at an event is to hold a drink in your right hand (and if you’re a woman, a purse in the other so you definitely can’t shift the glass to another hand and then shake)
Americans who still kiss cheeks as a welcome generally don’t press lips to cheeks, it’s more of a touch of cheek to cheek or even a hover (these days, mostly to avoid smudging a woman’s makeup)
The distinctions between dress codes (black tie, cocktail, etc) are very intricate but obvious to those who know how to look. If you wear a short skirt to a black tie event for example, people would clock that instantly even if the dress itself was very formal. Same thing goes for certain articles of men’s clothing.
Open bars / cash bars at events usually carry limited options. They’re meant to serve lots of people very quickly, so nobody is getting a cosmo or a Manhattan etc.
Members of the press generally aren’t allowed to freely circulate at nicer galas/events without a very good reason. When they do, they need to identify themselves before talking with someone.
92K notes · View notes
crowwkui · 29 days ago
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
thinking about the sirens in suits/suit adjacent clothes plus a little genderswap moment... ;-; just for me
14K notes · View notes
theendlessnessofbeingme · 24 days ago
Text
Stephanie dying her hair black for an undercover OP
Stephanie: So what you guys think
Dick:
Tim: That is so freaky
Jason: You… you look like Bruce’s mom!
Stephanie: WHAT? No I don’t!
Dick: You do! And it’s so fucking freaky!
Tim: It’s a really fucking eerie resemblance. Are you sure you’re not related to him? Like a distant cousin or something?
Stephanie: Your all fucking insane. I don’t look like her!
Jason: Hold on. Alfred! Can you come here!
Alfred: There is no need to shout Master Jason. Now what is all the commotion?
Jason: We just need to know, does Steph look like Bruce’s mom?
Alfred: Bloody Hell. You do bear a very striking resemblance to the late Martha Wayne, Ms Brown.
Tim: Told you.
Dick: Come on let’s dye it brown before Bruce sees and has a fucking panic attack.
9K notes · View notes
business-as-usual-bats · 1 month ago
Text
Extremely funny, actually, because I just remembered half of Batman’s villains literally have PhDs
Damian: Father, I am retiring Robin, I am halting vigilante activities completely
Bruce: oh thank god, I approve So Much you have NO idea-
Damian: instead I'm becoming a doctor
Bruce: what
14K notes · View notes
moon-ayyye · 3 months ago
Text
"Oh, Damian was such an asshole" "The bats tried to integrate him he's just ungrateful!" "He had no reason to be as rough or rude as he was"
If I was raised as a prince and suddenly got sent away to the most corrupt, dangerous, and disgusting city in bumfuck New Jersey, I would be worse. The fact that he didn't burn that bitch down makes him a better man than I could ever be
If anything, he didn't crash out enough
12K notes · View notes
sillywillyco · 4 months ago
Text
Tumblr media
save a horse ride a what..
10K notes · View notes
fanaticalthings · 7 months ago
Text
Jason Todd with his goons:
Tumblr media
21K notes · View notes
sparkoflena · 4 months ago
Text
Kon: Why are you staring at me so intently?
Tim, completely casually: I think I want to stab you with Kryptonite a few times. In different areas. For science.
Kon: ...why is my best friend considering torturing me?
Tim: I'm wondering if it takes you down so badly because it is truly that dangerous to you or if the invulnerablility of Kryptonians gives you a weak pain tolerance.
Kon: And you're asking me, a half human, instead of Clark or Kara?
Tim: They'd start telling Bruce about my "concerning villainous behavior" again.
Kon: And I won't?
Tim: I've kept fighting through pneumonia, a gunshot wound, and broken bones. And you go down when I poke you with a rock. Come on, you've got to be curious.
Kon: ...okay, I am a little curious.
Tim: YES! You won't regret this!
Kon: I will absolutely regret this.
13K notes · View notes
notrobinsomethingworse · 5 months ago
Text
Dick (Nightwing) and Jason (Robin) stare at Bruce. One sports pleading eyes, the other a shit eating grin. There’s a child between them with black hair and blue eyes.
Bruce, he doesn’t know what’s happening but he doesn’t like it: No.
Dick, grinning: He’s our younger brother now.
Jason, nodding seriously: You’re not gonna take him from us.
Tim, got kidnapped while taking photos of patrol, just happy to be there: Where’s the Batcave?
Bruce: what.
Dick, grinning wider: He’s ours now.
14K notes · View notes
wellensittich01 · 5 months ago
Text
Dick 9 times out of 10 failing to hide a severe injury from the rest of the batfam because without fail when he’s tired or drugged or generally not firing on all cylinders his native accent comes out as thick as the day he met Bruce.
- - -
Bruce: Dick come down for a check up I saw you take that hit for Tim.
Dick, halfway towards the cave exit and still going, in the quietest voice possible: im fine
Bruce: Say squirrel and you can leave.
Dick:
Bruce:
Jason:
Tim:
Damien:
Dick: …skweeerrehl.
Jason: Get him boys.
18K notes · View notes
crowwkui · 1 month ago
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
[corner a cat, get scratched!] ฅ₍⸍⸌̣ʷ̣̫⸍̣⸌₎ฅ
14K notes · View notes
theendlessnessofbeingme · 21 days ago
Text
Bruce high on pain meds lying on the couch
Jason: I’m gonna a straight answer here B-man. Who’s your favorite?
Bruce: Stephanie
Jason: What The Fuck?!?!
Dick: Jay he’s high as a fucking kite. Nothing he’s gonna say is gonna make sense.
Jason: Fuck that! I need answers
Jason: Bruce, why is Steph your favorite?
Bruce: Because she didn’t annoy me this week.
Tim: I want to say I’m surprised that he ranks us on who annoys him the least but at this point we all do it
Bruce: Your on the money number 5
Jason: Wait, B when was the last time I was your favorite?
Bruce: Three weeks ago when you didn’t kill anyone for 2 weeks. I was really proud.
Damian: Father who is usually the favorite?
Bruce: Cassandra is usually at the top and then Duke and Barbara are below her.
Jason: Who’s the least likely to be at the top?
Bruce: Tim.
Tim: What?!? Why?!??
Bruce: If you would stop with the constant conspiracy theories and caffeine addiction I wouldn’t have to be worried and less annoyed.
9K notes · View notes
frownyalfred · 4 months ago
Text
broke: Jason bragging about being on the FBI’s most wanted list
woke: Jason purposefully killing people on the FBI’s most wanted list in order to get higher
bespoke: Jason calling the FBI to tell them it’s bullshit he’s higher up on the most wanted list than [actual dangerous mob family head in Gotham]
9K notes · View notes