jquery - CSS 箭头在 jQuery slideUp 或 slideDown 动画期间隐藏

标签 jquery css

我有一个顶部带有箭头的 div,它是使用 CSS 创建的:

.arrow_box {
    position: relative;
    display: none;
    background: #88b7d5;
    border: 4px solid #c2e1f5;
    padding: 20px;
    margin-top: 100px;
    width: 300px;
}
.arrow_box:after, .arrow_box:before {
    bottom: 100%;
    left: 50%;
    border: solid transparent;
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none;
}

.arrow_box:after {
    border-color: rgba(136, 183, 213, 0);
    border-bottom-color: #88b7d5;
    border-width: 30px;
    margin-left: -30px;
}
.arrow_box:before {
    border-color: rgba(194, 225, 245, 0);
    border-bottom-color: #c2e1f5;
    border-width: 36px;
    margin-left: -36px;
}

为了显示这个 div,我使用了一个简单的 $('.arrow_box').slideDown(); jQuery 动画。问题是当 div 动画时,箭头被隐藏,然后一旦动画完成箭头突然显示。我希望箭头在动画期间可见。

箭头使用 :before:after 伪元素显示,所以我认为 jQuery 可能在动画期间使用伪元素,但这似乎不是情况。

这是一个显示问题的 jsFiddle:http://jsfiddle.net/m9s9ouok/

最佳答案

jQuery 的 slideDown() 使用 overflow:hidden 来防止内容在元素高度动画时溢出。

我通过强制元素的溢出可见(通过使用 !important)并添加一个溢出被隐藏的内部元素而获得成功。

$(function() {
  $('a').click(function(e) {
    e.preventDefault();
    $('.arrow_box').slideDown(2000);
  });
});
.arrow_box {
  position: relative;
  display: none;
  background: #88b7d5;
  border: 4px solid #c2e1f5;
  padding: 20px;
  margin-top: 100px;
  width: 300px;
  overflow: visible!important;
}
.arrow_box .inner {
  max-height: 100%;
  overflow: hidden;
}
.arrow_box:after,
.arrow_box:before {
  bottom: 100%;
  left: 50%;
  border: solid transparent;
  content: " ";
  height: 0;
  width: 0;
  position: absolute;
  pointer-events: none;
}
.arrow_box:after {
  border-color: rgba(136, 183, 213, 0);
  border-bottom-color: #88b7d5;
  border-width: 30px;
  margin-left: -30px;
}
.arrow_box:before {
  border-color: rgba(194, 225, 245, 0);
  border-bottom-color: #c2e1f5;
  border-width: 36px;
  margin-left: -36px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Reveal</a>

<div class="arrow_box">
  <div class="inner">
    content
    <br>content
    <br>content
    <br>content
    <br>content
    <br>content
    <br>
  </div>
</div>

关于jquery - CSS 箭头在 jQuery slideUp 或 slideDown 动画期间隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31792409/

相关文章:

javascript - 使用 jQuery 淡入淡出选项显示或隐藏元素时如何防止页面跳转到顶部

javascript - 引导 Accordion 默认在桌面上显示,默认隐藏移动

javascript - 数组中所有元素的 Jquery 偏移方法,而不仅仅是第一个元素

button - 如何强制 <button> 标签显示 :inline?

css - 为什么我的导航栏标签没有包含 CSS?昨天在工作,所以我把它弄坏了?

css - 调整浏览器大小时显示右边距

jquery - 如何扩展 div 以覆盖较小屏幕上的视频并使下拉菜单响应?

JavaScript 坐标显示为大于图像宽度和高度

javascript - 如何使用 jquery 检查有效性来验证表单

php - 还有哪些可以轻松集成到 cakephp 的聊天应用程序