Hacker News new | ask | show | jobs
by TonyAlicea10 6 hours ago
> Buttons regularly perform navigations. Clicking a logout button navigates the current page to a logged-out one; clicking a “search” button navigates the current page to the query results.

This seems to conflate appearance with semantics. If an element causes a navigation, I make it a link. Whether it looks like a button is irrelevant, that’s CSS.

I always choose one or the other by intended behavior first, and that always works out great.

That said, I like the idea.

3 comments

> This seems to conflate appearance with semantics. If an element causes a navigation, I make it a link.

Neither of my examples work with links. Logout buttons must be buttons because they trigger unsafe requests, and "search" buttons are buttons because they submit the form as a query parameter. Both of these examples, are, however, navigations.[0]

> Whether it looks like a button is irrelevant, that’s CSS.

It's not irrelevant, because even if you style a link like a button (or vice versa), it will still behave like the thing it actually is. That's why it's important to have native HTML behavior that lets people use the right semantic element.

[0] https://html.spec.whatwg.org/multipage/browsing-the-web.html...

“Logout buttons must be buttons because they trigger unsafe requests”

But this is just more of the pedantic developer nonsense that everyone is complaining about here.

I’ve built tons of sites in my time, and the logout “button” is always a link to “/?logout=1”. In 30 years, this has never caused a problem.

Imagining you have a navigation to “/logout” that server side invalidates your token and redirects to home, would you implement that as a link? If so, what happens if someone tries to “open in a new tab” it?
Well, the idea here is “things that look like buttons do page navigation.”

And the proposal is that we should more closely align the presentation and function.

You are correct that if you don’t care about alignment, there is nothing wrong with the status quo.

Presentation in what medium? A screen reader? You’re talking the user-agent stylesheet, which is a particular chosen presentation that I can change with my own CSS. I can make a button look like a link.

You’re suggesting aligning to an inherently and deliberately changeable presentation.

The idea is fine, but worry about what an HTML element “looks like” is not a good reason.

> You’re suggesting aligning to an inherently and deliberately changeable presentation.

Yes, you have understood the proposal.