viewportが「width=device-width」のとき、デバイスの横幅のサイズはユーザの端末次第となります。
その設定の場合、横幅をデザインで扱いたい時vwという単位が便利です。
以下CSSが100%と100vwのサンプルです。ボタンを押してみてください。
width:100%;
width:100%;
width:100vw;
width:100vw;
100vwと書くとデバイスの横幅いっぱいを表します。
つまり、半分なら50vwと書きます。
CSSのサンプルはこちら
.demo_w_percent{ width:100%; background-color:#00F; position: relative; height: 40px; line-height: 40px; text-align: center; left:0px; display:none; color: #FFF; } .demo_vw{ width:100vw; background-color:#F00; position: relative; height: 40px; line-height: 40px; text-align: center; left:0px; display:none; color: #FFF; }
それぞれのクラスを要素に設定してます。
しかし、CSSで目一杯の横幅を使うと親の要素の余白を継承するので、画面をはみ出してしまう場合があります。
そのときの回避のjQueryのサンプルも用意しました。
$(document).ready(function(){ $('.demo_btn').on('click',function(){ v = $(this).attr('value'); if(v === 'demo_vw'){ $('.'+v).show(0, function(){ pos_left = $('.'+v).offset().left; if(pos_left != 0){ l = 0 - pos_left +'px'; $('.'+v).css('left',l); } } ); }else{ $('.'+v).show(); } }); });
つまり、表示寸前に要素のXY座標を拾って、要素の横の位置をマイナスしています。
もっと良い方法があれば、随時更新いたします。