javascript - 如何在悬停另一个 HTML 元素时创建平滑缩放并显示叠加层?

标签 javascript jquery html css

第一个问题:我试图在“point”类悬停时显示文本叠加层,但对我来说,当“caption”类悬停时只显示文本,如何解决?

第二个问题:当“点”类悬停时,我需要创建一个平滑的放大图像,我该怎么做?

演示:http://jsfiddle.net/0qgcn2uu/12/

HTML:

<div class="caption">
    <span class="point"></span>
    <img src="http://www.blasdale.com/pictures/2007/Hendon/thumbs/IMG_3337.jpg" />
    <div class="caption__overlay">
        <div class="caption__overlay__content">
            <img id="hello" class="caption__media" src="http://2.bp.blogspot.com/-TH7ATkZ55uw/VOatQSMgt4I/AAAAAAAAAUM/bB199rdZMuE/s1600/alone.png" />
        </div>
    </div>
</div>

CSS:

.caption {
    position: relative;
    overflow: hidden;
    -webkit-transform: translateZ(0);
}

.caption::before {
    content: ' ';
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    background: transparent;
    transition: background .35s ease-out;
}

.captionHover::before {
    background: rgba(248, 214, 215, .5);
}

/* I want that when i hover on the circle, the image would get this overlay, but this doesn't work */
.point:hover: + .caption::before {
    background: rgba(248, 214, 215, .5);
}

.point {
    position: absolute;
    display: block;
    height: 25px;
    width: 25px;
    border-radius: 30px;
    background-color: black;
}

.caption__overlay {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    padding: 10px;
    color: white;
    -webkit-transform: translateY(100%);
    transform: translateY(100%);
    transition: -webkit-transform .35s ease-out;
    transition: transform .35s ease-out;
}
.caption:hover .caption__overlay {
    -webkit-transform: translateY(0);
    transform: translateY(0);
}

.caption {
    display: inline-block;
}

.caption__media{
    max-width: 100%;
}

jQuery:

$(document).ready(function() {
   $(".point").mouseenter(function() {
      $('.caption').addClass('captionHover'); 
   });

   $('.point').mouseleave(function() {
       $('.caption').removeClass('captionHover'); 
   });
});

最佳答案

您只需要 Adjacent sibling selector , General sibling selectorftransform

*{
  box-sizing: border-box
}

figure{
  overflow: hidden;
  width: 250px;
  height: 250px;
  margin: 50px auto;
  z-index:1;
  position: relative
}
figure span{
  display: block;
  width: 16px;
  height:16px;
  border-radius: 50%;
  background: black;
  z-index: 2;
  
  position: absolute;
  top: 10px;
  left: 10px;
  cursor: pointer
}
figure img, figure figcaption{
  -webkit-transition: 1s ease
}

figure figcaption{
  position: absolute;
  top: 100%;
  z-index: 2;
  width: 100%;
  left: 0;
  text-align: center;
  color: white
}

figure span:hover + img{
  -webkit-transform: scale(2,2)
}
figure span:hover ~ figcaption{
  top: 50%
}
<figure>
  <span class=point></span>
  <img src="http://www.blasdale.com/pictures/2007/Hendon/thumbs/IMG_3337.jpg" />
  <figcaption>HELLO!</figcaption>
</figure>

关于javascript - 如何在悬停另一个 HTML 元素时创建平滑缩放并显示叠加层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32872647/

相关文章:

javascript - 当子div包含特定文本时如何隐藏父div?

javascript - 如何使 div 与其他 div 一起拖动

javascript - 有没有办法跟踪用户是否打印网页?

javascript - 在 IE9 中设置占位符 att

javascript - react 组件中的背景图像

javascript - 服务 png 图像的 Axios 图像损坏

javascript - 想要禁用我的下一个按钮,直到使用 javascript 填充我的所有选项

html - 与导航下拉菜单相关的问题

javascript - <html> 比屏幕宽

javascript - 替换 JavaScript 对象中的值中的字符串