在 overflow:hidden 上显示工具提示
Show tooltip over overflow:hidden
我想在具有自定义滚动功能的相当复杂的编辑器中的项目旁边显示工具提示。工具提示应 "escape" 已 overflow: hidden
设置为限制视口的容器。
这是一个说明问题的例子:
.container {
border: 1px black solid;
width: 200px;
height: 200px;
overflow: hidden;
}
.inner {
display: flex;
flex-direction: column;
}
.row {
display: flex;
}
.column {
background-color: #99FF99;
padding: 25px;
}
.tooltip-container {
position: relative;
}
.content {
background-color: #9999FF;
width: 50px;
height: 50px;
}
.tooltip {
z-index: 1;
background-color: #FF9999;
display: none;
position: absolute;
left: 100%;
top: 0%;
white-space: nowrap;
}
.tooltip-container:hover .tooltip {
display: inline-block;
}
<div class="container">
<div class="inner" id="inner" style="margin-left: -40px; margin-top: -40px">
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
1
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 1
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
2
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 2
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
4
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 4
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
3
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 3
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
5
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 5
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
6
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 6
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
7
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 7
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
8
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 8
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
9
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 9
</div>
</div>
</div>
</div>
</div>
</div>
当然我搜索了这个问题,已经有很多解决问题的方法了。但是我没有找到解决我问题的方法
最常被引用的解决方案是制作工具提示 position: absolute
并在 div 之外添加一个带有 overflow:hidden
的包装器,如 here 所示。这在我的情况下不起作用,因为工具提示应该位于它描述的项目的右侧。所以我需要工具提示容器上的相对位置。
我尝试用 position:relative
包装工具提示,并在包装器中使用 position:absolute
进行一些偏移。这没有用,因为包装器捕获了工具提示的鼠标悬停。这也意味着我必须知道附件的大小。
我尝试水平放置 tooltip-container
中的项目,然后使用标准 position:absolute
技巧,但我也无法做到这一点。
有人有想法吗?
限制条件:
- 工具提示出现在具有
overflow:hidden
的容器中,应该将其转义
- 容器中的内容可以移动
- 没有固定尺寸
- 如果可能,它应该是一个 CSS 唯一的解决方案(但绝对不是 jQuery)
- 工具提示应该出现在附加项目的右侧(如果它可以出现在项目的任何一侧则加分)
- 工具提示不仅可以包含文本,还可以包含其他控件和输入
您唯一可以使用的 CSS 技巧是使用 null 转换阻止的 position:fixed
并且您可以拥有大部分约束:
body {
min-height:200vh;
transform:translate(0,0);
}
.container {
border: 1px black solid;
width: 200px;
height: 200px;
overflow: hidden;
}
.inner {
display: flex;
flex-direction: column;
}
.row {
display: flex;
}
.column {
background-color: #99FF99;
padding: 25px;
}
.tooltip-container {
position: relative;
}
.content {
background-color: #9999FF;
width: 50px;
height: 50px;
}
.tooltip {
z-index: 1;
background-color: #FF9999;
display: none;
position: fixed;
transform:translate(50px,-50px);
/*left: 100%;
top: 0%;*/
white-space: nowrap;
}
.tooltip-container:hover .tooltip {
display: inline-block;
}
<div class="container">
<div class="inner" id="inner" style="margin-left: -40px; margin-top: -40px">
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
1
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 1
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
2
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 2
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
4
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 4
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
3
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 3
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
5
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 5
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
6
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 6
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
7
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 7
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
8
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 8
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
9
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 9
</div>
</div>
</div>
</div>
</div>
</div>
我想在具有自定义滚动功能的相当复杂的编辑器中的项目旁边显示工具提示。工具提示应 "escape" 已 overflow: hidden
设置为限制视口的容器。
这是一个说明问题的例子:
.container {
border: 1px black solid;
width: 200px;
height: 200px;
overflow: hidden;
}
.inner {
display: flex;
flex-direction: column;
}
.row {
display: flex;
}
.column {
background-color: #99FF99;
padding: 25px;
}
.tooltip-container {
position: relative;
}
.content {
background-color: #9999FF;
width: 50px;
height: 50px;
}
.tooltip {
z-index: 1;
background-color: #FF9999;
display: none;
position: absolute;
left: 100%;
top: 0%;
white-space: nowrap;
}
.tooltip-container:hover .tooltip {
display: inline-block;
}
<div class="container">
<div class="inner" id="inner" style="margin-left: -40px; margin-top: -40px">
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
1
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 1
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
2
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 2
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
4
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 4
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
3
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 3
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
5
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 5
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
6
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 6
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
7
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 7
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
8
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 8
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
9
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 9
</div>
</div>
</div>
</div>
</div>
</div>
当然我搜索了这个问题,已经有很多解决问题的方法了。但是我没有找到解决我问题的方法
最常被引用的解决方案是制作工具提示 position: absolute
并在 div 之外添加一个带有 overflow:hidden
的包装器,如 here 所示。这在我的情况下不起作用,因为工具提示应该位于它描述的项目的右侧。所以我需要工具提示容器上的相对位置。
我尝试用 position:relative
包装工具提示,并在包装器中使用 position:absolute
进行一些偏移。这没有用,因为包装器捕获了工具提示的鼠标悬停。这也意味着我必须知道附件的大小。
我尝试水平放置 tooltip-container
中的项目,然后使用标准 position:absolute
技巧,但我也无法做到这一点。
有人有想法吗?
限制条件:
- 工具提示出现在具有
overflow:hidden
的容器中,应该将其转义 - 容器中的内容可以移动
- 没有固定尺寸
- 如果可能,它应该是一个 CSS 唯一的解决方案(但绝对不是 jQuery)
- 工具提示应该出现在附加项目的右侧(如果它可以出现在项目的任何一侧则加分)
- 工具提示不仅可以包含文本,还可以包含其他控件和输入
您唯一可以使用的 CSS 技巧是使用 null 转换阻止的 position:fixed
并且您可以拥有大部分约束:
body {
min-height:200vh;
transform:translate(0,0);
}
.container {
border: 1px black solid;
width: 200px;
height: 200px;
overflow: hidden;
}
.inner {
display: flex;
flex-direction: column;
}
.row {
display: flex;
}
.column {
background-color: #99FF99;
padding: 25px;
}
.tooltip-container {
position: relative;
}
.content {
background-color: #9999FF;
width: 50px;
height: 50px;
}
.tooltip {
z-index: 1;
background-color: #FF9999;
display: none;
position: fixed;
transform:translate(50px,-50px);
/*left: 100%;
top: 0%;*/
white-space: nowrap;
}
.tooltip-container:hover .tooltip {
display: inline-block;
}
<div class="container">
<div class="inner" id="inner" style="margin-left: -40px; margin-top: -40px">
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
1
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 1
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
2
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 2
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
4
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 4
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
3
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 3
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
5
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 5
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
6
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 6
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="tooltip-container">
<div class="content">
7
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 7
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
8
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 8
</div>
</div>
</div>
<div class="column">
<div class="tooltip-container">
<div class="content">
9
</div>
<div class="tooltip">
Super nice and awesome and cool and hot 9
</div>
</div>
</div>
</div>
</div>
</div>