2017-02-27 13 views
2

を平行にカットバック私はdiv要素を回転させるために、この機能を使用します。回転divの傾斜/

function connect(x1,y1,x2,y2,color,thickness) { 
    var length = Math.sqrt(((x2-x1) * (x2-x1)) + ((y2-y1) * (y2-y1)));// distance 
    var cx = ((x1 + x2)/2) - (length/2);// center 
    var cy = ((y1 + y2)/2) - (thickness/2);// center 
    var angle = Math.atan2((y1-y2),(x1-x2))*(180/Math.PI);// angle 
    var htmlLine = '<div style="height:'+thickness+'px; background-color:'+color+';line-height:1px;position:absolute;left:'+cx+'px;top:'+cy+'px;width:'+length+'px;transform:rotate('+angle+'deg);"></div>'; 
    document.body.innerHTML += htmlLine; 
} 

どのようにカットオフすることができますエッジをそのDIVから、左右が平行に留まるように画面に?

は私が

ax == 0 または transform: skewY(ay)

enter image description here

答えて

3

使用transform: skew(ax, ay)ためつもりかを理解するためには画像を見てみましょう:

div { 
 
    width: 200px; 
 
    height: 20px; 
 
    background: green; 
 
    transform: skew(0, 20deg); 
 
    transform-origin: top left; 
 
}
<div></div>

あなたが同じあなた connect機能を維持する場合は、あなたの場合は

、ちょうどskewYとトランスフォームの呼び出しでrotateを置き換える:

function connect(x1,y1,x2,y2,color,thickness) { 
 
    var length = Math.sqrt(((x2-x1) * (x2-x1)) + ((y2-y1) * (y2-y1)));// distance 
 
    var cx = ((x1 + x2)/2) - (length/2);// center 
 
    var cy = ((y1 + y2)/2) - (thickness/2);// center 
 
    var angle = Math.atan2((y1-y2),(x1-x2))*(180/Math.PI);// angle 
 
    var htmlLine = '<div style="height:'+thickness+'px; background-color:'+color+';line-height:1px;position:absolute;left:'+cx+'px;top:'+cy+'px;width:'+length+'px;transform:skewY('+angle+'deg);"></div>'; 
 
    document.body.innerHTML += htmlLine; 
 
} 
 

 
connect(0, 0, 300, 40, 'green', 10);

+2

は '変換:skewY(20deg);'ことができます使用することもできます。 –

+0

偉大な、それだ!私は斜めのものを試していましたが、できませんでした。ありがとうございました! – HenryP

+0

擬似要素を使用してこれらの部分を隠すのではなく、簡単な方法があることはわかっていました。 – pol

関連する問題