【问题标题】:Stop 'Div' from changing position 'hover'停止“Div”改变位置“悬停”
【发布时间】:2019-02-27 13:12:52
【问题描述】:

我正在尝试使用 HTML、CSS 和 Jquery 构建音频播放器。我在使用 Jquery 的“悬停”方法时遇到问题。删除“背景图像”后,似乎将 div 向下移动 - 这是为什么呢?我知道这与页面的流程有关。认为我应该从头开始重新启动音频播放器,因为它有太多问题。我应该只使用 CSS 悬停吗?

这里是直播链接site

$('.music-box').hover(function() {
  $('.music-box').css("border", "1px solid black");
  $('.music-box').css("background", "none");
  $('.player').css('display', 'block');
  $('.music-details').css('display', 'block');
  $('.buyDiv').css('display', 'block');
});
$('.music-box').mouseleave(function() {
  $('.music-box').css("border", "none");
  $('.music-box').css("background", "url('junction.jpg')");
  $('.music-box').css("background-size", "contain");
  $('.music-box').css("background-repeat", "no-repeat");
  $('.player').css('display', 'none');
  $('.music-details').css('display', 'none');
  $('.buyDiv').css('display', 'none');
});		
.junction {
  display: inline;
  padding: 2vw; 
}
.music-box {
  background: url(junction.jpg);
  background-size: contain;
  background-repeat: no-repeat;
  position: relative;
  width: 16vw;
  cursor: pointer;
  height: 30vh;
  display: inline-block;
}
.music-details {
  display: none;
  position: relative;
  top: 5vh;
  text-transform: uppercase;
  font-size: 1vh;
  font-family: 'Nunito Sans', sans-serif;
  letter-spacing: 0.5px;
  font-weight: normal;
}
.appleLink {
  height: 3vh;
  width: auto;
}
.player {
  display: none;
  position: relative;
  top: 7vh;
}
.buyDiv {
  display: none;
  height: 3vh;
  top: 9vh;
  width: auto;
  position: relative;
}
.buyList {
  position: relative;
  padding: 0;
  margin: 0;
}
.buyList li {
  display: inline;
  cursor: pointer;
}
.buyFnt {
  text-transform: uppercase;
  font-size: 1vh;
  font-family: 'Nunito Sans', sans-serif;
  letter-spacing: 0.5px;
  font-weight: normal;
  display: inline;
  cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<li class="junction">
  <div class="music-box">
    <h3 class="music-details">Junction - EP
      <br>
      <br>
      Turn Around (feat Madi Lane)
      <br>
      <br>
      My Nu Leng - 2018
    </h3>
    <audio id="player" src="tune.mp3"></audio>

    <div class="player"> 
      <button onclick="document.getElementById('player').play()"><img class="playBtn" src="playBtn.png"></button> 
      <button onclick="document.getElementById('player').pause()"><img class="stopBtn" src="stopBtn.png"></button> 
      <button onclick="document.getElementById('player').volume += 0.1"><img class="volUp" src="volUp.png"></button> </button> 
      <button onclick="document.getElementById('player').volume -= 0.1"><img class="volDown" src="volDown.png"></button> </button> 
    </div>
      <div class="buyDiv">
        <ul class="buyList">
          <li class="buyFnt">BUY</li>
          <li><button><img class="appleLink" src="apple.png"></button></li>
        </ul>
      </div>
  </div>
</li>

【问题讨论】:

  • 那么我们究竟需要将鼠标悬停在该实时站点示例上,以查看您所说的效果?因为我在任何地方都找不到它。是什么让您认为这与背景图像特别有关?尤其是考虑到你也在操作其他东西,比如边框——这更有可能影响元素的布局/尺寸。
  • “我应该只使用 CSS 悬停吗?” - 如果一开始就不需要在 JS 中做任何事情 - 那么是的,这几乎总是更可取的选择.
  • 抱歉,当您将鼠标悬停在艺术品上时,“发布”部分会出现“div”跳跃和剪辑,而不是停留在原位。

标签: jquery html css audio html5-audio


【解决方案1】:

需要做一些小改动才能使其完美。 在music box class(.music-box) css中添加float属性和background-position如下:

.music-box{
     float:left;
     background-position: center !important;
}

这在您的网站上有效,我已经在您的网站上进行了测试。

【讨论】:

  • 是的,这很好,但会改变布局。给我一些工作,谢谢。
  • @designtocode 可以根据需要用几行css修复。如果需要,我可以帮助你
  • 是的,请。多年来我一直在试图弄清楚。
  • 我认为我修复了它,将浮动左侧添加到列表项并添加填充到容器以使列表居中
  • 本杰明你能绿色检查一下这个答案吗?
【解决方案2】:

可能会受到其他 CSS/JS 的干扰。我把你的代码复制到了这里的小提琴https://jsfiddle.net/Lkm4fotd/1/

HTML

<ul class="first-row">


                        <li class="junction">
                            <div class="music-box">
                                <h3 class="music-details">Junction - EP
                                    <br>
                                    <br>
                                    Turn Around (feat Madi Lane)
                                    <br>
                                    <br>
                                    My Nu Leng - 2018
                                </h3>
                                <audio id="player" src="tune.mp3"></audio>

                                <div class="player"> 
                                  <button onclick="document.getElementById('player').play()"><img class="playBtn" src="playBtn.png"></button> 
                                  <button onclick="document.getElementById('player').pause()"><img class="stopBtn" src="stopBtn.png"></button> 
                                  <button onclick="document.getElementById('player').volume += 0.1"><img class="volUp" src="volUp.png"></button>  
                                  <button onclick="document.getElementById('player').volume -= 0.1"><img class="volDown" src="volDown.png"></button>  
                                </div>
                                    <div class="buyDiv">
                                        <ul class="buyList">
                                            <li class="buyFnt">BUY</li>
                                            <li><button><img class="appleLink" src="apple.png"></button></li>
                                        </ul>
                                    </div>
                            </div>
                        </li>

                    </ul>

CSS:你的 CSS 文件

JS:

$('.music-box').hover(function() {
    $('.music-box').css("border", "1px solid black");
    $('.music-box').css("background", "none");
    $('.player').css('display', 'block');
    $('.music-details').css('display', 'block');
    $('.buyDiv').css('display', 'block');
});
$('.music-box').mouseleave(function() {
    $('.music-box').css("border", "none");
    $('.music-box').css("background", "url('https://benjamingibbsportfolio.000webhostapp.com/junction.jpg')");
    $('.music-box').css("background-size", "contain");
    $('.music-box').css("background-repeat", "no-repeat");
    $('.player').css('display', 'none');
    $('.music-details').css('display', 'none');
    $('.buyDiv').css('display', 'none');
});    

【讨论】:

  • 好的,谢谢。我想这可能是由于图像大小或一些定位错误,我只是想不通。
  • 我可以建议把elements/js/css 一个一个的去掉,看看能不能解决。您也可以尝试更换容器 :) 祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
  • 2018-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多