jquery - 如何使用 jQuery 创建导航动画

标签 jquery css

我正在尝试使用 jQuery 创建一个动画,当用户将鼠标悬停在由 ID“导航”标识的列表项上时,它允许在悬停事件上出现一个气泡。我创建了一个由 id 'navigation_blob' 标识的 div,我希望它出现在悬停的每个元素上。然而,出于某种原因,高度保持在 0。

$(document).ready(function() {
  $('<div id="navigation_blob"></div>').css({
    width: 0,
    height: $('#navigation li:first a').height() + 10
  }).appendTo('#navigation');

  $('#navigation a').hover(
    function() { // Mouse over function
      $('#navigation_blob').animate({
        width: $(this).width() + 10,
        left: $(this).position().left
      }, {
        duration: 'slow',
        easing: 'easeOutElastic',
        queue: false
      });
    },
    function() { // Mouse out function
      $('#navigation_blob').animate({
        width: $(this).width() + 10,
        left: $(this).position().left
      }, {
        duration: 'slow',
        easing: 'easeOutCirc',
        queue: false
      });
    }
  );
});
#head {
  padding-left: 20px;
}

#navigation {
  margin: 0 0 10px 0;
  padding: 0;
  list-style-type: none;
  position: relative;
  z-index: 1;
  /* overwrite base */
  float: none;
  width: 100%;
}

#navigation ul {
  margin: 0;
  padding: 0;
}

#navigation li {
  display: inline;
  margin: 0;
  padding: 0;
}

#navigation a {
  color: #015287;
  display: inline-block;
  padding: 5px;
  text-decoration: none;
}

#navigation_blob {
  top: 0;
  background-color: #c0ffee;
  position: absolute;
  z-index: -1;
  border-radius: 15px;
}

p#intro {
  clear: both;
  margin-top: 10px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="key-technical-skillsets">
  <h5>Key Technical Skill Sets</h5>
  <div id="navigation">
    <ol>
      <li><a href="#">jQuery</a></li>
      <li><a href="#">PHP</a></li>
      <li><a href="#">MySQL<a/></li>
        <li><a href="#">CSS</a></li>
      <li><a href="#">Adobe Photoshop</a></li>
      <li><a href="#">Wordpress</a></li>
    </ol>
  </div>

最佳答案

设法让它发挥作用。看这里: Jsfiddle

你必须包括jquery-ui在您的元素中获取扩展缓动选项。

添加<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script><head>部分(连同 jQuery 库)

还有。 <li><a href="#">MySQL<a/></li>不正确,改成<li><a href="#">MySQL</a></li>

让我知道它是否有效。干杯

评论后编辑

如果您希望您的列表是垂直的,并且 liwidth:auto (里面的文字)设置li{display:list-item}

然后,为了使效果垂直移动而不是水平移动(就像在之前的 fiddle 中一样),更改 JQ lefttop .

这里> left: $(this).position().lefttop: $(this).position().top (这段代码出现在2处)

附言。你已经在你的 HTML 中设置了一个 ol = 有序列表不是 ul .如果将其更改为 ul CSS 也有变化 ul而不是 ol

看这里 Verical Blob Jsfiddle

关于jquery - 如何使用 jQuery 创建导航动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39229012/

相关文章:

javascript - 使用 javascript 从另一个页面(第 3 页)刷新页面(第 1 页)

jquery - Bootstrap Carousel 不滑动

css - 为什么在 React 版本 16.8.6 中,组件中所需的 css 会影响其他组件,所有 css 都出现在 header 中而不是 chunk.css

css - 如何在 CSS 中使用 Helvetica Neue Condensed Bold?

CSS - 如何从 div 溢出到屏幕的全宽

javascript - 在没有 css 冲突的情况下加载 ajax 响应(html 内容数据)

javascript - 使用 jquery 为 html 元素文本的每个字符设置动画?

javascript - 如果语句有问题 text();

jquery - 重置bxSlider

javascript - 尝试使图像在同位素中按顺序加载和显示