与另一个子元素重叠列表项
Overlap list item with another child element
我有项目列表。悬停时,背景应突出显示每个项目的灰色。我还希望能够将鼠标悬停在"X"上以将其背景更改为红色。
但是,在下面的代码中,当我将鼠标悬停在每一行上时,项目背景位于"X"之上,无法将鼠标悬停在"X"上。
代码:http://jsfiddle.net/qhoc/7vtZT/2/
.HTML:
<ul>
<li>
<a>Long title for Item 1</a>
<i class=icon></i>
</li>
<li>
<a>Item 2</a>
<i class=icon></i>
</li>
<li>
<a>Item 3</a>
<i class=icon></i>
</li>
<li>
<a>Item 4</a>
<i class=icon></i>
</li>
<li>
<a>Item 5</a>
<i class=icon></i>
</li>
</ul>
.CSS:
ul {
border: 1px solid green;
overflow: hidden;
padding: 0;
list-style: none;
width: 100px;
}
a {
display: inline-block;
text-overflow: ellipsis;
overflow: hidden;
padding-right: 20px;
white-space: nowrap;
width: 80px;
}
a:hover {
background: gray;
}
.icon {
display: inline-block;
float: right;
margin-top: -20px;
background: yellow;
}
.icon:before {
content: "X";
}
.icon:hover:before {
background: red;
}
问题:如何更改CSS(最好)以便能够将鼠标悬停在"X"上以更改其背景颜色并在JS中"可单击",同时在该行中突出显示该项目的背景为灰色?
现在我无法在"X"中事件钩子"单击"事件,因为它一直在项目下进行。
要求:
ul
的宽度固定为100px
"X"必须位于每个
li a
元素的同一行中,并保持在ul
的宽度上如果
a
中的文本太长,则必须位于"X"下,但不显示在框外ul
。没有包装。每个
li a
都有硬编码的宽度,并带有ellipsis
以显示"..."在长文本上。此宽度可以更改。没有Javascript。硬编码的CSS位置是可以的,但不太受欢迎。
将锚 CSS 从 inline-block
更改为 block
作为建议,将宽度从 100px(硬编码)更改为 100% 我们的自动设置与容器相同的宽度
小提琴解决方案
将position: relative;
添加到所有li
,并将position: absolute;
、right: 0;
、top: 0;
添加到.icon
链接到小提琴
也许这可以帮助你,我认为是这样..
a {
display: inline-block;
text-overflow: ellipsis;
overflow: hidden;
padding-right: 10px;
white-space: nowrap;
width: 80px;
height:15px;
}
相关文章:
- 要求输入在数据列表中
- 从javascript创建一个列表
- 如何使用jQuery选择下拉列表的值
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- Javascript按钮下拉列表
- 如何使用json将对象列表从java转换为javascript
- 区分JSON中的矩阵和列表列表
- jQuery表单添加不适用于下拉列表
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 接受不在列表中的值-引导组合框
- 禁用jQuery中的下拉列表
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- 如何在javascript中迭代数字列表
- 如何在按钮中显示下拉列表中选定的元素
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 使用图像数组列表的simplegallary.js显示适合桌面屏幕的图像
- 与另一个子元素重叠列表项
- 选择下拉列表重叠