私は現在、あるdivの右下隅と別のdivの右上隅との間に対角線を描画しようとしています。可能であれば、私はjQueryなしでやりたいと思います。これは可能ですか?2つのdivの間に線を描くにはどうすればよいですか?
答えて
これは、CSSの制限の下にIE8かでは動作しません。
function getOffset(el) {
var rect = el.getBoundingClientRect();
return {
left: rect.left + window.pageXOffset,
top: rect.top + window.pageYOffset,
width: rect.width || el.offsetWidth,
height: rect.height || el.offsetHeight
};
}
function connect(div1, div2, color, thickness) { // draw a line connecting elements
var off1 = getOffset(div1);
var off2 = getOffset(div2);
// bottom right
var x1 = off1.left + off1.width;
var y1 = off1.top + off1.height;
// top right
var x2 = off2.left + off2.width;
var y2 = off2.top;
// distance
var length = Math.sqrt(((x2-x1) * (x2-x1)) + ((y2-y1) * (y2-y1)));
// center
var cx = ((x1 + x2)/2) - (length/2);
var cy = ((y1 + y2)/2) - (thickness/2);
// angle
var angle = Math.atan2((y1-y2),(x1-x2))*(180/Math.PI);
// make hr
var htmlLine = "<div style='padding:0px; margin:0px; height:" + thickness + "px; background-color:" + color + "; line-height:1px; position:absolute; left:" + cx + "px; top:" + cy + "px; width:" + length + "px; -moz-transform:rotate(" + angle + "deg); -webkit-transform:rotate(" + angle + "deg); -o-transform:rotate(" + angle + "deg); -ms-transform:rotate(" + angle + "deg); transform:rotate(" + angle + "deg);' />";
//
// alert(htmlLine);
document.body.innerHTML += htmlLine;
}
- 距離フォーミュラ
- 変換CSS
- 2点間の角度を見つける2点
- の中心を見つける:回して
- HTML要素は、[幅をオフセット|高|トップ|左]特性
編集(o同じ問題を持つその他):
あなたは、たとえば、コードのこのセクションに移動し、右上と右下のdivはない2つのコーナーからのラインを作成する必要がある場合:
// bottom right
var x1 = off1.left + off1.width;
var y1 = off1.top + off1.height;
// top right
var x2 = off2.left + off2.width;
var y2 = off2.top;
ここでは+ off1.width
と+ off1.height
が表示されます。つまり、コードはdivの右または下の位置を計算しています。 + off1.width
または+ off1.height
を削除して、divの左または上部を取得します。
EDITが、より標準的なgetOffset関数に更新されました。本当に肛門を取得したいのであれば、おそらくdocument.documentElement.client [Left/Top]を追加してoffsetParentツリーを歩かなければならないでしょうが、getBoundingClientRect()とwindow.page [X/Y] Offsetで十分ですこのような例です。
これは、完全にライブラリを避けるためのすっきりした解決策ですが、IEではうまくいかないことが残念です。 – lincolnk
getOffset関数は、重複した絶対配置されたdivの束では機能しないため、欠陥があるようです。 get offsetをjQuery offset/height/width関数に置き換えました。これがうまくいきました。return(top:$(el).offset()。上、左:$(el).offset()。left、width:$(el).width()、height:$(el).height() }; –
シンプルで完璧なソリューション! – Prasanna
問題のあるdivクラスの下の境界線として画像を使用していますか?あなたの対角線が常に同じサイズ/色などでなければならない場合、それは非jQueryオプションになります。
これはコメントの答えであると思います。私はあなたがすでに十分な評判を持っていると思いますコメントを投稿してください。 –
jqueryを除くと、javascriptを完全に除外するのと同じではありません。 – lincolnk
jQなしで行う方法があります。
- オフセットを使用してdivの位置を探します。
- ループの勾配を使用して、勾配を見つけます。
1x1px
開始点から終了点を描画します。
- 1. AndroidでGoogleマップの2点間に線を描くにはどうすればよいですか?
- 2. 2つのdivの間に線を描く(複数の接続)
- 3. 2つのdiv間に水平/垂直線を接続するにはどうすればよいですか?
- 4. 主要なグリッド線の間に小さなグリッド線を描くにはどうすればよいですか?
- 5. 2つ以上のビューを結ぶ線を描くにはどうすればよいですか?
- 6. 2つのオブジェクト間に「リスト」の関係を描くにはどうすればよいですか?
- 7. 2つのdivの間にdivを挿入するにはどうすればよいですか?
- 8. シヌソイド線グラフを描くにはどうすればよいですか?
- 9. JavaFXの2つの点の間に矢印を描くにはどうすればいいですか?
- 10. Google棒グラフの棒グラフ間に平均線を描くにはどうすればよいですか?
- 11. matplotlibに破線/点線の端でマーカーを描くにはどうすればよいですか?
- 12. iReportに縦線を描くにはどうすればいいですか?
- 13. サブプロットに対角線を描くにはどうすればいいですか?
- 14. このグラフに線形回帰直線を描くにはどうすればよいですか?
- 15. ggplot2で2つの線の間に密度マップをプロットするにはどうすればよいですか?
- 16. openLayersで水平線を描くにはどうすればいいですか?
- 17. 2つのヘッダーの間の線で情報を抽出するにはどうすればよいですか?
- 18. ブートストラップの2つのdivの間にパネルを追加するにはどうすればよいですか?
- 19. ユーザータッチポイント間の滑らかな曲線を描くにはどうすればいいですか?
- 20. iPhoneに線を描画するにはどうすればよいですか?
- 21. 2つのdivの間にフッターを配置するにはどうすればよいですか?
- 22. 2つのdivの間にスペースを追加するにはどうすればよいですか?
- 23. divをdivの下に置くにはどうすればよいですか?
- 24. 画像間に縦線を描くにはどうすればいいですか
- 25. -InfからInfに行く線aを描くにはどうすればよいですか?
- 26. 折れ線グラフのハイライトポイントに円を描くにはどうすればよいですか?
- 27. マウスを動かすときに地形に線を描くにはどうすればよいですか?
- 28. ハイチャートで同じカテゴリ(x軸)の2つの異なるエリアチャート間に線を描くにはどうすればいいですか?
- 29. iPhoneで指のスライド/タッチモーションで滑らかな線を描くにはどうすればよいですか?
- 30. javaFxに複数の点を含む線を描くにはどうすればよいですか?
どのブラウザをサポートしますか?これらのdivはどこに置かれていますか? – gilly3
問題が発生している特定の問題はありますか?もしそうでなければ、ドラッグ可能な要素を追加して同じ質問のように思えるhttp://stackoverflow.com/questions/6278152/drawing-a-line-between-two-draggable-divsを参照します。無視する。 – lincolnk
SVGを使用して線を描画する...もっと簡単です... http://stackoverflow.com/a/35493651/5947203 – Ani