.details {
position: relative;
}
.details div {
--bgcolor: #ffecec;
--bdcolor: 2px solid #de8273;
position: absolute;
top: 0;
transform: translateX(-125%) translateY(-7%);
display: none;
background: var(--bgcolor);
z-index: 20;
padding: 1rem;
border: var(--bdcolor);
width: 150px;
border-radius: 5px;
box-shadow: 1px 1px 2px 2px #a08c8c;
}
.details div:after{
content: '';
position: absolute;
width: 7px;
height: 7px;
border-bottom: var(--bdcolor);
border-right: var(--bdcolor);
background: var(--bgcolor);
left: 98.5%;
transform: rotate(315deg);
top: 10px;
}
.details:hover div {
display: inline;
}
.tab{
border-collapse : collapse;
width : 100%;
}
.tab td{
padding: 3px;
font-size: 14px;
}
.tab tr:hover td{
background:#20b5cc1f;
}
.tab th{
padding: 4px;
font-weight: normal;
border: 1px solid black;
}
.tab tr:nth-child(even) {
background-color: #f2f2f2;
}
.tab tr:nth-child(odd) {
background-color: yellow;
}
.container{
border: 2px solid blue;
padding: 4px;
width: 500px;
margin: 0 auto;
overflow: auto;
height: 200px;
}<div class="container">
<table class="tab">
<tr>
<th>Column-1</th>
<th>Column-2</th>
<th>Column-3</th>
</tr>
<tr>
<td>Row-1</td>
<td>Row-1</td>
<td class='details'>Hover-1
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-1</td>
<td>Row-1</td>
<td class='details'>Hover-1
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
</table>
</div>
如何使弹出弹出充分显示在前面的一切,同时徘徊在第3栏的数据。如果没有javascript或jquery,是否有可能实现。当我使容器div溢出时,它确实工作:可见,但这使得表从容器div中出来,这不是我想要的。我希望表在容器div中,当我在表数据上悬停时,弹出窗口应该完全显示在容器div之外。有人能帮我解决这个问题吗。提前谢谢你。
.details {
position: relative;
}
.details div {
--bgcolor: #ffecec;
--bdcolor: 2px solid #de8273;
position: absolute;
top: 0;
transform: translateX(-125%) translateY(-7%);
display: none;
background: var(--bgcolor);
z-index: 20;
padding: 1rem;
border: var(--bdcolor);
width: 150px;
border-radius: 5px;
box-shadow: 1px 1px 2px 2px #a08c8c;
}
.details div:after{
content: '';
position: absolute;
width: 7px;
height: 7px;
border-bottom: var(--bdcolor);
border-right: var(--bdcolor);
background: var(--bgcolor);
left: 98.5%;
transform: rotate(315deg);
top: 10px;
}
.details:hover div {
display: inline;
}
.tab{
border-collapse : collapse;
width : 100%;
}
.tab td{
padding: 3px;
font-size: 14px;
}
.tab tr:hover td{
background:#20b5cc1f;
}
.tab th{
padding: 4px;
font-weight: normal;
border: 1px solid black;
}
.tab tr:nth-child(even) {
background-color: #f2f2f2;
}
.tab tr:nth-child(odd) {
background-color: yellow;
}
.container{
border: 2px solid blue;
padding: 4px;
width: 500px;
margin: 0 auto;
overflow: auto;
height: 200px;
}<div class="container">
<table class="tab">
<tr>
<th>Column-1</th>
<th>Column-2</th>
<th>Column-3</th>
</tr>
<tr>
<td>Row-1</td>
<td>Row-1</td>
<td class='details'>Hover-1
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-1</td>
<td>Row-1</td>
<td class='details'>Hover-1
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br/>
Curreny-2: XXX<br/>
Other Info:XXX
</div>
</td>
</tr>
</table>
</div>发布于 2021-10-14 05:02:26
1) --您可以通过首先找到相应的.details容器的top、left来轻松地获得结果。
const { top, left } = element.target.getBoundingClientRect();2)将弹出的top设置为
child.style.top = `${top}px`3)不要忘记将position: relative移到.details容器中。
.details{
/* position: relative; */
}JS代码
const details = Array.from(document.querySelectorAll(".details"));
details.forEach(detail => {
detail.addEventListener("mouseover", element => {
const { top, left } = element.target.getBoundingClientRect();
const child = element.target.children[0];
//child.style.left = `${left}px`
child.style.top = `${top}px`
})
})
const details = Array.from(document.querySelectorAll(".details"));
details.forEach(detail => {
detail.addEventListener("mouseover", element => {
const { top, left } = element.target.getBoundingClientRect();
const child = element.target.children[0];
//child.style.left = `${left}px`
child.style.top = `${top}px`
})
}).details div {
--bgcolor: #ffecec;
--bdcolor: 2px solid #de8273;
position: absolute;
top: 0;
transform: translateX(-125%) translateY(-7%);
display: none;
background: var(--bgcolor);
z-index: 20;
padding: 1rem;
border: var(--bdcolor);
width: 150px;
border-radius: 5px;
box-shadow: 1px 1px 2px 2px #a08c8c;
}
.details div:after {
content: "";
position: absolute;
width: 7px;
height: 7px;
border-bottom: var(--bdcolor);
border-right: var(--bdcolor);
background: var(--bgcolor);
left: 98.5%;
transform: rotate(315deg);
top: 10px;
}
.details:hover div {
display: inline;
}
.tab {
border-collapse: collapse;
width: 100%;
}
.tab td {
padding: 3px;
font-size: 14px;
}
.tab tr:hover td {
background: #20b5cc1f;
}
.tab th {
padding: 4px;
font-weight: normal;
border: 1px solid black;
}
.tab tr:nth-child(even) {
background-color: #f2f2f2;
}
.tab tr:nth-child(odd) {
background-color: yellow;
}
.container {
border: 2px solid blue;
padding: 4px;
width: 500px;
margin: 0 auto;
overflow: auto;
height: 200px;
}<div class="container">
<table class="tab">
<tr>
<th>Column-1</th>
<th>Column-2</th>
<th>Column-3</th>
</tr>
<tr>
<td>Row-1</td>
<td>Row-1</td>
<td class='details'>Hover-1
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-1</td>
<td>Row-1</td>
<td class='details'>Hover-1
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
<tr>
<td>Row-2</td>
<td>Row-2</td>
<td class='details'>Hover-2
<div>
Curreny-1: XXX<br /> Curreny-2: XXX<br /> Other Info:XXX
</div>
</td>
</tr>
</table>
</div>
https://stackoverflow.com/questions/69565192
复制相似问题