位置固定为元素在绝对元素中

时间:2015-05-19 08:09:01

标签: html css html5 css3

我正在尝试创建一个UI,每当我将鼠标悬停在元素上时,元素特定描述将在其旁边可见。我以某种方式设法让它正常工作,但现在我开始知道,当元素更多时,应该有滚动。

执行以下操作,我得到了滚动条,但现在描述部分没有随滚动条一起移动。

Fiddle

CSS

.wrapper {
    height: 180px;
    overflow-x: hidden;
    overflow-y: auto;
    width: 400px;
    background-color: red;
    position: relative;
}
.viewer {
    display: none;
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0;
    left: 200px;
    background-color: orange;
}
.item {
    width: 200px;
    height: 60px;
    background-color: green;
    cursor: pointer;
    outline: 1px solid black;
}
.item:hover {
    background-color: cornflowerblue;
}
.item:hover .viewer {
    display: block;
}

我正在寻找一种适用于现代浏览器的纯解决方案,如IE10,chrome和firefox。

1 个答案:

答案 0 :(得分:2)

诀窍是确保viewer div不会与其余项目一起滚动。为此,您可以添加第二个包装器。外部包装滚动,内部包装 滚动。然后,您需要确保绝对定位的元素相对于外部/非滚动包装器定位。您可以通过从内部包装器中删除定位,然后将其应用于外部包装器来完成此操作。

例如:

.wrapper {
    position: relative;
    width: 400px;
}
.wrapper-inner {
    height: 180px;
    overflow-x: hidden;
    overflow-y: auto;
    background-color: red;
}

可以在这里查看jsFiddle:https://jsfiddle.net/t8wtxf4o/4/