TL; DR:由于,无法在表格中正确定位和显示工具提示overflow: hidden
。
我创建了一个表的简单可复制示例,其工具提示未按预期显示。之所以存在此问题,部分原因是该表要求该表overflow: scroll
的水平滚动才能按预期工作。这是一个例子:
.gap {
height: 50px
}
div.table {
max-width: 200px;
overflow: scroll;
border: 2px solid blue;
display: inline-block;
font-family: 'Roboto Mono';
font-weight: 700;
}
.tr {
display:flex;
}
.td, .th {
border: 1px solid black;
min-width: 60px;
height: 50px;
}
.th {
position: relative;
font-size: 13px;
padding: 2px;
background-color: #888888;
text-align: center;
border-right: 1px solid #555555;
display: inline-block;
box-sizing: border-box;
}
.tip-wrapper {
position: absolute;
}
.tip0 {
visibility: hidden;
position: absolute;
top: -60%;
z-index: 1;
max-width: 325px;
min-width: 160px;
color: #333333;
text-align: left;
background: white;
border: 1px solid black;
}
.tip1 {
visibility: hidden;
position: fixed;
z-index: 1;
max-width: 325px;
min-width: 160px;
color: #333333;
text-align: left;
background: white;
border: 1px solid black;
}
.tooltip:hover .tip0, .tooltip:hover .tip1 {
visibility: visible;
}
<div class='gap'>.</div>
<div class='table'>
<div class='table-headers'>
<div class='tr'>
<div class='th tooltip'>
Z
<div class='tip0'>
Heres the ToolTip For Column Z, getting cut off (bad)
</div>
</div>
<div class='th'>Y</div>
<div class='th tooltip'>
X
<div class='tip-wrapper'>
<div class='tip1'>
Heres the Tooltip For Column X, which doesn't stay at the top (bad)
</div>
</div>
</div>
<div class='th'>W</div>
<div class='th'>V</div>
</div>
</div>
<div class='table-body'>
<div class='tr'>
</div>
<div class='tr'>
<div class='td stick'>A</div>
<div class='td'>B</div>
<div class='td'>C</div>
<div class='td'>D</div>
<div class='td'>E</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
</div>
</div>
但是,在上表中,Z
和X
标题单元格上都有工具提示。但是,当前这两个工具提示都存在问题:
Z列:由于overflow: hidden
,该工具提示已被删除。该表可以水平滚动非常重要,因此我无法删除此overflow
CSS属性。但是,将工具提示悬停在表格顶部上方也很重要,以免阻塞表格的内容。
第十栏:我在另一篇文章中尝试了这种方法。方法1.这允许工具提示超出overflow: hidden
。但是,当我垂直滚动此表时,工具提示也会移动,这不好。工具提示应始终保持在相同的高度,正好在表格顶部上方。
我希望这个基本的“表头中的工具提示”可以起作用,但是到目前为止还没有。因此,我正在考虑div
在表的HTML之外创建单独的工具提示,并使用onMouseOver()
和onMouseOut()
处理函数将工具提示放置在鼠标位置,并在工具提示中填充文本。也许那是我唯一的方法?
您可以使用同级元素来模仿表格画布,然后在该子项上使用自定义溢出属性来实现所需的任何效果:
document.addEventListener('DOMContentLoaded', _ => {
const tool = document.querySelector('.tooltip-canvas > tooltip')
const toolEls = Array.from(document.querySelectorAll('.table [tooltip]'))
toolEls.forEach(t => {
t.onmouseenter = _ => {
tool.setAttribute('tooltip', t.getAttribute('tooltip'))
tool.style.left = `${t.clientLeft}px`
tool.style.top = `${t.clientTop - 2}px`
}
t.onmouseleave = _ => tool.removeAttribute('tooltip')
})
})
.gap {
height: 50px
}
.table-wrap {
position: relative;
display: inline-block;
}
.table-wrap > .tooltip-canvas {
position: absolute;
pointer-events: none;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.table-wrap > .tooltip-canvas > tooltip {
content: attr(tooltip);
position: absolute;
z-index: 1;
max-width: 325px;
min-width: 160px;
color: #333333;
text-align: left;
background: white;
border: 1px solid black;
opacity: 0;
transform: translateY(-100%);
transition: opacity .25s;
}
.table-wrap > .tooltip-canvas > tooltip[tooltip] {
opacity: 1;
}
.table-wrap > .tooltip-canvas > tooltip:before {
content: attr(tooltip)
}
div.table {
max-width: 200px;
overflow: scroll;
border: 2px solid blue;
display: inline-block;
font-family: 'Roboto Mono';
font-weight: 700;
}
.tr {
display:flex;
}
.td, .th {
border: 1px solid black;
min-width: 60px;
height: 50px;
}
.th {
position: relative;
font-size: 13px;
padding: 2px;
background-color: #888888;
text-align: center;
border-right: 1px solid #555555;
display: inline-block;
box-sizing: border-box;
}
<div class='gap'>.</div>
<section class='table-wrap'>
<div class='table'>
<div class='table-headers'>
<div class='tr'>
<div class='th' tooltip='Heres the ToolTip For Column Z, getting cut off (bad)'>
Z
</div>
<div class='th'>Y</div>
<div class='th' tooltip='Heres the Tooltip For Column X, which doesn&spquot;t stay at the top (bad)'>
X
</div>
<div class='th'>W</div>
<div class='th'>V</div>
</div>
</div>
<div class='table-body'>
<div class='tr'>
</div>
<div class='tr'>
<div class='td stick'>A</div>
<div class='td'>B</div>
<div class='td'>C</div>
<div class='td'>D</div>
<div class='td'>E</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
<div class='tr'>
<div class='td'>F</div>
<div class='td'>G</div>
<div class='td'>H</div>
<div class='td'>I</div>
<div class='td'>J</div>
</div>
</div>
</div>
<aside class='tooltip-canvas'>
<tooltip></tooltip>
</aside>
</section>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句