質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2344閲覧

SCSSでmax(値, calc(値 + 値))と書くとコンパイルエラーになる

tuxeha

総合スコア1

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/05/16 08:35

前提・実現したいこと

HTML、CSS等を使ってホームページ制作をしています。
(Visual Studio Codeを使用)

開発途中で、スタイルシートのコーディングをスマートにしたいと思い、SCSSを導入しました。
(VScode内の拡張機能: Live Sass Compilerを使用)

しかし、元々存在していたCSSをSCSSに置換したところ、コンパイルエラーが発生しました。

元のレスポンシブデザインを生かしたままSCSSを利用したいです。

発生している問題・エラーメッセージ

-------------------- Watching... -------------------- Change Detected... sample.scss -------------------- Compilation Error Error: "calc(2rem + ((1vw - 3.2px) * 2.375))" is not a number for `max' (後略)

該当のソースコード

(前略) #menu-trigger { position: relative; overflow: hidden; /* 32px @ 320px increasing to 70px @ 1920px */ width: min(max(32px, calc(2rem + ((1vw - 3.2px) * 2.375))), 70px); /* 28px @ 320px increasing to 62px @ 1920px */ height: min(max(28px, calc(1.75rem + ((1vw - 3.2px) * 2.125))), 62px); top: 25%; bottom: 0; margin-right: 0.3em; } (後略)

試したこと

width: min(max(32px, calc(2rem + ((1vw - 3.2px) * 2.375))), 70px);

レスポンシブデザインに対応すべく作成した、こちらの構文に対してエラーが発生していると考えました。
max関数からみて calc(2rem + ((1vw - 3.2px) * 2.375) が値でないからコンパイルが出来ないとエラー文は伝えていますが、この構文でCSSでは問題なく利用していました。

min(), max(), calc()に対して、SCSSでの別の記法が無いか、インターネット上の情報もあたりましたが見つけることが出来ず。
CSSからのSCSSへは互換性があるとネットにはあるため、非常に困っています。

補足情報(FW/ツールのバージョンなど)

VSCode のバージョンは1.45.1
Live Sass Compiler のバージョンは3.0.0

宜しくおねがいします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この構文でCSSでは問題なく利用していました。

残念ながら、calc()の中にremvwを使うと、その値は表示時にしか決まりません。

一方で、max()min()コンパイル時に処理してしまうものなので、比較する値としてはコンパイル時に確定するものしか入れられません。

結果、max(calc( 1vw + 2px ), 300px)のようなものは処理不能となります。

メディアクエリやmax-widthmin-widthを使うなどして、計算可能な形に書き換えるほかありません。

投稿2020/05/16 09:25

maisumakun

総合スコア145201

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuxeha

2020/05/16 13:48

わかりやすい回答ありがとうございました。 この部分に関しては諦めて、可能な方法でアプローチしていこうと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問