2016-10-17 16 views
2

Exampleに基づいてツリー構造(親&子)を作成しますが、ブラウザを最小限に抑えるとツリー構造が乱雑になります。組織ツリーチャート伸ばしたときのCSS固定幅

html, body { 
 
     height: 100%; 
 
    } 
 

 
    html { 
 
     display: table; 
 
     margin: auto; 
 
    } 
 

 
    body { 
 
     display: table-cell; 
 
     vertical-align: middle; 
 
    } 
 
    .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 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; 
 
    } 
 

 

 
    /*Time for some hover effects*/ 
 
    /*We will apply the hover effect the the lineage of the element also*/ 
 
    .tree li a:hover { 
 
    background: rgba(19, 79, 82, 0.4); color: #000; border: 1px solid #94a0b4; 
 
    }
<div class="tree" style="max-width:14444px;display: inline-block;"> 
 
    <ul> 
 
     <li> 
 
      <a href="#">Parent</a> 
 
     <ul> 
 
      {{-- There is at least 200 childs, in my example i only include 1 child --}} 
 
      <li> 
 
      <a href="#">Child</a> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
    </ul> 
 
    </div>

:私はそう15000pxツリークラスの幅を設定する必要があるため、それは別の子が含まれている場合だけで、それは厄介

を得ることはありません右にスクロールすることができますことは、ここのコードです

答えて

2

ulにはwhite-space:nowrapを追加するだけで、float:leftdisplay:inline-blockに置き換えてliに置き換えます。

.tree ul { 
    white-space:nowrap; 
} 

.tree li { 
    display: inline-block; 
} 

そして、あなたは.treeからmax-widthを削除することができます。

ここに例があります。http://codepen.io/joruus/pen/GjXQVj

関連する問題