2015-11-04 94 views
4

我上树视图组件工作左侧菜单(见截图):拉伸树形视图项宽度父容器,CSS/HTML

enter image description here

在树视图中的所有项目必须是可选择的。我设置宽度为项100%,并且当我在高亮区域的树宽度选择项小于左侧板:

enter image description here

但宽度高亮区域的为等于左侧面板的宽度。我知道,它可以与margin和padding操作的高亮区域例如可以实现:

{ 
margin: 0 -400px; 
padding: 0 400px; 
} 

但它会导致水平滚动条:

enter image description here

就在那儿强调任何“聪明”的方式区域延伸到容器(左侧面板)?

+0

你有你已经尝试什么码? – cakan

+0

@cakan以下是一个示例https://jsfiddle.net/gf2pa4qn/。这很麻烦,因为我从页面复制并粘贴标记,但问题在这里可见。如果问题未解决,我尝试准备简单的小提琴 – Natasha

回答

0

width: 100%和/或max-width: 100%时,每个孩子都应该适合其父母。

为了得到结果,你希望每个项目需要规则:

  • white-space: nowrap(所以它不会换行到下一行)
  • overflow: hidden(砍掉多余的文字)
  • width: 100%(以拉伸到父)

见下段为两个例子:与UL/LI和DIV的

html, 
 
body { 
 
    /*UPDATE*/ 
 
    box-sizing: border-box; 
 
    height: 100%; 
 
    width: 100%; 
 
    overflow: hidden 
 
} 
 
*, 
 
*:before, 
 
*:after { 
 
    box-sizing: inherit 
 
} 
 
/* { outline: 1px dotted red } /* for debug */ 
 

 
ul, 
 
li { 
 
    list-style: none; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.side-panel { 
 
    max-width: 200px; 
 
    padding: 4px; 
 
    border: 1px solid rgba(0, 0, 0, .2) 
 
} 
 
ul, 
 
.treeview { 
 
    max-width: 100%; 
 
    text-align: right; 
 
} 
 
li, 
 
.item { 
 
    height: 23px; /*ADD*/ 
 
    width: 100%; 
 
    white-space: nowrap; 
 
    overflow: hidden; 
 
    margin: 5px 0; /*ADD*/ 
 
} 
 
li:hover, 
 
.item:hover { /*ADD*/ 
 
    height: 23px; 
 
    text-align: left; 
 
    border: 1px dashed cornflowerblue; 
 
    cursor: pointer 
 
} 
 
li:nth-child(even), 
 
.item:nth-child(odd) { 
 
    background: rgba(0, 255, 0, 0.1) 
 
} 
 
li:nth-child(odd), 
 
.item:nth-child(even) { 
 
    background: rgba(0, 0, 255, 0.1) 
 
}
<div class="side-panel"> 
 
    <h3>example with UL/LI</h3> 
 
    <ul> 
 
    <li>some item 1</li> 
 
    <li>some item 2</li> 
 
    <li>some item 3</li> 
 
    <li>some item 4fgdfg g</li> 
 
    <li>some item 5 sad d fd</li> 
 
    <li>some item 6 sdtresertg zdf dfsfd</li> 
 
    <li>some item 7</li> 
 
    </ul> 
 
</div> 
 
<div class="side-panel"> 
 
    <h3>example with DIV's</h3> 
 
    <div class="treeview"> 
 
    <div class="item">some item 1</div> 
 
    <div class="item">some item 2</div> 
 
    <div class="item">some item 3</div> 
 
    <div class="item">some item 4fgdfg g</div> 
 
    <div class="item">some item 5 sad d fd</div> 
 
    <div class="item">some item 6 sdtresertg zdf dfsfd</div> 
 
    <div class="item">some item 7</div> 
 
    </div> 
 
</div>

+0

感谢您的回复,但我真的不明白您的解决方案在这种情况下如何提供帮助。我已经使用div的http://jsfiddle.net/yzqLgrjb/定制了您的示例:添加嵌套的treeviews并增加一点填充以使其更清晰。现在我们有10px的侧面板填充和10px的每个树形视图。你会看到树视图项目的宽度小于侧面板的宽度,但是我认为它是相等的。 – Natasha

+0

当我得到它的权利,你需要删除'.treeview'填充(只是为演示,无论如何)或改为'填充:0'(在UL的情况下),我会调整我的答案,以反映这...大多数开发者默认添加'UL,LI {list-style:none;保证金:0; padding:0}'以防止不需要的HTML默认行为。 –

+0

当您从具有子项目的项目中移除'.item'类时,您的小提琴和我的新代码将起作用。例如'一些项目7'。检查我的小提琴(http://jsfiddle.net/renevanderlende/yzqLgrjb/7/) –