I have this good family tree but the problem is that the page is funcy like everything is on top of each other how can I fix it (it's better to try it in a coding app because CSS doesn't work here (if it does I don't know))
<meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>family tree</title> <link rel="stylesheet" href="style.css"> <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css"
rel="stylesheet" id="bootstrap-css">
grand mother
- great great great grand father
- great great grand father
- great grand father
- grand mother
- grand father
- mother
- father
- child
- child
- child
- child
- child
- child
- father
- mother
- child
- child
- child
- child
- child
- father
- mother
- child
- child
- grand father
</li> </ul> </li> </ul> </li> </ul> </li> <li> <a href="#">father</a> <ul> <li><a href="#">Grand Child</a></li> <li> <a href="#">Grand Child</a> <ul> <li> <a href="#">Great Grand Child</a> </li> <li> <a href="#">Great Grand Child</a> </li> <li> <a href="#">Great Grand Child</a> </li> </ul> </li> <li><a href="#">Grand Child</a></li> </ul> </li> </ul> </li> </ul> </div> </div> </div> </body> </html>
* {
margin: 0;
padding: 0;
}
.tree ul {
padding-top: 20px;
position: relative;
transition: all 0.5s;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
}
.tree li {
float: left;
text-align: center;
list-style-type: none;
position: relative;
padding: 20px 5px 0 5px;
transition: all 0.5s;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
}
.tree li::before,
.tree li::after {
content: '';
position: absolute;
top: 0;
right: 50%;
border-top: 1px solid #ccc;
width: 50%;
height:
20px;
}
.tree li::after {
right: auto;
left: 50%;
border-left: 1px solid #ccc;
}
.tree li:only-child::after,
.tree li:only-child::before {
display:
none;
}
.tree li:only-child {
padding-top: 0;
}
.tree li:first-child::before,
.tree li:last-child::after {
border: 0 none;
}
.tree li:last-child::before {
border-right: 1px solid #ccc;
border-radius: 0 5px 0 0;
-webkit-border-radius: 0 5px 0 0;
-moz-border-radius: 0 5px 0 0;
}
.tree li:first-child::after {
border-radius: 5px 0 0 0;
-webkit-border-radius: 5px 0 0 0;
-moz-border-radius: 5px 0 0 0;
}
.tree ul ul::before {
content: '';
position: absolute;
top: 0;
left:
50%;
border-left: 1px solid #ccc;
width: 0;
height: 20px;
}
.tree li a {
border: 1px solid #ccc;
padding: 5px 10px;
text-decoration: none;
color: #666;
font-family: arial, verdana,
tahoma;
font-size: 11px;
display: inline-block;
border-radius:
5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
transition: all 0.5s;
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
}
.tree li a:hover,
.tree li a:hover+ul li a {
background: #c8e4f8;
color: #000;
border: 1px solid #94a0b4;
}
.tree li a:hover+ul li::after,
.tree li a:hover+ul li::before,
.tree li a:hover+ul::before,
.tree li a:hover+ul ul::before {
border-color:
#94a0b4;
}
Using Mermaid JS, to obtain a graph, It may also be helpful to see the shape of the abstraction used to create the tree structure.
As you can see in code -mermaid code- section, With a one-dimensional flat set, it is possible to express node connections. (Since enlarging the graph makes no practical sense, I did not choose to enlarge any further. A tree with two or three generations is sufficient.)
I hope all this gives an idea.
PS:
On the additional question in the comments, I've edited the answer.
When using Mermaid, using the syntax in the example code --> 2 [ Aidem ]
,
You can use the same name on different nodes. For additional questions, reviewing and trying the documentation may get you closer to the answer.
graph TD
Root --> Liven
Root --> Aidem
Root --> Dimitri --> Oleg
Root --> Olga --> Oleg
Liven --> Milna
Aidem --> Milna
Milna --> Harmi
Oleg --> Harmi
Harmi --> 2[Aidem]
Mina --> 2[Aidem]
Root --> Mina