在我的頁面上,我有一組div元素,應該用像下圖所示的線條連接。我知道用畫布可以在這些元素之間畫線,但是可以用另一種方式在html/css中畫線嗎?如何將HTML Divs與行連接?
回答
這是一種痛苦到的位置,但你可以使用1px
廣泛的div的線條和位置,並適當地旋轉它們。
<div class="box" id="box1"></div>
<div class="box" id="box2"></div>
<div class="box" id="box3"></div>
<div class="line" id="line1"></div>
<div class="line" id="line2"></div>
.box {
border: 1px solid black;
background-color: #ccc;
width: 100px;
height: 100px;
position: absolute;
}
.line {
width: 1px;
height: 100px;
background-color: black;
position: absolute;
}
#box1 {
top: 0;
left: 0;
}
#box2 {
top: 200px;
left: 0;
}
#box3 {
top: 250px;
left: 200px;
}
#line1 {
top: 100px;
left: 50px;
}
#line2 {
top: 220px;
left: 150px;
height: 115px;
transform: rotate(120deg);
-webkit-transform: rotate(120deg);
-ms-transform: rotate(120deg);
}
與任何數量的庫和/或HTML5技術的絕對可能的。你可以通過使用類似border-bottom屬性的東西在純CSS中一起破解一些東西,但它可能會非常黑客。
如果你認真對待這個問題,你應該看看一個JS庫的畫布繪圖或SVG。例如,像http://www.graphjs.org/或http://jsdraw2dx.jsfiction.com/
創建一個div是與這樣的代碼行:
CSS
div#lineHorizontal {
background-color: #000;
width: //the width of the line or how far it goes sidewards;
height: 2px;
display: inline-block;
margin: 0px;
}
div#block {
background-color: #777;
display: inline-block;
margin: 0px;
}
HTML
<div id="block">
</div>
<div id="lineHorizontal">
</div>
<div id="block">
</div>
這將顯示一個塊與另一個塊的水平線。
在你可以使用移動設備(caniuse.com/transforms2d)
從這個線程檢查我的小提琴:Draw a line connecting two clicked div columns
佈局不同,但基本的想法是創建框之間無形的div並用jQuery添加相應的邊框(答案只有HTML和CSS)
您可以使用https://github.com/musclesoft/jquery-connections。這允許您連接DOM中的塊元素。
您可以使用SVGs僅使用HTML和CSS來連接兩個div:
<div id="div1" style="width: 100px; height: 100px; top:0; left:0; background:#777; position:absolute;"></div>
<div id="div2" style="width: 100px; height: 100px; top:300px; left:300px; background:#333; position:absolute;"></div>
(請使用造型單獨的css文件)
創建SVG線,並使用這條線連接以上的div
<svg width="500" height="500"><line x1="50" y1="50" x2="350" y2="350" stroke="black"/></svg>
其中,
X1,Y1表示第一個div和
X2的中心,Y2表示第二個div的中心
您可以檢查它的外觀在片段下方
<div id="div1" style="width: 100px; height: 100px; top:0; left:0; background:#777; position:absolute;"></div>
<div id="div2" style="width: 100px; height: 100px; top:300px; left:300px; background:#333; position:absolute;"></div>
<svg width="500" height="500"><line x1="50" y1="50" x2="350" y2="350" stroke="black"/></svg>
PS:爲了移動div,你可能需要你的'line'來相應地更新座標。但爲此,您將不得不使用JavaScript/JQuery。訪問此鏈接瞭解如何執行此操作 - > https://stackoverflow.com/a/35493737/5947203 – Ani
I made something like this to my project
function adjustLine(from, to, line){
var fT = from.offsetTop + from.offsetHeight/2;
var tT = to.offsetTop + to.offsetHeight/2;
var fL = from.offsetLeft + from.offsetWidth/2;
var tL = to.offsetLeft + to.offsetWidth/2;
var CA = Math.abs(tT - fT);
var CO = Math.abs(tL - fL);
var H = Math.sqrt(CA*CA + CO*CO);
var ANG = 180/Math.PI * Math.acos(CA/H);
if(tT > fT){
var top = (tT-fT)/2 + fT;
}else{
var top = (fT-tT)/2 + tT;
}
if(tL > fL){
var left = (tL-fL)/2 + fL;
}else{
var left = (fL-tL)/2 + tL;
}
if((fT < tT && fL < tL) || (tT < fT && tL < fL) || (fT > tT && fL > tL) || (tT > fT && tL > fL)){
ANG *= -1;
}
top-= H/2;
line.style["-webkit-transform"] = 'rotate('+ ANG +'deg)';
line.style["-moz-transform"] = 'rotate('+ ANG +'deg)';
line.style["-ms-transform"] = 'rotate('+ ANG +'deg)';
line.style["-o-transform"] = 'rotate('+ ANG +'deg)';
line.style["-transform"] = 'rotate('+ ANG +'deg)';
line.style.top = top+'px';
line.style.left = left+'px';
line.style.height = H + 'px';
}
adjustLine(
document.getElementById('div1'),
document.getElementById('div2'),
document.getElementById('line')
);
#content{
position:relative;
}
.mydiv{
border:1px solid #368ABB;
background-color:#43A4DC;
position:absolute;
}
.mydiv:after{
content:no-close-quote;
position:absolute;
top:50%;
left:50%;
background-color:black;
width:4px;
height:4px;
border-radius:50%;
margin-left:-2px;
margin-top:-2px;
}
#div1{
left:200px;
top:200px;
width:50px;
height:50px;
}
#div2{
left:20px;
top:20px;
width:50px;
height:40px;
}
#line{
position:absolute;
width:1px;
background-color:red;
}
<div id="content">
<div id="div1" class="mydiv"></div>
<div id="div2" class="mydiv"></div>
<div id="line"></div>
</div>
- 1. JavaScript - 將JavaScript與HTML連接
- 2. HTML div divs in divs
- 3. 如何將HTML頁面連接到MySQL
- 4. 如何將UIButton連接到HTML按鈕?
- 5. 將連接與Hadoop連接
- 6. 如何將mysql與java連接起來用於html表單?
- 7. 如何將html頁面與nodejs連接起來
- 8. 將HTML Divs放入PouchDB
- 9. HTML Divs不在兩行
- 10. 與行連接表
- 11. 如何連接JavaScript和Html
- 12. 與MySQL的HTML連接
- 13. 如何將Angular2與MongoDB連接?
- 14. 如何將defaultSharedPreferences與addPreferencesFromResource連接?
- 15. 如何將Spotfire與Hive連接
- 16. 如何將RDS與phpmyadmin連接 - AWS
- 17. 如何將flex與mysql連接?
- 18. Mule:如何將Mule ESB與Hybris連接?
- 19. 如何將Fennec與eclipse連接到Android
- 20. 如何將cpanel與RESTful API連接?
- 21. 如何將FaceBook SDK與cocos2d連接
- 22. 如何將WCF與Android連接?
- 23. 如何將StaticListableBeanFactory與ClassPathXmlApplicationContext連接?
- 24. 如何將Matlab與PHP連接
- 25. 如何將RFID與VB.NET連接?
- 26. 如何將Oracle MCS與EBS連接?
- 27. 如何將boto與fakes3連接3
- 28. 如何將邏輯與對象連接
- 29. 如何將intellij與本地mysql連接?
- 30. 如何將Neo4j與Zest連接?
你問是否有可能,我會說是的,但用css我也就不多說 – Shadow
也許http://jsplumbtoolkit.com/home/jquery.html –
我認爲這種東西應該肯定留給SVG。主要是因爲這可以使用CSS黑客創建,但該網站將變得無法在移動設備 – MarsOne