Admission: I’ve never worked on a website that was in anything other than English. I have worked on websites that were translated by other teams, but I didn’t have much to do with it. I do, however, spend a lot of time thinking in terms of block-level and inline-level elements. It’s been a couple of years now since logical properties have started to drop, and they have definitely started to invade my CSS muscle memory.
If you work in top-to-bottom, left-to-right languages like English as I do, you just map top and bottom to
block in your head (you probably already do) and left and right as
inline. So instead of
height, you think
block-size. Instead of
border-right, you think
border-inline-end. Instead of
padding: 0 1em, you think
padding-inline: 1em. And instead of
margin-top, you think
I mapped out that stuff in another post.
One trouble is that browser support is a little weird. Like
margin-block-end is gonna work anywhere that any logical properties at all work, but if you’re like, “I’d like to set both the start and the end (like
margin: 1rem 0), so I’ll use just
margin-block,” well, that doesn’t work in some browsers (yet). That makes a certain sense, because there is no “direct mapping” of
margin-block to any ex-logical CSS property. There are enough other little caveats like that, making me a just a smidge squeamish about using them everywhere.
Still, I’m probably going to start using them a lot more, as even if I still mostly only work on English sites, I like the idea that if I use them consistently, it makes translating any site I work on to languages that aren’t left-to-right and top-to-bottom a lot easier. Not to mention, I just like the mental model of thinking of things as block and inline.
I’m trying to link to Adam Argyle and Oriol Brufau’s article here, so let me just end with a quote from it, putting a point on why using non-logical properties only makes sense for one “language style”:
In English, letters and words flow left to right while paragraphs are stacked top to bottom. In traditional Chinese, letters and words are top to bottom while paragraphs are stacked right to left. In just these 2 cases, if we write CSS that puts “margin top” on a paragraph, we’re only appropriately spacing 1 language style. If the page is translated into traditional Chinese from English, the margin may well not make sense in the new vertical writing mode.
As someone who frequently develops for right-to-left languages, thank you! Thank you to the spec writers, thank you to the testers, thank you to the browser developers, and thank you to websites like CSS-Tricks for promoting the use of logical CSS properties.