2017-12-11 12 views
0

enter image description here大画面の場合は画面の62%、電話のような小型の場合は96%のサイズを変更するscss変数を作成したいと考えています。私はメディアのクエリを使用せずにこれを達成したいと思います。これはアイデアですdivの可変幅mixinは、小型デバイスでは96%、大画面では62%の幅がありますか?

$width-small : 100% - 4%; // For phones and small devices 

$width-large : 100% - 32%; // For large devices, laptops and Desktops 

@mixin variable-width($width-small, $width-large) { 

@if $width-small = '> 768px' { 
    width: calc(100% - 4%); 
} 
@else { 
    width: calc(100% - 38%); 
} 

//、私はあなたが縮小し、拡大し、それを、そしてないとして、私は基本的に画面サイズのようにゆっくりと調整したい

その正確ではないが、そのスタートを知っていますメディアクエリで見られるようにジャンプします。 私はこの機能をscssで行うことをお勧めします。

明瞭にするために画像のリンクをご覧ください。ありがとうございました。

+0

を、それをチェックアウトあなたはCSS計算値()関数で行く、しようとしたい場合は、少し難しいですが、。 – reidark

+0

ええ、私は通常、高さのためにcalc関数を実行しますが、可変幅のコンテナに対してはどのように計算するのか知っていますか?したがって、電話のサイズが540ピクセル以下の場合は、画面の幅に合わせて、両面に2%の余白を付けて合計幅96%にします。最大のサイズの場合、私はそれが62%に及ぶことを願っており、両サイドにはおそらく自動マージンがあります。これは可能ですか? –

+0

scssはcssにコンパイルされ、ブラウザはcssを使用するので、mediaqueriesを使用しないでこれをcssに書き込む方法はありません。彼らはcssのif else構造のように振る舞います。 –

答えて

0

私はWeb上で実行可能なものを探していて、Ana Tudorの答えをcodepenで見つけました。いいえメディアだけでは、純粋でエレガントで美しいscss。アナさん、ありがとうございます。

@mixin proportional-box($a: 1, $b: $a) { 
position: absolute; 
top: 0; left: calc(50vw - #{$a/$b/2*100vh}); 
width: $a/$b*100vh; height: 100vh; 

@media (max-aspect-ratio: #{$a}/#{$b}) { 
top: calc(50vh - #{$b/$a/2*100vw}); left: 0; 
width: 100vw; height: $b/$a*100vw; 
} 
} 

html { 
background: #f9f9f9; 
} 

body { 
margin: 0; 
} 

.slide { 
@include proportional-box(4, 3); 
} 

メディアクエリなしで応答を行い、アクションにhttps://codepen.io/anon/pen/jYqzPX

関連する問題