CSS:将目标区域悬停在元素高度的 50% 处

标签 css hover

我想,和你一样hover a GIF shot on Dribbble , 当光标位于元素高度顶部之后/50% 处时显示带有信息的 div。

测试示例
我做了这个,这是有效的,但有点棘手......特别是当你鼠标移开时。
http://codepen.io/anon/pen/meZbJK

使用的 CSS 代码

.item {
    position:relative; width:960px;

    &--infos {
        opacity:0;
        position:absolute;
        top:0;
        left:0;
        width:100%;
        height:100%;
        padding:0 10%;
        text-align:center;
        background:transparentize(#a7ecf8, 0.075);
        transition:opacity 200ms ease-in-out;
    }
    p {
        position:relative;
        padding:0;
        top:50%; transform:translateY(-50%);
    }
    strong {
        display:inline-block;
        margin-bottom:10px;
    }
    time {
        color:#959595;
        font-size:14px;
    }

    &--infos-target {
        position:absolute;
        bottom:0;
        float:left;
        width:100%;
        height:50%;
    }
    &--infos-target:hover &--infos {
        opacity:1;
        top:-100%;
        height:200%;
    }

最佳答案

我对您的代码笔进行了编辑以使其正常工作。

基本上,我从 --infos-target 中取出 --infos 并使用 ~ 选择器在悬停时捕获它。这样,我就不必执行 top: -100%;高度:200% hack 了。

将其与 --infos 上的 pointer-events: none 相结合,您就可以开始了。

使用 z-index,您可以将目标定位在信息部分上方,一切顺利。

这里最大的问题是,由于 pointer-events: none

,您无法在信息部分中添加链接

http://codepen.io/anon/pen/XmLrgp

HTML

<div class="item">
    <img src="http://lorempicsum.com/futurama/960/250/1" alt="">
    <div class="item--infos-target">
    </div>
    <div class="item--infos">
        <p>
            <strong>Item title</strong>
            <br>
            <time datetime="2015-11-05 15:23:26" class="date">Added two weeks ago</time>
        </p>
    </div>
</div>

SCSS

.item {
    position:relative; width: 960px;
    &--infos {
        opacity:0;
        position:absolute;
        top:0;
        left:0;
        width:100%;
        height:100%;
        padding:0 10%;
        text-align:center;
        pointer-events: none;
             background:transparentize(#a7ecf8, 0.075);
        transition:opacity 200ms ease-in-out;
        z-index: 9;
    }
    p {
        position:relative;
        padding:0;
        top:50%; transform:translateY(-50%);
    }
    strong {
        display:inline-block;
        margin-bottom:10px;
    }
    time {
        color:#959595;
        font-size:14px;
    }

    &--infos-target {
        position:absolute;
        bottom:0;
        float:left;
        width:100%;
        height:50%;
        z-index: 10;
    }
    &--infos-target:hover ~ &--infos {
        opacity:1;
    }
}

关于CSS:将目标区域悬停在元素高度的 50% 处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33916955/

相关文章:

html - 使用 twitter bootstrap 修复标题面板

html - 并排堆叠 div

html - 悬停时不显示 css 无法正常工作

CSS - 当从左向右而不是从右向左移动时,根据悬停元素闪烁而变化的自定义光标

css - body 外部额外的底部空间

javascript - 无限水平 slider 具有不同的上一个和下一个动画

html - 悬停时淡入淡出下划线?

html - 当您将鼠标悬停在图像所在的 div 上时,如何淡化图像?

css - 设置为 100% 的内部 div 溢出

javascript - 延迟()或停止()超时?