【发布时间】:2016-07-23 02:04:33
【问题描述】:
两个子元素在一个固定宽度的 div 内。
第一个元素是一个不能长的文本句子,所以使用overflow: hidden 规则。
第二个是浮动元素,必须始终可见并位于父元素的右侧。此元素必须对鼠标事件(如悬停和单击)做出反应。
下面的 sn-p 演示了这个问题。
鼠标悬停和点击测试:
- 悬停时元素颜色发生变化(句子为绿色,浮动为红色)
- 在控制台上可以看到每个元素的点击次数
当句子足够短以至于句子和浮动元素之间还有一些空间时,一切正常。
但是当句子很长时,浮动元素不再接收事件,而是句子接收。
有没有办法确保浮动元素接收鼠标事件,同时保留此布局?
.parent {
width: 200px;
white-space: nowrap;
border: black 1px solid;
overflow: hidden;
text-overflow: ellipsis;
position: relative;
}
.sentence {
/* pointer-events: none; */
}
.sentence:hover {
color: green
}
.float {
float: right;
z-index: 10;
}
.float:hover {
color: red
}
<div class="parent" onclick="console.log('parent')">
<div class="float" onclick="console.log('float')">FLOAT</div>
<span class="sentence" onclick="console.log('sentence')">very loooooooooooooong sentence</span>
</div>
<div class="parent" onclick="console.log('parent')">
<div class="float" onclick="console.log('float')">FLOAT</div>
<span class="sentence" onclick="console.log('sentence')">short sentence</span>
</div>
【问题讨论】: