色々と調べてみるのですが、単位をまたいで?の計算方法についての明確なルールが見つからず、よくわからないままなので、お詳しい方アドバイスを頂けますと幸いです。
CSS上で計算を行う際に、
cal(計算式); を使って指定を行うと思うのですが、この計算式の中で単位を付ける付けないの仕組みが良くわからず悩んでおります。
例えば、
width:calc(50px * 20px - 5px);
の様に単純な計算であれば、そのまま単位も含めた計算を書いて結果は、 95px の幅を算出できると思います。また、以下の様に、
width:calc(100% - 50px);
などの場合にも、相対的に閲覧しているデバイスからの100%から50pxが引かれた幅が指定され、こちらも問題無いと思います。
ただ、私の中で問題となっているのは、例えば相対的な位置を計算したく、pxの指定から%を取得する際の指定方法が分かりません。
簡単ですが、以下の指定があった場合、この絶対指定の位置を相対指定に変える計算をCSS上で行う場合です。
※今回#container 側の高さの相対化は無視して頂いて大丈夫です。
#container {
position:relative;
height:5000px;
}
#point {
position:absolute;
top:1500px;
left:0;
}
<div id="container">
<div id="point">この位置を相対的に指定したい</div>
</div>
計算としては、
1500px/5000px*100 = 30% が相対指定の際の設定になるかと思うのですが、これをCSS上で以下の様に指定しても、計算が反映されません。
#point {
position:absolute;
top:calc(1500px / 5000px * 100); ←この指定
top:calc(1500 / 5000 * 100); ←または、この指定
top:calc(1500px / 5000px * 100%); ←または、この指定
left:0;
}
しかしながら、これらの指定を以下の内容にすると正常に計算が反映されます。
top:calc(1500 / 5000 * 100%);
なぜ、最初のpx分部の単位を削除することで正常に計算が行われるのでしょうか?
逆にpxという指定がない事で、単位に迷い、この方が正常に計算できなくなるような気がするのですが…。
この辺りの単位の付け方や、計算式のルールなどお詳しいからいらっしゃいましたら是非ともアドバイスをお願いいたします。
宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは
詳しいわけではありませんが・・
>1500px / 5000px
は、比率を計算したいはずなので、結果は無単位の値になるはずですから、「1500 / 5000」が妥当なのではないでしょうか?
一方で、calcの計算での、乗算、除算には単位の有無に関して制限があります。
・乗算は一方の項のみ単位付き
・除算は分子のみ単位付き
が許されています。
https://developer.mozilla.org/ja/docs/Web/CSS/calc
上記に合致するような計算式にしようとすると、ご提示の「正常に計算できる」例になると思います。
意味合い的にはおかしいかもですが、
1500% / 5000 * 100
としても、正しく(?)解釈されます。
有難うございます。
>>>1500px / 5000px
は、比率を計算したいはずなので、結果は無単位の値になるはずですから、「1500 / 5000」が妥当なのではないでしょうか?
なるほどです、元々単位がpxとしてついていたので、pxで計算を進めなければと思っておりました。確かに比率の計算になるので、単位云々は関係がないかもです…。
>>一方で、calcの計算での、乗算、除算には単位の有無に関して制限があります。
リンク有難うございます、こちら再度確認してみたいと思います。
やはりきっちりとルールがあるのですね、見つけれずにおりました…。
>>意味合い的にはおかしいかもですが、
1500% / 5000 * 100
確かに、分子のみという事なので、こちらでも正常に計算ができました。
まだ府に落とし切れていないのですが、仕様を確認しながら色々と試してみたいと思います。
大変感謝申し上げます、有難うございました!
No.1
- 回答日時:
文法規約上出来ません。
「除算/の右側は <number>(1,2,3等の値) でなければなりません。」
と言う規約ですから仕方ありません。
なので、calc(1500 / 5000 * 100%);は有効です。
calc(1500px / 5000px * 100); は無効です。
有難うございます!!!
>>「除算/の右側は <number>(1,2,3等の値) でなければなりません。」
なるほどです、初めて知りました。
再度の質問で大変恐縮ですが、この場合の除算の右側というのは、5000px が対象なのでしょうか?
もしそうだとすると、左側の1500pxはpxついていてもいいのでしょうか?
いずれにしましても、単位が無いのに計算ができるとう意味が良くわからないのですが…。
もしこれらの仕様が確認できるページが御座いましたらお伺いしたく思います。
大変参考になりました。㎜
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlの文字が縦書きになる
-
form input テキストを上下中央...
-
メディアクエリで文字サイズを...
-
CSSがなぜかfont-sizeだけ効か...
-
余分な縦スクロールバーが出て...
-
widthやheightの数値に単位(px...
-
画像イメージの上下左右、欲し...
-
Firefoxで一番下のstickyが上に...
-
【CSS】ヘッダーの高さが不明の...
-
IEとFireFoxでの指定位置のズレ...
-
初心者html・CSS ウィンドウを...
-
入力フォームとセレクトボック...
-
marginとナビゲーションの位置...
-
CSSで背景画像を一番下にもって...
-
HTMLで一部だけスクロールする...
-
CSSと<dl><dd>で間隔をあけて1...
-
CSSで指定した背景画像にリンク...
-
モーダルダイアログでのボタン...
-
<div>と<div>の間の10px程の...
-
Flexslider2のカーセルスライダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlの文字が縦書きになる
-
widthやheightの数値に単位(px...
-
画像イメージの上下左右、欲し...
-
form input テキストを上下中央...
-
余分な縦スクロールバーが出て...
-
<div>と<div>の間の10px程の...
-
【CSS】ヘッダーの高さが不明の...
-
css初心者 フレックスボックス...
-
CSSがなぜかfont-sizeだけ効か...
-
footer を横幅いっぱいに広げる...
-
CSS、width100%でもできる余白
-
CSS:animation開始位置の設定
-
divで囲まれたpaddingの指定を...
-
div内に外部のurlを表示させたい
-
スクロールボックスを中央に配...
-
table周辺の隙間をなくしたい。
-
CSSでborderの指定を解除する記...
-
W3Cのソースコードの検証サービ...
-
CSS(0の単位)について
-
CSSで3分割した背景画像を配置...
おすすめ情報