css - 在图像上叠加文本不起作用

标签 css overlay mouseover

我连续有三张图像。这些图像中没有文字。需要将其与代码一起添加。我使用了这里的帖子中描述的方法(使用相对和绝对位置)并且让它有点工作。这是jsfiddle 。有两个主要问题。

首先,位置不一致。如果调整窗口大小,文本不会随图像移动。在智能手机上,文本完全消失。

其次,当鼠标悬停在图像上时,它们会展开。但如果将鼠标移到文本上,扩展就会停止。如果我删除 z-index,那么当鼠标悬停在图像上时文本就会消失。我希望始终显示文本,但也希望扩展图像。我的代码如下。它取自示例 here ,除了我添加的文本覆盖。是否可以向发生变化的图像添加文本并使其按描述工作?

    <style>
    .nav {margin:0; padding-top:5px;overflow:hidden}
    .nav-items {border:1px solid black}
    .nav-items {position:relative;margin-left:0px; display:inline-block; overflow: hidden;}
    .nav-items:hover img {  
      box-shadow: 0px 0px 150px #000000;
      z-index: 2;
      -webkit-transition: all 500ms ease-in;
      -webkit-transform: scale(2.1);
      -ms-transition: all 500ms ease-in;
      -ms-transform: scale(2.1);   
      -moz-transition: all 500ms ease-in;
      -moz-transform: scale(2.1);
      transition: all 500ms ease-in;
      transform: scale(2.1); 
    }
    .nav-items img {
     -webkit-transition: all 200ms ease-in;
      -webkit-transform: scale(1); 
      -ms-transition: all 200ms ease-in;
      -ms-transform: scale(1); 
      -moz-transition: all 200ms ease-in;
      -moz-transform: scale(1);
      transition: all 200ms ease-in;
      transform: scale(1);   
    }
    #bannerText_0,
    #bannerText_1,
    #bannerText_2{
     position:absolute;
     font-size:20px;
     line-height: 150%;
     color:#fff;
     top:60px;
     background:transparent;
     z-index:999;
    }
    #bannerText_0{left:10%;}
    #bannerText_1{left:35%;}
    #bannerText_2{left:60%;}
    </style>

    <div class="banner_set">  
     <ul class="nav">
      <li id="0" class="nav-items"><a href="example.com"><img src="http://placehold.it/130x130"></a></li>
      <div id="bannerText_0">Img 1</div>
      <li id="1" class="nav-items"><a href="example.com"><img src="http://placehold.it/130x130"></a></li>
      <div id="bannerText_1">Img 2</div>
      <li id="2" class="nav-items"><a href="example.com"><img src="http://placehold.it/130x130"></a></li>
      <div id="bannerText_2">Img 3</div>
     </ul>
    </div>

最佳答案

主要问题是您的 HTML 结构不正确 - 您不能输入 <div>位于 <li> 之间<ul> 中的元素.

除了导致布局损坏之外,这也是鼠标悬停在文本上影响图像不起作用的原因 - 文本实际上不在 nav-item 内。具有悬停效果的元素。

您可以通过将 div 放入 <li> 来解决所有问题元素!

额外修复:),我还修复了图像下方底部的空间 - 只需将图像设为 display:block; .

您的 fiddle ,已更新以下更改:https://jsfiddle.net/pcpg7zww/2/

工作片段:

.nav {margin:0; padding-top:5px;overflow:hidden}
.nav-items {border:1px solid black}
.nav-items {position:relative;margin-left:0px; display:inline-block; overflow: hidden;}

.nav-items:hover img {  
    box-shadow: 0px 0px 150px #000000;
    z-index: 2;
    -webkit-transition: all 500ms ease-in;
    -webkit-transform: scale(2.1);
    -ms-transition: all 500ms ease-in;
    -ms-transform: scale(2.1);   
    -moz-transition: all 500ms ease-in;
    -moz-transform: scale(2.1);
    transition: all 500ms ease-in;
    transform: scale(2.1); 
}
.nav-items img {
   -webkit-transition: all 200ms ease-in;
    -webkit-transform: scale(1); 
    -ms-transition: all 200ms ease-in;
    -ms-transform: scale(1); 
    -moz-transition: all 200ms ease-in;
    -moz-transform: scale(1);
    transition: all 200ms ease-in;
    transform: scale(1);   
    display:block; /* this will remove the space at the bottom */
}
#bannerText_0,
#bannerText_1,
#bannerText_2{
 position:absolute;
 font-size:20px;
 line-height: 150%;
 color:#fff;
 top:60px;
 background:transparent;
 z-index:999;
}
#bannerText_0{left:10%;}
#bannerText_1{left:35%;}
#bannerText_2{left:60%;}
<div class="banner_set">
  <ul class="nav">
    <li id="0" class="nav-items">
      <a href="example.com">
        <img src="http://placehold.it/130x130">
        <div id="bannerText_0">Img 1</div>
      </a>
    </li>
    <li id="1" class="nav-items">
      <a href="example.com">
        <img src="http://placehold.it/130x130">
        <div id="bannerText_1">Img 2</div>
      </a>
    </li>

    <li id="2" class="nav-items">
      <a href="example.com">
        <img src="http://placehold.it/130x130">
        <div id="bannerText_2">Img 3</div>
      </a>
    </li>
  </ul>
</div>

关于css - 在图像上叠加文本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46042547/

相关文章:

ffmpeg - 高效的命令行来裁剪视频,覆盖另一个裁剪并使用 ffmpeg 缩放结果

javascript - 当鼠标悬停在图像上方时,我试图更改图像的 src 属性。这个 JQuery 代码有什么原因不能工作吗?

css - 为什么我的 css 网格在 Chrome 中不工作(在所有其他浏览器中工作)

javascript - 文本选择(准备使用剪贴板操作)

javascript - 根据 cookie 的存在突出显示按钮

html - 文本覆盖不使用 flexbox 调整大小

jquery - 为什么 float :right not working in css3?

ios - 如何设计和显示 UIView 覆盖层

javascript - 可以跟踪悬停在透明 div 上而不让 div 影响它覆盖的任何元素吗?

C# 鼠标在 pictureBox 上的位置