htmlcsstreefamily-tree

there are some issues in this family tree I made


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">

  • 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
grand mother
  •                                         </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;
        }
    
    

    Solution

  • 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