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

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

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

Q&A

解決済

3回答

7238閲覧

CSS calcでのwidth指定エラー

yamatonchu

総合スコア13

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

CSS

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

0グッド

0クリップ

投稿2017/02/28 11:36

横幅の指定されたエリアの中に画像を配置している際に、
その画像の表示サイズ指定をする場合、下記のように記載してエラーになる理由って、なんでしょうか?

img{width:calc((100%-15px)/4)px;}
もしくは
img{width:calc((100%-15px)/4);}

当該ケースで「invalid property value」エラーが起きてしまい、理由がわからず困っています…。

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

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

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

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

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

think49

2017/02/28 12:35

「何のツールで検証したらエラーになるのか」を明らかにされるとより具体的な回答が貰えると思います。
yamatonchu

2017/02/28 17:29

Chromeのデベロッパーコンソールで確認するとエラー警告が表示されます
think49

2017/03/01 03:39

当該エラーはコンソールでは確認できませんでしたが、[Styles] タブで確認できました。詳しくは回答に追記しました。
guest

回答3

0

  1. 正と負、加算と減算が区別できるように**+, -演算子の前後にはスペースが必要**です。
  2. calc関数で算出された値に単位を付与する必要はありません。

CSS

1img { 2 width: calc((100% - 15px) / 4); 3}

投稿2017/02/28 12:12

s8_chu

総合スコア14731

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

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

0

ベストアンサー

calc() の仕様

さらに、空白文字は+と-演算子の両側に要求される。(*および/演算子は周りの空白なしで使用することができる。)

仕様では上記のようにあるので - の両端に空白文字がなければ文法エラーとなるのが正しいようです(/ の両端に空白は不要です)。

W3C CSS 検証サービス

ただし、先述の文法規則を守ったとしても「W3C CSS 検証サービス」では文法解析エラーが発生します。

CSS

1span { 2 width: calc(25% - 6px); 3}

仕様にあるCSSをコピー&ペーストして [検証する] をクリックしても同様のエラーが発生するので「W3C CSS 検証サービス」が calc() に対応してない可能性が高いと考えます。

CSS

1section { 2 float: left; 3 margin: 1em; border: solid 1px; 4 width: calc(100%/3 - 2*1em - 2*1px); 5}

Chrome Developer Tools

質問の追記より引用。

Chromeのデベロッパーコンソールで確認するとエラー警告が表示されます

設定の問題かもしれませんが、私の環境では Google Chrome v56.0.2924.87 においてコンソールに警告が表示されませんでした。
ただし、[Elements] -> [Styles] タブにおいては下記エラーを確認できました。

CSS

1img{width:calc((100%-15px)/4)px;} /* invalid property value */ 2img{width:calc((100%-15px)/4);} /* エラーは発生せず */

もし、コンソールに上記エラーを出力できるのだとすれば、同様の結果になると思われます。

(注意)
Google Chrome のコンソールは[更新] ボタンを押してページを更新しても更新前のコンソールログがそのまま残る仕様です。
エラーが出力された状態でCSSを修正し、ページを更新した場合、修正前のエラーログが変わらずに表示され、修正後のエラーが解消された状態になります。
つまり、修正前のエラーが一つだけ表示されるはずです。
この仕様は混乱を招くのでコンソールを一度クリアしてからページを更新すると良いと思います。

Re: yamatonchu さん

投稿2017/02/28 12:33

編集2017/03/01 03:38
think49

総合スコア18164

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

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

0

CSS

1/* img{width:calc((100%-15px)/4);} 2 ↓ ↓ 空白が無いからでは? */ 3 img{width:calc((100% - 15px) / 4);}

投稿2017/02/28 11:50

編集2017/02/28 11:51
kei344

総合スコア69407

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問