96 comments

[ 14.1 ms ] story [ 2039 ms ] thread
That's really well laid out. Less detail than MDN, but that site can be overkill.

Two small pieces of feedback. HTTPS support would be good. Also, when I scroll the list of element and then click on one, I'm taken back to the top of the list - I'd like to stay where I am.

I think a nice feature would be if the description pages linked to the relevant MDN page - for when you want more extensive information about an element.

Otherwise, I love this OP. Will likely use it regularly!

> I think a nice feature would be if the description pages linked to the relevant MDN page - for when you want more extensive information about an element.

This would be really good. Mostly I'm just looking for a quick reference, but sometimes I want all the details.

> I think a nice feature would be if the description pages linked to the relevant MDN page

They do, top right next to (the useless, ridiculous) 'share' link.

quite cool! but even after deselecting all the options, I'm still being shown some tags (select, tr, th, td, dt, li). I think it's because they haven't been tagged with anything
Really cool. One feature request. when a description of a tag refers to another tag, then those tags should be links.

For example the description for <li> is:

   Defines a list item within an ordered list <ol> or unordered list <ul>.
Here I should be able to click on <ol> and <ul> to get information about those tags.
Don't ask a web reference page to act like a web page...
For some reason, if I have self-closing and inline checked, and uncheck inline, meta items appear.
To expand, the issue seems to happen after clicking a tag and then pressing back. It's not specific to meta. This time block elements were appearing when not tagged.
And as an example, when filtering by "self-closing" the <img> tag does not appear. That happens because "inline" is not selected. Same behavior with <embed> and removing either "self-closing" or "block".
In general this is pretty good. One mistake that it doesn't make is to use low contrast for everything.

However, the code examples don't look very nice on my box due to the font which comes out as Nimbus Mono L. How about you link to an actual font? (I like Ubuntu Mono, though there are lots of other good programming fonts).

Also with respect to code samples, would black text on a white background be a possibuility?

On the font issue: you're effectively saying "I don't like the default monospace font my browser is configured to use, please change your website to fix this" (since Nimbus Mono isn't in their CSS font family list). I feel you as a user have some responsibility in that case.
> you're effectively saying "I don't like the default monospace font my browser is configured to use, please change your website to fix this"

No, that's not true. I have just changed the monospace font on Firefox to Ubuntu Mono, and it is still showing as Nimbus Mono. This is the website doing this -- for example the change is reflected fine in HN.

> I feel you as a user have some responsibility in that case.

These days when I build websites I normally specify specific web fonts so that I know it won't default to something not good.

The website's CSS uses the following fonts for code blocks:

> "Inconsolata", "Source Code Pro", "Consolas", "Monaco", "Courier", monospace

So either it is using one of those fonts (Courier and Nimbus Mono L are similar I guess), the site is serving you special CSS that I'm not getting (and I've tested it on Linux and Windows), or Firefox has done some weird font aliasing and one of the above is being treated as Nimbus Mono L.

I've checked and it's picking up the "Courier" from the CSS.

(I tried removing Courier and it displayed the text in something nice-looking which Firefox reports is DejaVu Sans Mono)

It's missing the links to context & to the spec, which was the killer feature of the old WDG HTML Reference[0].

[0]: http://www.htmlhelp.com/reference/html40/alist.html

Oh, such happy memories of that site... This has quite made my day!
Well, there's a (rather hard to see) link to the MDN (which has reference links) in the upper right corner. But yeah, this should be more prominent.

I'd consider this one expendable, though:

https://imgur.com/a/V6SRq

(Get off my lawn!)

You left out <center> ;-)
Don't forget <marquee> also!
And <blink>! And <font>!
And beloved <xmp> and <plaintext>, which, unlike <blink>, have still 100% support in current browsers.
Nice...would be useful to have the summary of what a tag's purpose is on the main page list of tags. For three letter or less tags it's not always obvious what I'm looking to achieve a specific task.
I wouldn't say hgroup is experimental. It was on the standards track and now it's being deprecated.
Came here to post that - it's not experimental at all - it's dead.
Nice, but seems to be something wrong with the tagging. I unchecked all tags except `experimental` and I ended up with seven results, only one of which is actually experimental, (`picture`), the rest being _pretty_ cemented (`dt`, `li`, `option`, `td`, `th`, and `tr`). It also seems to leave out some other expermental tags, like `wbr` and `slot`, that are on the site.
Those `cemented` examples appear to be ones that don't have a tag at all

If you uncheck all boxes, those items remain. That's probably why they're there for your case.

The tagging seems to be "filter out anything that has a tag that's not selected", not "only show things that have one of these tags"
Is there a good list of the most used meta tags out there?
This is really great. It would be even greater if it could be used offline. Instead of hitting the server every time I choose one of the elements to view.
I've only checked the anchor tag, and it is lacking.

It should link to the URI RFC to illustrate all possibly valid syntax for the href attribute. Also doesn't mention 'javascript:'

Can you add the 'range' input type?
The design is really cute!

I appreciate that the website works well even with all scripts blocked.

I believe your kbd example is incorrect. You suggest

> To save, press <kbd>Ctrl + S</kbd>.

But the spec (both W3C and WHATWG) suggests that individual keys should be nested inside an outer <kbd> tag: "When the kbd element is nested inside another kbd element, it represents an actual key or other single unit of input as appropriate for the input mechanism."

Thus, the example should be:

> To save, press <kbd><kbd>Ctrl</kbd> + <kbd>S</kbd></kbd>.

Cite: https://w3c.github.io/html/textlevel-semantics.html#the-kbd-...

On the face of it, this seems ridiculous. It's too verbose, the tag name is misleading, and if you actually use the correct markup on GitHub or StackOverflow, it will render incorrectly because both sites assume the standalone <kbd> element represents physical keyboard buttons.

On the other hand, what's the value in semantic markup if we don't adhere to its semantics?

Practically speaking, I would be a happier person today if I hadn't read that part of the spec, and instead persisted on in blissful ignorance of the element's intended semantics. Thanks, specs.

Wow, the second example in fig 111.

> <kbd><kbd><samp>File</samp></kbd>|<kbd><samp>Eat Apple...</samp></kbd></kbd>

Boy that's terrible.

Edit: Oh, I missed that the example immediately following it is supposedly equivalent and only uses a single outer tag. I don't really understand then, if they're equivalent then what's the point of the defined semantics above?

My reading of it is that:

1. <kbd>___</kbd> means "literal user input"

2. <kbd><kbd>___</kbd></kbd> means "this specific, atomic keypress"

3. <kbd><kbd><samp>___</samp></kbd></kbd> means "this specific, atomic button/action/menu item"

So you can fall back to just using method 1, but it implies generic user input, inclusive of but not limited to keypresses. Thus, styling and treating a single kbd tag specifically like a keyboard button is still likely incorrect, since that precludes other semantically valid uses?

Then I don't understand why didn't they use something like

    To select all text, press
    <user-input type="keyboard">
        <interaction-group>
            <interaction type="keypress">Ctrl</interaction>
            <comment>together with</comment>
            <interaction type="keypress">A</interaction>
        </interaction>
   </user-input>
   or you can
   <user-input type="mouse">
        <interaction-group>
            <interaction type="click">
                right-click <ui-item>the empty space around the text</ui-item>
            </interaction>
            <comment>and</comment>
            <interaction type="click">
                click <ui-item>Select All</ui-item>
            </interaction>
        </interaction>
   </user-input>

Nevermind. After writing this now I understand why.
From the docs:

> Such precision isn’t necessary; the following is equally fine: > <p>To make George eat an apple, select <kbd>File | Eat Apple...</kbd></p>

Yeah whoops I noticed that right after posting.
Update: Looks like the <kbd> tag dates to the first draft of HTML 2.0 in 1993, where it was defined as "in an instruction manual, Text typed by a user." (https://tools.ietf.org/html/draft-ietf-iiir-html-00)

It remained more or less the same through HTML 4.01: "Indicates text to be entered by the user."

The notion of using nested kbd tags to indicate literal keys appears to have been introduced by WHATWG when working on HTML5.

...I'll dig into this more and actually write a blog post about it. I'm this close to relaunching a proper blog.

> The notion of using nested kbd tags to indicate literal keys appears to have been introduced by WHATWG when working on HTML5.

Did that follow common usage at the time?

Talking about common usage of the kbd tag is kind of difficult given that it's never been commonly used, but personally, this was the only thing I ever saw it used for.
What's the point of this when <code> already exists :/?

I'd think a website like this should be opinionated and remove the tags that are useless or should be deprecated in a web 5.0 world (huhu)

(great website btw)

> What's the point of this when <code> already exists :/?

Because keyboard input doesn't always mean code?

yes but the way you express both are usually equivalent, I don't think having too many specific tags in HTML is a good idea.
> Because keyboard input doesn't always mean code?

Well speak for yourself ;)

you just contradicted yourself.
His statement, yours, and mine are all valid Tcl code :-)

They just invoke the procedure named "unknown" a lot, probably -- depending on any other preamble.

> Practically speaking, I would be a happier person today if I hadn't read that part of the spec, and instead persisted on in blissful ignorance of the element's intended semantics. Thanks, specs.

Hear hear! I found this hilarious and speaking to a shared feeling about some specs.

Of course, I kind of understand why these WTF elements make it into the specs. Maybe it's some stupid corner-case that the first implementor's code handled in an odd way because the code was simpler. Maybe there are other interactions that made it simpler to have this case be weird so that it would at least be consistent with that case. Most often, of course, it's because some vendor's code is a buggy mess of spaghetti code that can barely do the most basic stuff without falling over.

We've all been there... ;)

Why does it want me to whitelist it in my adblocker when it claims to be free and to always be free?
It's free to you, not free to them.
If I'm supposed to let them sell my privacy and attention, I wouldn't really call it free. Money isn't the only thing of value I can give to a website.
Free means you don't have to give them money to use it. If you use a different definition, you will often be confused.
It's the voluntary nature of the payment and whether the cost is tangible to you that determine what is free, not the currency used. Substitute "your FBI file" for your ad network profile and "compute time on your Amazon instance" for JavaScript time in your browser to make this clearer.
Tell me more about this Silicon Valley place where everything is magically free?
I'll have to defer to someone who actually makes that claim.
Decide for yourself, either use it or don't.
The checkbox filters at the top are somewhat un-intuitive. For example, If I uncheck everything but experimental, I want to see all experimental... but what I get is all experimental that are not block, inline, etc. I mean, as a developer, I see how those filters work... but as an end user, that isn't how I want them to work.
Good stuff. Would be even nicer if it showed information about optionally self-closing tags, which is one of the main reasons I occasionally need to look at the spec. For instance:

> A p element's end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, hr, main, nav, ol, p, pre, section, table, or ul, element, or if there is no more content in the parent element and the parent element is not an a element.

Links to the relevant parts of the official spec would be nice too, e.g. https://www.w3.org/TR/html5/grouping-content.html#the-p-elem...

I'd rather just close the tag instead of trying to recall the specific instances of when I'm not required to close the tag.
I think the point is that you may not be expecting the P tag to auto close, in the case of things like Address.
Nit: self-closing refers to tags that are closed like <this/>.
Is there something similar to this for javascript?

I really find this format super easy to read, even if there may be slight inconsistencies and nuances to reading it.

How is this updated (manually or automatically from official specs)?

Call me paranoid, but I see this diverging from actual specs, then people googling for "html reference" finding it and thinking it is something official. The result would be another W3Schools disaster[1].

In my opinion, the official W3 specification pages are not that bad, and alternatively there's the simpler MDN with strong community support (thus lower risk of deprecation).

[1]: http://www.w3fools.com/

You've got the description for the "ins" element the same as for the (admittedly related) "del" element.