5 ms·
HTML Lists
- jimmaswell 6mo agoLots of useful information I wasn't aware of after being a front-end lead for years. I'll start using these at work for sure.
- appplication 6mo agoThis was a fun little read. Just through testing the examples, I also learned datalist does not seem to work well on mobile safari (which is a large enough market I might even say there’s essentially no scenario in which it’s worth using if there’s a compatibility issue).
- MattGaiser 6mo agoWay back when I was working my first job, datalist didn’t work on Firefox. That’s what got Firefox removed from the list of supported browsers. It has been a problem for a long time if you want to support anything other than Chrome.
- Levitating 6mo ago> It has been a problem for a long time if you want to support anything other than Chrome. That's partially because Chrome keeps adopting standards nobody else wants to support.
- carlosjobim 6mo agoThey work well but not with GBoard on iOS.
- VorpalWay 6mo agoDoesn't work with Firefox on Android either.
- masswerk 6mo agoMind that input + datalist is the HTML equivalent of the Windows combobox, once generally regarded as the worst UI element ever. (This was enjoying meme status in usability related articles and write-ups. So probably not a recommendation.)
- xigoi 6mo agoWhat’s the better alternative for letting the user input arbitrary text with an easier way to input known options?
- masswerk 6mo agoThe general consensus used to be that questions should be either closed (i.e., all the knowledge is disclosed in the interface) or open (any in-between doesn't help to organinze and conceptionalize thought) and that UI elements should signal this appropriately. Now, with autocomplete, there's a use case for this. But there seem to be two types of users, those who make ready use of this and those who ignore it completely, maybe hinting at the question being still open. (We may observe how the implementation of datalist reflects this: it's still a simple textbox, i.e. input element, and the list is attached as an add-on, rather than being a list type of its own. It's not a list standing on its own, but an enhancement to the input field. So, rather don't use it as a control element for lists?) PS: The point was really that, if you were to google "worst interface element", you got loads of articles about the combobox.
- tshaddox 6mo agoThe datalist examples definitely work on my iPhone. They integrate into the autocomplete suggestions above the native iOS keyboard. There’s no way to browse all the suggestions, but I suppose that’s not an intended use case for datalist. However, the disabled attr on group definitely does not work!
- appplication 6mo agoThat’s funny, in my case it tries to autofill my contact information
- king_geedorah 6mo agoIt seems the autofill bar only populates with the first three items in the datalist and also does not clear when navigating to a regular text field like this one. Kind of an interesting way to have screwed it up.
- tshaddox 6mo agoIt initially populates with the first 3 options, but it also updates as you type, with what appears to be a case-insensitive prefix filter.
- yallpendantools 6mo agoUgh this is the dose of cold water from reality that I didn't want but definitely needed. More than a decade ago I had a project that used a pretty aggressive input-suggestion widget on the UI. We used a jQuery plugin for it and it was by far the most complicated part of the frontend. In fact, it was the main use-case for jQuery in that project. Reading the article, I thought it would be pretty much a breeze re-implementing that frontend in a lightweight JS-minimalist version. But of course, unless I ship my machine to the users, not really. Sad state of affairs. Nonetheless, I'm really impressed with what's included in the HTML spec nowadays! I haven't kept-up with developments in the spec since I read all about XHTML in high school. I ought to take some time every now and then to see what's changed though, again, browser compatibility is a PITA today as it was back in high school.
- zombot 6mo agoWhat I always wanted to know about lists and never dared to ask!
- reconnecting 6mo agoThis is how real HTML magic should look like: <MARQUEE> <OL> <LI>One</LI> <LI>Two</LI> <LI>Three</LI> </OL> </MARQUEE>
- recroad 6mo ago<BLINK> <MARQUEE> <OL> <LI>One</LI> <LI>Two</LI> <LI>Three</LI> </OL> </MARQUEE> </BLINK> FTFY
- reconnecting 6mo ago<MARK>FTFY</MARK>
- Trufa 6mo agoblink wont work, but marquee will
- wwweston 6mo agoNot with that attitude: <style> @keyframes blink { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } } blink { animation: blink 0.7s infinite; } </style> <blink>This guy blinks.</blink>
- Trufa 6mo agopeople who use css are not welcome here.
- Ancapistani 6mo agoIt’s OK if it’s a polyfill. Wait, not far enough back… It’s OK if it’s a shim.
- reconnecting 6mo agoWhat version of Macromedia Dreamweaver did you use to make this?
- VladVladikoff 6mo ago>What if there’s a bunch of options, but for [reasons] we don’t want a user to be able to select a subset of them? Let’s add the disabled attribute to an optgroup Seems broken in mobile safari, not actually disabled I can still select the disabled items.
- p2detar 6mo agoNot broken, but strange since it should be working on latest Safari. https://caniuse.com/mdn-html_elements_optgroup_disabled https://caniuse.com/mdn-html_elements_optgroup_disabled I think it may be a Safari bug.
- quantumleaper 6mo agoYour link states it's not supported in iOS Safari at all, even though it has been supported in macOS Safari since 2013.
- p2detar 6mo agoHa! You're right. Ironically, I was viewing it on my phone and I only saw the "Safari" column and not "Safari on iOS".
- tvmalsv 6mo agoCame here to mention the same thing. Very well be on me, tho. I’m using the Brave browser (is it safari-powered?) and on iOS 18.7.9, which is the newest my old iPhone X supports.
- somewhatgoated 6mo agoI think on iphone everything is safari powered(?) Also doesnt work for me on iPhone Firefox
- zamadatix 6mo agoThis is the kind of thing I struggle with on using native HtML for more than the basics. Even if you do enough reading and have enough confidence to write an article like this the comments end up with quirks, limitations, or notes on lack of support about different browser+device combos. Div soup is probably a bit far in the opposite direction, but even then it's at least pretty consistent and apparent what the quirks and limitations are because it aligns with what you or the framework wrote much more consistently.
- montroser 6mo agoGood stuff, except don't get too excited about `datalist`. It just doesn't have enough hooks to be actually useful for anything other than a little prototype.
- iammrpayments 6mo agoI think I’ve tried building a combobox using datalist once but it didn’t work
- bombcar 6mo agoAs you learn more about “raw” html you find all sorts of very fun things that are - ah - not very well implemented if at all.
- jazzypants 6mo agoThe neat thing about HTML is that it's a living standard and anyone can contribute. Old bugs get corrected all the time simply because it annoyed a certain person enough for them to push a fix through the standards process. Unfortunately, it could be around a decade before all three major browsers finally implement the standard, and the fix might not be quite as clean as you originally imagined.
- tosti 6mo agoThe reason is that there are lots of webpage authors, lots of pages that use old standards and very few browser implementations. That made the browsers carry the burden of making it all work right for everyone.
- tosti 6mo agoCase in point: the keygen element.
- voidnap 6mo agoI've used a datalist for autocomplete suggestions and it's worked great.
- MagicMoonlight 6mo agoThat’s a really good article. It’s nice to see something which isn’t slop.
- lucb1e 6mo agoSomehow I'm still in the mode where I'm surprised where it is, rather than when it isn't, but yeah it's annoyingly often. Do you come across it so much that it's your default expectation now?
- zamadatix 6mo agoYet the article and comments still feel the need to talk about AI when it was not otherwise involved. The inescapable topic!
- paceaux 6mo agoI'm not quite sure what you mean about that… I do have a disclaimer in the sidebar that makes it clear that I'm not using AI — but that's solely so that people can appreciate that I put actual effort into writing it.
- zamadatix 6mo agoThe reply was meant to be on the GP, I must have-mis tapped, but since we're here now :D > No need to ask AI for a summary; I’ll just give you the ending up front. It's easy to miss how often we bring AI up about in conversation or writing given just how dominating a topic it can be in every circle these days.
- paceaux 6mo agoahhh. Yeah I put it there just to discourage folks from asking some LLM to summarize it. I really don't want my content fed to Sam Altman.
- paceaux 6mo agoI'm writing articles like this just because I think the internet deserves some humanity for a change. Thanks for noticing.
- jdw64 6mo agoHTML linters actually help distinguish things like that? I'm curious if there are any linters out there that can enforce this kind of semantic tag selection.
- wonger_ 6mo agoClosest thing I know of is https://github.com/kristoff-it/superhtml#diagnostics https://github.com/kristoff-it/superhtml#diagnostics SuperHTML validates not only syntax but also element nesting and attribute values. No other language server implements the full HTML spec in its validation code.
- jdw64 6mo agothanks!
- tosti 6mo agoEnforce semantic tags? HTML is first and foremost meant for authors to get creative. Enforcing one tag over another doesn't make sense to me. Accessibility yes, but there are plenty of constraints already.
- asveikau 6mo agoTitle reminds me of Joni Mitchell. I've looked at lists from both sides now From give and take and still somehow It's HTML lists' illusions I recall I really don't know HTML lists at all
- ale 6mo agoI thought of the 2000 version first which made this much funnier in my head
- WA 6mo agoAnd yet, no native select + search combined, which is a very common kind of list. The datalist is basically unusable, because you don't know any of the options.
- porridgeraisin 6mo agoand it is not styleable
- dzonga 6mo agothis was a dope & comprehensive. unfortunately we have a new class of dev's that never learned html but went straight for React. Now with LLMs they will never learn HTML. hence they reach for react components where simple html would have been sufficient.
- Ancapistani 6mo agoI think that’s OK. When I first had to use XML, I had to learn the XML spec and output it manually - serialization libraries didn’t really exist yet. I’ve since seen generation of juniors come up through the ranks using XML as an interchange format (and then JSON) without ever learning it fully. It was fine, and nothing terrible happened. I’ve seen AJAX go from the hot new thing to people not knowing what it stood for, to now most people not even recognizing the term. AJAX didn’t die; it became so common we don’t need a word for it anymore.
- tyre 6mo agoKind of like JQuery. I know why it was such an incredible library and am happy no new devs I work with (a) know what it is (b) understand why it was necessary. Thank god the underlying language, libraries, and browser support have moved forward. And IE6 is dead. God, what a nightmare.
- Ancapistani 6mo agoI remember when IE6 was the shiny new solution that we desperately wanted :). IE 5.5 was much, much worse, and there was a long time there when it didn’t get any updates at all.
- dzonga 6mo agoif you learnt Ajax - it still works just like it did whether you're using the XHR api or the newer fetch api. html forms still work the same way. can one say the same for the various form libraries for react or state solutions.
- 6mo ago
- einpoklum 6mo agotl;dr: You _do_ know HTML lists, they're basicaly like they used to be 20 years ago. But there are HTML form controls which are list-like and this will tell you about them: <select> and <datalist> which have <option> elements and <menu> which has <li> elements. It's a nice read, not very long and you can kind of leisurely skim it.
- nektro 6mo agoTIL <menu>, I wonder why more frameworks don't make use of it.
- pphysch 6mo agobig brain no learn hyperspeak when many div do trick
- stirfish 6mo ago<menu>, <dialog>, lots of fun stuff in html now. I like to ask people what they imagine <ruby> does, because I certainly didn't guess right.
- extra88 6mo ago<dialog> is awesome, especially when combined with Invoker commands or `popover`. <menu> does nothing, it's just another name for <ul>.
- paceaux 6mo ago<ruby> is going to be featured in my next article: You don't know HTML…Semantics. I'm debating whether that one will be one or two articles because I'm going to be covering everything from <ruby>, <bdi>, <bdo> all the way through <var>, <kbd>, <samp>, <cite>, and <q>. After that one, I'll probably have something like, "You don't know HTML interactions" or something to cover <dialog>, <popover>, and the Invoker API. So sit tight; it's all coming.
- extra88 6mo agoBecause for the user experience, it is identical to <ul>. Use <menu> if it helps you to understand your code but in the browser's accessibility tree and in all other respects, it's just an unordered list. Conveying that something is a list of actions requires adding ARIA attributes. The article mentions `role=menu` but that's not enough, each item also needs the `menuitem` role. The WAI Authoring Practices Guide explains the roles and interaction expectations; don't copy their coded examples and definitely don't use the roles for navigation menus. https://www.w3.org/WAI/ARIA/apg/patterns/menubar/ https://www.w3.org/WAI/ARIA/apg/patterns/menubar/
- ksec 6mo agoSigh. Just when I was cheering Safari, finally both on Desktop and on Mobile have gotten to the point of good enough. And then to find out the list don't work on Safari iOS.
- ShivamNayak11 6mo ago[dead]
- ale 6mo agoNow i need one that explains the css counters
- paceaux 6mo agoI will probably write an entirely separate article just on the CSS options for lists. So ... don't hold your breath. But that will come. Eventually.
- tuzemec 6mo agoOnly if we had designers who like the default datalist appearance...
- joshmoody24 6mo agoIn my experience, lack of style customizability is the biggest obstacle to using native HTML features
- kevinh456 6mo agoDL is a definition list not a description list.
- vivzkestrel 6mo ago- you guys write such nice blogs but i cant seem to ever get a list of all the posts on your blog in 1 go - https://blog.frankmtaylor.com/archive https://blog.frankmtaylor.com/archive doesnt work - https://blog.frankmtaylor.com/archives https://blog.frankmtaylor.com/archives nope - https://blog.frankmtaylor.com/posts https://blog.frankmtaylor.com/posts nada - https://blog.frankmtaylor.com/all https://blog.frankmtaylor.com/all nil - https://blog.frankmtaylor.com/blog https://blog.frankmtaylor.com/blog nyet - do you understand that most of us got 10000+ bookmarks and it would be really really handy if you could make a single page on your website that lists every post every written without the description or the entire article on it?
- paceaux 6mo agoYou mean a sitemap? Because you're talking about a sitemap. Most blogs have a sitemap.xml that lists all of the posts. Also, why would you want to go through all 235 posts?
- vivzkestrel 6mo agono i am talking about a page like this - https://www.seangoedecke.com/page/2 https://www.seangoedecke.com/page/2 or - https://mmapped.blog/posts https://mmapped.blog/posts this or - https://kevinpatel.xyz/posts/ https://kevinpatel.xyz/posts/ this
- paceaux 6mo agoGood for them. I build my website around topics. If you just want a raw list of everything I've written, that's the sitemap. Otherwise, just browse by topics or even the tags on the posts.
- adithyassekhar 6mo agoIs this just an exercise to show how embarrassing safari is? /s
- joelanman 6mo agoIf select counts as a list, then I'd include radio buttons too because for single selection they're often a better choice