Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Safari 14 - min(), max(), clamp() not working with vw and px values

I have a container where I want to set its font-size so it reflects on its children.

I'm using the following to support font sizes for different screen sizes:

.hero {
    font-size: clamp(4px, 1vw, 10px);
}

The CSS above works fine for Google Chrome, but when I run my page on Safari (Safari 14 to be exact), the font size does not resize as I change the window's size. If I resize the window and then refresh the page, the font does resize, but it stays at that initial font size.

I have also tried running the min() / max() version of clamp() as so ...

.hero {
    font-size: max(4px, min(1vw, 10px));
}

But I still get the exact same issue. The font size is not resizing on Safari. I have tried replacing the px with reasonable pt values, but the issue still remains. I'm not sure if this issue was on Safari 13, but I recently updated to Safari 14.

Is this a known issue? Am I missing something? How can I solve this problem without having to use any JavaScript?

like image 239
RivasCVA Avatar asked Dec 17 '22 12:12

RivasCVA


1 Answers

Apparently, Safari calculates clamp() incorrectly... Setting the min-height property does the job. I have changed the values of the original example, because it was so small that you could not see any effect:

.hero {
  min-height: 0vw;
  font-size: clamp(16px, 10vw, 32px);
}

and then:

<h1 class="hero">Hero Text</h1>

Here is a JSFiddle

like image 109
Flo Ragossnig Avatar answered Jan 14 '23 06:01

Flo Ragossnig