我有一个 html 树,主要由嵌套的无序列表组成。
我需要为每个叶子创建全宽悬停效果,类似于 Windows 文件菜单树悬停效果。
悬停效果是<div/>
具有背景颜色和边框。
我做了一个模拟全宽度的黑客,但侧面边框不再可见。
我可以使用 CSS 技巧来保持悬停效果的侧边边框并仍然具有全宽度吗?
我做了一个jsfiddle http://jsfiddle.net/L8eSr/举个例子,这样比较容易理解。
Note:我无法更改 html 树结构或 css,因为它是由第三方插件(kendo ui treeView)创建的,所以我需要使用我所拥有的找到一个解决方案。
CSS:
h6 { font-size: 16px; font-weight: normal; margin-bottom: 10px; margin-top: 0; }
.tree { width: 300px; border: 1px solid #000; padding: 10px; margin-bottom: 15px; }
.tree ul { margin: 0; padding: 0; list-style-type: none; }
.tree ul li { padding-left: 16px; }
.tree li .item { position: relative; }
.tree li .item .overlay
{ position: absolute; left: 0; top: 0; width: 100%; height: 100%;
background-color: #C5E7E6; display: none; border: 1px solid red; }
.tree li .item:hover .overlay { display: block; }
/*Full width hack*/
.tree.fullWidth { overflow: hidden; }
.tree.fullWidth li .item .overlay { left: -100px; width: 1000px; }
HTML
<h6>Normal overlay - not full width</h6>
<div class="tree">
<ul>
<li>
<div class="item">
Node 1
<div class="overlay"></div>
</div>
<ul>
<li>
<div class="item selected">
Node 2
<div class="overlay"></div>
</div>
</li>
</ul>
</li>
</ul>
</div>
<h6>Full width overlay (but side borders aren't visible anymore)</h6>
<div class="tree fullWidth">
<ul>
<li>
<div class="item">
Node 1
<div class="overlay"></div>
</div>
<ul>
<li>
<div class="item selected">
Node 2
<div class="overlay"></div>
</div>
</li>
</ul>
</li>
</ul>
</div>
我也遇到了和你一样的问题,经过一番尝试和测试,我想出了这个。它允许您添加滚动条并将填充放在内部。
HTML
<div class="tree" style="width:256px; height:256px;">
<div>
<ul>
<li>
<div><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit</span></div>
</li>
<li>
<div><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit</span></div>
<ul>
<li>
<div><span>Lorem ipsum dolor sit amet, consectetur adipisicing elit</span></div>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
CSS
.tree {
position:relative;
display: block;
overflow: auto;
border: 1px solid #8B9097;
background-color: #fff;
margin-left:200px;
/*! margin-left: just for testing */
}
.tree > div {
display:block;
position:absolute;
min-width:100%;
}
.tree * {
white-space: nowrap;
}
.tree ul {
margin:0;
list-style-type: none;
padding-left: 20px;
}
.tree li > div {
position:relative;
margin-left:-100000px;
padding-left:100000px;
border: 1px solid transparent;
display:block;
}
.tree li div:hover {
background-color: #B6BABF;
color: #fff;
}
.tree li.collapsed > ul {
display:none;
}
.tree li.expanded > ul {
display:inherit;
}
http://jsfiddle.net/WknDZ/17/ http://jsfiddle.net/WknDZ/17/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)