Death to px, long live ch

24 points | by Brajeshwar 2 hours ago

15 comments

  • somat 31 minutes ago

    What I want to know is who decided to break px, the last thing we need is yet another screwball physical measurement, css was already full of them. But what "tut tut, everybody is using px and these new hi-dpi displays are rendering things really tiny, we can't have that" and now px as a useful unit is ruined.

    Is there a way to use real pixels? My, admittedly quick, search says no. at least nothing jumps out at me from the spec.

      cedilla 2 minutes ago

      No one decided to break it, it was 1/96th of an inch from the beginning.

      The problem with different screens having different pixel densities was already present and obvious in 1996.

      "Real" pixels are useless if you don't know anything about the screen you're going to render on.

      fsmv 4 minutes ago

      You could set the CSS zoom property to 1/window.devicePixelRatio with JavaScript but I think you can't do it with CSS only. If you do that then px is physical px. This doesn't include browser zoom though or mobile pinch to zoom. You could also get those with JavaScript but then people would be really confused by the behavior of your website.

      You definitely can't get pure integers though it's always a float even if you use whole numbers. It does eventually get rounded before becoming pixels though.

      notatoad 11 minutes ago

      px is still a useful unit. the user's operating system applying a scaling fator doesn't make it not useful.

      if the user's operating system is configured to draw pixels at a 1:1 ratio, your pixels will be drawn at a 1:1 ratio. if the user's operating system is configured to draw pixels at a 2:1 or 3:1 ratio, you as a web developer don't get to override that, but you're still addressing pixels directly. if you want to write software that manages the user's hardware directly without giving them options to override it, the web is probably not the right platform for you.

  • microflash an hour ago

    I’ve found that ch and ex units are heavily influenced by latin characters. They just give weird results with non-latin characters leading to magic numbers. But the concept is really solid: use them if you want the spacing relative to text.

      LowTechHN an hour ago

      Thought a magic number is when you hard code a number in logic instead of pulling from a data source

        goda90 43 minutes ago

        I'm guessing the GP means the weird results leads to adding magic numbers to get good results.

      shevy-java 43 minutes ago

      Nobody uses ch, let's be honest.

  • npn 41 minutes ago

    I also did some experiment with ch many years ago. I found that 60ch is ideal width for block text for easy reading. too bad it is pretty hard to make websites with only 60ch wide.

  • cynicalsecurity 31 minutes ago

    What happened to em?

      masfuerte 2 minutes ago

      That's what I wondered. I found the spec*. I'd vaguely thought that 1em was the width of "M" but apparently it's just the font-size, and the connection between font-size and the actual size of the text is very font dependent.

      So 1ch is defined to be the advance width of "0" (zero), so it's actually telling you something about the current font.

      * https://www.w3.org/TR/css-values-4/#font-relative-lengths

  • awestroke 7 minutes ago

    I will not take CSS advice from a website that looks like such utter crap on mobile

  • rado 44 minutes ago

    Layout shift when the font loads

  • shevy-java 44 minutes ago

    There is no way I will abandon px.

    In fact, I think CSS made the wrong decision by proliferating so many things, em, %, px, ch, whatever-else. The human brain is not well-equipped to have so many things for basically the same thing. That's a design flaw in CSS, plain and simple. And the author is thus also wrong. There won't be a mass movement of people using "ch". It would be a good first april article though.