【问题标题】:Text appearing on an image when hover, javascript悬停时出现在图像上的文本,javascript
【发布时间】:2018-04-01 03:18:47
【问题描述】:

我正在为我在大学学习的编码课程创建一个网站,其中一个要求是使用 JavaScript。我已添加它,以便当您将鼠标悬停在网站上的图像上时,文本将出现在图像上。但是,我想让文本变成白色并且希望它居中,我已经尝试了所有方法,但文本不会从每个图像的左上角移动。有小费吗?

      $('.image-container').on('mouseenter', function(){
       $(this).children('div').show();
      });

      $('.image-container').on(
        'mouseleave',
        function(){
          $(this).children('div').hide();
        }
      );
      div#image-wrap {
       background-color: white;
       padding: 0;
       margin: auto;
       text-align: center;
      }
      div.image-column {
       width: 31.5%;
       background-color: white;
       display: inline-block;
       margin: 0px;
      }
      .image-container img {
        width: 100%;
        transition: .5s ease;
      }
      .image-container:hover img {
        opacity: .6;
        transition: .5s ease;
      }
      #img-name {
       position: absolute;
       display: none;
       transition: .5s ease;
      }
      #img-name:hover {
       opacity: 1;
       transition: .5s ease;
      }
      p {
       margin: 0px;
       font-size: 20px;
       text-align: justify;
       font-size: 1.5vw;
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="image-wrap">
       <div class="image-column" id="col-1">
        <div class="image-container">
         <div id="img-name">
          <p>Pier To Pier, Brighton Pier</p>
         </div>
         <img src="images/piertopier.jpg.JPG">
        </div>
        <div class="image-container">
         <div id="img-name">
          <p>Looking Back, Brighton Beach</p>
         </div>
         <img src="images/lookingback.jpg.JPG">
        </div>
        <div class="image-container">
         <div id="img-name">
          <p>Heart Shaped Flocks, Brighton Pier</p>
         </div>
         <img src="images/heartshapedflocks.jpg.JPG">
        </div>
       </div>
      </div>

【问题讨论】:

    标签: javascript html css hover


    【解决方案1】:

    要使文本居中,您需要将文本容器拉伸并具有与图像相同的宽度,您可以通过将父级relativeposition 和文本容器absoluteleft:0right:0,并将文本居中使用 text-align:center 并将其设为白色,嗯 .. color:#fff

    要使其垂直居中,请在容器上使用display:flex,在文本上使用self-align:center

    (我添加背景红色只是为了显示文本,当您放置图像时将其删除)

    div#image-wrap {
           background-color: white;
           padding: 0;
           margin: auto;
           text-align: center;
           
          }
          div.image-column {
           width: 31.5%;
           background-color: white;
           display: inline-block;
           margin: 0px;
          }
          .image-container{
              position: relative;
              display: flex;
              margin-top: 10px;
              text-align:center;
          }
          .image-container img {
            width: 100%;
            transition: .5s ease;
          }
          .image-container:hover img {
            opacity: .6;
            transition: .5s ease;
          }
          #img-name {
           position: absolute;
           left: 0;  /* stretch the text container */
           right: 0; /* stretch the text container */
           
           transition: .5s ease;
           display: flex;
           align-self: center;
           text-align: center;
          }
          #img-name:hover {
           opacity: 1;
           transition: .5s ease;
          }
          p {
           margin: 0px;
           font-size: 20px;
           text-align: center; /* to make the text in the center */
           color: #fff; /* to make the text white */
           font-size: 1.5vw;
           width: 100%;
           text-shadow: 0 0 2px #000;
           z-index: 999;
         }
    <div id="image-wrap">
           <div class="image-column" id="col-1">
            <div class="image-container">
             <div id="img-name">
              <p>Pier To Pier, Brighton Pier</p>
             </div>
             <img src="https://loremflickr.com/100/100/dog">
            </div>
            <div class="image-container">
             <div id="img-name">
              <p>Looking Back, Brighton Beach</p>
             </div>
             <img src="https://loremflickr.com/100/100/cat">
            </div>
            <div class="image-container">
             <div id="img-name">
              <p>Heart Shaped Flocks, Brighton Pier</p>
             </div>
             <img src="https://loremflickr.com/100/100/flower">
            </div>
           </div>
          </div>

    【讨论】:

    • 谢谢!好的,所以文本在图像的顶部居中,但它仍然没有出现在图像的中心?
    • 您希望它垂直居中吗?我刚刚为此编辑了我的答案
    • 嗯,我不确定,目前我有我的图像,文本居中,但位于图像的最顶部,而不是直接位于图像的中心,我会喜欢
    • 谢谢!你帮了很多忙,唯一的另一件事是,当我将鼠标悬停时,它会模糊图像并使其更加不透明,但是当我将文本设置为白色时,可能不会出现,因为它的颜色与越不透明的白化图像。有没有办法解决这个问题?因为我真的希望文字是白色的!!
    • 好吧..你可以将text-shadowz-index:999添加到p,(更新sn-p)
    【解决方案2】:
      p {
       margin: 0px;
       font-size: 20px;
       text-align: center !important;
       font-size: 1.5vw;
       color: white !important;
     }
    

    【讨论】:

    • 请解释您的解决方案。
    【解决方案3】:

    设置相对于图像容器类的位置。为#img-name 添加 top:50%, left:0, right:0。最后一个删除 text-align: justify from p。 您可以轻松添加白色,但如果您将颜色添加到白色,它将不可见。

          $('.image-container').on('mouseenter', function(){
           $(this).children('div').show();
          });
    
          $('.image-container').on(
            'mouseleave',
            function(){
              $(this).children('div').hide();
            }
          );
      div#image-wrap {
        background-color: white;
        padding: 0;
        margin: auto;
        text-align: center;
      }
    
      div.image-column {
        width: 31.5%;
        background-color: white;
        display: inline-block;
        margin: 0px;
      }
      .image-container{
       position:relative;
      }
      .image-container img {
        width: 100%;
        transition: .5s ease;
      }
    
      .image-container:hover img {
        opacity: .6;
        transition: .5s ease;
      }
    
      #img-name {
        position: absolute;
        display: none;
        transition: .5s ease;
        top:50%;
        left:0;
        right:0
      }
      #img-name:hover {
        opacity: 1;
        transition: .5s ease;
      }
    
      p {
        margin: 0px;
        font-size: 20px;
       
        font-size: 1.5vw;
      }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="image-wrap">
           <div class="image-column" id="col-1">
            <div class="image-container">
             <div id="img-name">
              <p>Pier To Pier, Brighton Pier</p>
             </div>
             <img src="https://i.stack.imgur.com/m2GGn.jpg">
            </div>
            <div class="image-container">
             <div id="img-name">
              <p>Looking Back, Brighton Beach</p>
             </div>
             <img src="images/lookingback.jpg.JPG">
            </div>
            <div class="image-container">
             <div id="img-name">
              <p>Heart Shaped Flocks, Brighton Pier</p>
             </div>
             <img src="https://i.stack.imgur.com/m2GGn.jpg">
            </div>
           </div>
          </div>

    【讨论】:

      猜你喜欢
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 2013-12-28
      • 2017-02-09
      • 1970-01-01
      • 2014-05-13
      • 2015-05-12
      相关资源
      最近更新 更多