Help me with this webpage of a family tree hierarchy

Discussion in 'JavaScript' started by d9esco, Jan 3, 2016.

  1. #1
    I have this family tree coded as a template and I was wondering if someone could improve it for me. I was hoping I could get this done to the webpage.

    Clicking on an element give you options to add/edit the elements text and the <p>s associated with it.

    For example, If I were to click on a great grand child element, or any other element, I would like the option to edit the text "great grand child", edit the <p>s

    I would also like the option to add a child element to that great grand child element below it.

    It would be great if I could also get the option to just move down what I clicked on in the hierarchy and give it another parent, for example, If I wanted to click on a grand child to add a parent element, id like grand child to move down and a new empty element to appear as its parent, being the child of who the grand childs parent was.

    
    <html>
    
    <head>
    
        <script type="text/javascript">
            function show(id) {
               var e = document.getElementById(id);
               if(e.style.display == 'none')
                  e.style.display = 'block';
               else
                  e.style.display = 'none';
            }
       
        </script>
       
       
        <style>
        /*Now the CSS*/
        * {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;
        }
       
        /*We will use ::before and ::after to draw the connectors*/
       
        .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;
        }
       
        /*We need to remove left-right connectors from elements without 
        any siblings*/
        .tree li:only-child::after, .tree li:only-child::before {
            display: none;
        }
       
        /*Remove space from the top of single children*/
        .tree li:only-child{ padding-top: 0;}
       
        /*Remove left connector from first child and 
        right connector from last child*/
        .tree li:first-child::before, .tree li:last-child::after{
            border: 0 none;
        }
        /*Adding back the vertical connector to the last nodes*/
        .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;
        }
       
        /*Time to add downward connectors from parents*/
        .tree ul ul::before{
            content: '';
            position: absolute; top: 0; left: 50%;
            border-left: 1px solid #ccc;
            width: 0; height: 20px;
        }
       
        .tree li span{
            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;
        }
       
        /*Time for some hover effects*/
        /*We will apply the hover effect the the lineage of the element also*/
        .tree li span:hover, .tree li span:hover+ul li span {
            background: #c8e4f8; color: #000; border: 1px solid #94a0b4;
        }
        /*Connector styles on hover*/
        .tree li span:hover+ul li::after, 
        .tree li span:hover+ul li::before, 
        .tree li span:hover+ul::before, 
        .tree li span:hover+ul ul::before{
            border-color:  #94a0b4;
        }
       
        /*Thats all. I hope you enjoyed it.
        Thanks :)/>/>/>*/
        </style>
    
    </head>
    
    
    <body>
    
    
    
    <!--
    We will create a family tree using just CSS(3)
    The markup will be simple nested lists
    -->
    <div class="tree">
        <ul>
            <li>
                <span class="ctitle" id="title" onmouseenter='show("tproperties")' onmouseleave='show("tproperties")'>Animal Kingdom<div id="tproperties" style="display: none;">test text</div></span>
                <ul>
                    <li>
                        <span class="corder" id="order">Child</span>
                        <ul>
                            <li>
                                <span>Grand Child</span>
                            </li>
                        </ul>
                    </li>
                    <li>
                        <span>Child</span>
                        <ul>
                            <li><span>Grand Child</span></li>
                            <li>
                                <span>Grand Child</span>
                                <ul>
                                    <li>
                                        <span  onmouseenter='show("ggcp")' onmouseleave='show("ggcp")'>Great Grand Child 
                                            <div id='ggcp' style="display: none;">
                                                <p id='age' class='age'>age</p>
                                                <p id='name' class='name'>name<p>
                                            </div>
                                        </span>
                                    </li>
                                    <li>
                                        <span>Great Grand Child</span>
                                    </li>
                                    <li>
                                        <span>Great Grand Child</span>
                                    </li>
                                </ul>
                            </li>
                            <li><span>Grand Child</span></li>
                        </ul>
                    </li>
                </ul>
            </li>
        </ul>
    </div>
    
    
    
    
    <div>
    
    </div>
    
    </body>
    </html>
    
    Code (markup):
     
    d9esco, Jan 3, 2016 IP