レスポンシブなボックスに斜め線を引きたいのですが、cssでどうやって表現したらいんですかね。
レスポンシブなボックスに斜め線を引きたいのなら、javascriptで画面ロード時とリロード時に、斜め線の長さと角度を計算して、cssで割り当てれば実装できるんじゃないかな?
なるほど・・つまり、ボックスの左上を原点にして、ボックスの斜めの長さと角度を計算して、cssで割り当てればいいんですね。
そうですね。ではサンプルを元に説明していきましょう
<div class="box"><div class="line"></div></div>
.box{
width:100%;
height:300px;//仮にheight:300pxとします。
background:#eee;
position:relative;
}
.line{
position:absolute;
top:0;
left:0;
height:1px;
background:#000;
transform-origin:left top;
}
$(window).on('load resize',function(){
generate_line($('.box'),$('.line'));
});
function generate_line(obj,target){
w=obj.outerWidth();
h=obj.outerHeight();
w_h=Math.sqrt(w*w + h*h);
m_atan=Math.atan2(h,w);
kakudo=(m_atan*360/(2*Math.PI));
target.css('width',w_h);
target.css('transform','rotateZ('+kakudo+'deg)');
}
このようにボックスに斜線を引くことができます。
弊社のようにロード画面があるサイトでは、width:100%を指定しているとロード時に横幅がうまく取得できない場合があります。
その場合は、setTimeoutなどで画面ロード後に2秒ほど遅延処理をかけてから実装することで、うまく横幅が取得できるようになります。
この時は、load処理とresize処理は2つに分けたほうがいいですね。