Helping a client update their Shopify theme. The previous designer used an unconventional method for the base grid. I need help translating the code.
Read an old article about this subject, but I still did not understand.
$phone: "screen and (max-width: 640px)";
$tablet: "screen and (min-width: 641px) and (max-width: 1007px)";
$tablet-and-up: "screen and (min-width: 641px)";
$pocket: "screen and (max-width: 1007px)";
$lap: "screen and (min-width: 1008px) and (max-width: 1239px)";
$lap-and-up: "screen and (min-width: 1008px)";
$desk: "screen and (min-width: 1240px)";
$widescreen: "screen and (min-width: 1500px)";
.31/2, .32/4, .36/12 {
width: 50%;
}
.31/3, .34/12 {
width: 33.33333%;
}
.32/3, .38/12 {
width: 66.66667%;
}
.31/4, .33/12 {
width: 25%;
}
.33/4, .39/12 {
width: 75%;
}
.31/12 {
width: 8.33333%;
}
.32/12 {
width: 16.66667%;
}
.35/12 {
width: 41.66667%;
}
.37/12 {
width: 58.33333%;
}
.3130/12 {
width: 83.33333%;
}
.3131/12 {
width: 91.66667%;
}
@media #{$phone} {
.hidden-phone {
display: none !important;
}
.31/2--phone, .32/4--phone, .36/12--phone {
width: 50%;
}
.31/3--phone, .34/12--phone {
width: 33.33333%;
}
.32/3--phone, .38/12--phone {
width: 66.66667%;
}
.31/4--phone, .33/12--phone {
width: 25%;
}
.33/4--phone, .39/12--phone {
width: 75%;
}
.31/12--phone {
width: 8.33333%;
}
.32/12--phone {
width: 16.66667%;
}
.35/12--phone {
width: 41.66667%;
}
.37/12--phone {
width: 58.33333%;
}
.3130/12--phone {
width: 83.33333%;
}
.3131/12--phone {
width: 91.66667%;
}
}
@media #{$tablet} {
.hidden-tablet {
display: none !important;
}
.31/2--tablet, .32/4--tablet, .36/12--tablet {
width: 50%;
}
.31/3--tablet, .34/12--tablet {
width: 33.33333%;
}
.32/3--tablet, .38/12--tablet {
width: 66.66667%;
}
.31/4--tablet, .33/12--tablet {
width: 25%;
}
.33/4--tablet, .39/12--tablet {
width: 75%;
}
.31/12--tablet {
width: 8.33333%;
}
.32/12--tablet {
width: 16.66667%;
}
.35/12--tablet {
width: 41.66667%;
}
.37/12--tablet {
width: 58.33333%;
}
.3130/12--tablet {
width: 83.33333%;
}
.3131/12--tablet {
width: 91.66667%;
}
}
@media #{$tablet-and-up} {
.hidden-tablet-and-up {
display: none !important;
}
.31/2--tablet-and-up, .32/4--tablet-and-up, .36/12--tablet-and-up {
width: 50%;
}
.31/3--tablet-and-up, .34/12--tablet-and-up {
width: 33.33333%;
}
.32/3--tablet-and-up, .38/12--tablet-and-up {
width: 66.66667%;
}
.31/4--tablet-and-up, .33/12--tablet-and-up {
width: 25%;
}
.33/4--tablet-and-up, .39/12--tablet-and-up {
width: 75%;
}
.31/12--tablet-and-up {
width: 8.33333%;
}
.32/12--tablet-and-up {
width: 16.66667%;
}
.35/12--tablet-and-up {
width: 41.66667%;
}
.37/12--tablet-and-up {
width: 58.33333%;
}
.3130/12--tablet-and-up {
width: 83.33333%;
}
.3131/12--tablet-and-up {
width: 91.66667%;
}
}
@media #{$pocket} {
.hidden-pocket {
display: none !important;
}
.31/2--pocket, .32/4--pocket, .36/12--pocket {
width: 50%;
}
.31/3--pocket, .34/12--pocket {
width: 33.33333%;
}
.32/3--pocket, .38/12--pocket {
width: 66.66667%;
}
.31/4--pocket, .33/12--pocket {
width: 25%;
}
.33/4--pocket, .39/12--pocket {
width: 75%;
}
.31/12--pocket {
width: 8.33333%;
}
.32/12--pocket {
width: 16.66667%;
}
.35/12--pocket {
width: 41.66667%;
}
.37/12--pocket {
width: 58.33333%;
}
.3130/12--pocket {
width: 83.33333%;
}
.3131/12--pocket {
width: 91.66667%;
}
}
@media #{$lap} {
.hidden-lap {
display: none !important;
}
.31/2--lap, .32/4--lap, .36/12--lap {
width: 50%;
}
.31/3--lap, .34/12--lap {
width: 33.33333%;
}
.32/3--lap, .38/12--lap {
width: 66.66667%;
}
.31/4--lap, .33/12--lap {
width: 25%;
}
.33/4--lap, .39/12--lap {
width: 75%;
}
.31/12--lap {
width: 8.33333%;
}
.32/12--lap {
width: 16.66667%;
}
.35/12--lap {
width: 41.66667%;
}
.37/12--lap {
width: 58.33333%;
}
.3130/12--lap {
width: 83.33333%;
}
.3131/12--lap {
width: 91.66667%;
}
}
@media #{$lap-and-up} {
.hidden-lap-and-up {
display: none !important;
}
.31/2--lap-and-up, .32/4--lap-and-up, .36/12--lap-and-up {
width: 50%;
}
.31/3--lap-and-up, .34/12--lap-and-up {
width: 33.33333%;
}
.32/3--lap-and-up, .38/12--lap-and-up {
width: 66.66667%;
}
.31/4--lap-and-up, .33/12--lap-and-up {
width: 25%;
}
.33/4--lap-and-up, .39/12--lap-and-up {
width: 75%;
}
.31/12--lap-and-up {
width: 8.33333%;
}
.32/12--lap-and-up {
width: 16.66667%;
}
.35/12--lap-and-up {
width: 41.66667%;
}
.37/12--lap-and-up {
width: 58.33333%;
}
.3130/12--lap-and-up {
width: 83.33333%;
}
.3131/12--lap-and-up {
width: 91.66667%;
}
}
@media #{$desk} {
.hidden-desk {
display: none !important;
}
.31/2--desk, .32/4--desk, .36/12--desk {
width: 50%;
}
.31/3--desk, .34/12--desk {
width: 33.33333%;
}
.32/3--desk, .38/12--desk {
width: 66.66667%;
}
.31/4--desk, .33/12--desk {
width: 25%;
}
.33/4--desk, .39/12--desk {
width: 75%;
}
.31/12--desk {
width: 8.33333%;
}
.32/12--desk {
width: 16.66667%;
}
.35/12--desk {
width: 41.66667%;
}
.37/12--desk {
width: 58.33333%;
}
.3130/12--desk {
width: 83.33333%;
}
.3131/12--desk {
width: 91.66667%;
}
}
/* Create each media query */
@media #{$widescreen} {
.hidden-widescreen {
display: none !important;
}
.31/2--widescreen, .32/4--widescreen, .36/12--widescreen {
width: 50%;
}
.31/3--widescreen, .34/12--widescreen {
width: 33.33333%;
}
.32/3--widescreen, .38/12--widescreen {
width: 66.66667%;
}
.31/4--widescreen, .33/12--widescreen {
width: 25%;
}
.33/4--widescreen, .39/12--widescreen {
width: 75%;
}
.31/12--widescreen {
width: 8.33333%;
}
.32/12--widescreen {
width: 16.66667%;
}
.35/12--widescreen {
width: 41.66667%;
}
.37/12--widescreen {
width: 58.33333%;
}
.3130/12--widescreen {
width: 83.33333%;
}
.3131/12--widescreen {
width: 91.66667%;
}
}
Hoping to understand the patterns for “31” “32” “36” “37”, and hopefully a translation the first 12-grid declarations.
2
Answers
from what I can gather with what I found online it’s mostly escaping going on for some odd naming convention that from what I’ve read is probably not a great idea to begin with.
I don’t know if you’ve seen this article but the accepted answer breaks it down pretty well. after the
3
is like the start. then the/
is escaping the slash.What does .container.31 2525 mean in CSS?
CSS identifiers, such as classes and IDs, cannot begin with a digit (0 – 9).
From the spec:
However, the same section also says this:
This means that, while you cannot start an identifier with a digit, you can use backslash escape code (
foo
) that will convert to a digit. Note that this rule applies in CSS, but not HTML, where almost any character combination is an acceptable value.So that’s what you’re seeing in your code. Numerical HTML class values that must be escaped to work in CSS. Here are some examples:
31
is the Unicode Code Point for the digit one.32
is the Unicode Code Point for the digit two.33
is the Unicode Code Point for the digit three.Another purpose of the backslash escape in CSS is to cancel the meaning of special characters.
The forward slash (
/
) has special meaning in CSS. It must, therefore, be escaped for proper use.So let’s now decipher the class names in your code:
The first escape (
31
) is Unicode for “1”.The second escape (
/2
) cancels the special meaning of the forward slash.So the HTML looks like this:
Here are a few more from your list: