私は2つの三角形を作成しています(border- hackを使用)。これはページを垂直に塗りつぶします(したがって、両方の三角形はページの高さの50%になります)。私はうまくやった。
ただし、この計算を実行しようとすると、window.resize
非常に遅くなります。毎回計算される変数がいくつかあることは承知していますが、これを高速化する方法を誰かが考えられるかどうか疑問に思っています...
私のjsfiddleを見て、ブラウザウィンドウのサイズを変更してください。-警告jsFiddleはしばらくするとクラッシュする可能性があります..それはそれがどれほど悪いかです。
現在、三角形はボディの幅から幅を引いた.main
ものを2で割ったものであるため、三角形のエッジは.main
divの側面にちょうど接触します。
また、ウィンドウの高さ($(window).outerHeight();
)を計算し、それを2で割って、各三角形がウィンドウの高さの50%になるようにします。
次に、この高さを使用top
して2番目の三角形に値を適用し、ページの後半に配置します。
コードのjsfiddleを確認することをお勧めしますが、ここにも配置します。
HTML
<div class="triangleWrap">
<div class="borderTopLeft"></div>
<div class="borderBottomLeft"></div>
</div>
<div class="main"></div>
JS
$('document').ready(function triangleCalc() {
var bodyWidth = $('body').width();
var bodyHeight = $(window).outerHeight();
var mainWidth = $('.main').width();
var bodyMinusMain = (bodyWidth - mainWidth) / 2;
var bodyHeightCalc = bodyHeight / 2;
$('.borderTopLeft, .borderBottomLeft').css('border-right', bodyMinusMain + 'px solid black');
$('.borderTopLeft').css('border-bottom', bodyHeightCalc + 'px solid transparent');
$('.borderBottomLeft').css({
'border-top': bodyHeightCalc + 'px solid transparent',
'top': bodyHeightCalc + 'px'
});
$(window).resize(triangleCalc);
});
CSS
.borderTopLeft, .borderBottomLeft{
width: 0;
height: 0;
position: absolute;
}
.borderTopLeft{border-top: 0 solid transparent;}
.borderBottomLeft{border-bottom: 0 solid transparent;}
.borderTopLeft{
border-bottom: 500px solid transparent;
border-right:438px solid #2C2C2C;
}
.borderBottomLeft{
border-top: 500px solid transparent;
border-right: 600px solid #2C2C2C;
top: 500px;
}
.main{width:500px;height:400px;background:orange;margin:auto;}