Tôi hiện đang cố gắng vẽ đường chéo giữa góc dưới cùng bên phải của một div tới góc trên cùng bên phải của một div khác. Nếu có thể, tôi muốn làm điều đó mà không cần jQuery. Điều này có thể không?Làm cách nào để vẽ một đường thẳng giữa hai div?
Trả lời
này sẽ không làm việc với IE8 hoặc dưới vì những hạn chế CSS.
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;
}
- The Distance Formula
- Tìm Center Of Two Điểm
- Tìm góc giữa hai điểm
- CSS transform: Xoay
- HTML Yếu tố bù đắp [Width | Chiều cao | Lên trên | Left] properties
Chỉnh sửa (cho o Thers với cùng một vấn đề):
Nếu bạn cần, ví dụ, tạo ra một dòng từ hai góc mà không phải là phía trên bên phải và divs dưới bên phải, đi đến phần này của mã:
// 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;
nơi bạn thấy + off1.width
và + off1.height
, điều đó có nghĩa là mã đang tính vị trí của phần dưới cùng hoặc bên phải của div. Hãy xóa + off1.width
hoặc + off1.height
để lấy bên trái hoặc đầu div.
EDIT được cập nhật thành hàm getOffset chuẩn hơn. Nếu bạn muốn thực sự hậu môn, bạn có lẽ cũng phải thêm document.documentElement.client [Left/Top] và đi bộ cây offsetParent, nhưng tôi nghĩ rằng getBoundingClientRect() và window.page [X/Y] Offset là đủ cho một ví dụ như thế này
đó là một giải pháp gọn gàng để tránh thư viện hoàn toàn, mặc dù nó quá tệ nhưng nó sẽ không hoạt động trong IE. – lincolnk
Hàm getOffset có vẻ thiếu sót vì nó không hoạt động với một loạt các div được sắp xếp chồng chéo hoàn toàn. Tôi thay thế được bù đắp với các chức năng jQuery offset/chiều cao/chiều rộng và điều này làm việc. return {top: $ (el) .offset(). Trên cùng, bên trái: $ (el) .offset(). Left, width: $ (el) .width(), height: $ (el) .height() }; –
Giải pháp đơn giản và hoàn hảo! – Prasanna
Có sử dụng hình ảnh làm đường viền dưới cùng cho lớp div đó không? Nếu đường chéo của bạn luôn luôn có cùng kích thước/màu sắc, v.v ... đó sẽ là một tùy chọn không phải jQuery bạn có thể sử dụng.
Tôi nghĩ rằng đây là một nhận xét sau đó là câu trả lời, tôi nghĩ bạn đã có đủ danh tiếng đăng nhận xét. –
không bao gồm jquery không giống như loại trừ javascript hoàn toàn. – lincolnk
Có cách để thực hiện điều đó mà không cần jQ.
- Tìm vị trí của divs bằng cách sử dụng bù trừ.
- Tìm độ dốc
- vẽ
1x1px
điểm từ vị trí bắt đầu đến kết thúc bằng cách sử dụng độ dốc trong vòng lặp của bạn.
- 1. Vẽ đường thẳng giữa hai ô con
- 2. Cách vẽ đường thẳng đứng giữa hai nút trong android
- 3. Vẽ một đường thẳng giữa hai điểm trên bản đồ Google bằng jQuery?
- 4. Làm thế nào để vẽ đường thẳng đứng trong iReport?
- 5. Vẽ đường thẳng giữa mô hình và Bộ điều khiển
- 6. Với 2 điểm, làm cách nào để vẽ một đường thẳng ở góc vuông với đường thẳng được tạo bởi hai điểm?
- 7. Vẽ đường thẳng giữa các địa chỉ trên android
- 8. Làm cách nào để vẽ một đường thẳng đứng trong trang web?
- 9. Làm thế nào để vẽ một đường thẳng đứng, nằm rải rác xuống giữa trang bằng cách sử dụng CSS?
- 10. ggplot2 - khu vực bóng râm giữa hai đường thẳng đứng
- 11. Làm thế nào để vẽ một đường thẳng giữa hai điều khiển WPF bằng cách sử dụng các thuộc tính phụ thuộc?
- 12. Cách vẽ đường giữa hai địa chỉ trên Android
- 13. Làm thế nào để vẽ đường thẳng không xếp hàng phân khúc OpenCV 2.4.2
- 14. HowTo: Vẽ một đường thẳng với một mũi tên?
- 15. Làm cách nào để vẽ các đường thẳng đứng trên biểu đồ Highcharts?
- 16. Giải thích về cách vẽ đường thẳng trong Raphael.js
- 17. Matplotlib vẽ một đường thẳng liên tục thay đổi màu
- 18. Làm cách nào để vẽ một đường thẳng đứng trong một Hoạt động khi nhấn một nút?
- 19. geoserver - Làm thế nào để vẽ một đường đo đạc đại diện cho vòng tròn lớn giữa hai điểm
- 20. Cách tính góc giữa một đường thẳng và trục ngang?
- 21. Làm thế nào để vẽ một đường thẳng/liên kết giữa hai điểm trên bản đồ D3 dựa trên vĩ độ/kinh độ?
- 22. Làm cách nào để tạo khoảng cách giữa hai nút trong cùng một div?
- 23. Làm cách nào để vẽ đường kẻ trong VIM?
- 24. khoảng cách thẳng đứng css giữa các div
- 25. Làm thế nào tôi có thể đặt một đường thẳng đứng xuống trung tâm của một div?
- 26. Làm thế nào để vẽ một đường trên một hình ảnh trong MATLAB?
- 27. Có cách nào để vẽ đường thẳng với độ chính xác subpixel trong Swing không?
- 28. Làm thế nào để vẽ một đường giữa có thể kéo và có thể phân tách?
- 29. Đường thẳng đứng sử dụng XML có thể vẽ
- 30. làm cách nào để vẽ một đường trên biểu mẫu?
Trình duyệt nào bạn muốn hỗ trợ? Các div nằm ở vị trí nào liên quan đến nhau? – gilly3
bạn có gặp phải sự cố cụ thể nào không? nếu không, tôi sẽ giới thiệu bạn tới http://stackoverflow.com/questions/6278152/drawing-a-line-between-two-draggable-divs có vẻ như cùng một câu hỏi với việc bổ sung các yếu tố có thể kéo, mà bạn có thể bỏ qua. – lincolnk
Sử dụng SVG để vẽ đường ... Dễ dàng hơn nhiều ... http://stackoverflow.com/a/35493651/5947203 – Ani