当前位置: 首页 > 知识库问答 >
问题:

显示子节时在父div上使用过渡展开

全弘深
2023-03-14

我有一个容器div里面有一个表单,默认情况下submit按钮是隐藏的。单击WelcomeSettingSicon按钮时,我将在submit按钮中淡出,父div将自我扩展。这个扩展就像show/hide一样的snap。我想要的是添加一个过渡,这样父div就在submit按钮的淡入开始之前,通过submit按钮的空间过渡来扩展自己。

我使用的方法是从这个答案。但是,当我将它应用到代码中时,父div在扩展时没有得到过渡。此外,在submit按钮首次淡出后,div会迅速调整到它的新位置,当我再次关闭和打开时,按钮的高度会受到open类的影响,fadeIn会松动它的效果。

此外,当我移除类'open'时,.bottom-content的父母‘不会关闭。

HTML:

<div class="col-lg-6" style="background: lightblue">
 <div class="content content-narrow">
   <div class="block">
     <div class="block-header">
       <button type="button"><i id="welcomeSettingsIcon"></i></button>
     </div>
     <div class="block-content block-content-narrow" id="welcomePanel">
       <form id="welcomeForm">
         <section class="top-content">
            // form elements <br />
            // form elements <br />
            // form elements <br />          
            // form elements
         </section>
         <section class="bottom-content">
            <button id="welcomeSubmitBtn" type="submit">Btn</button>
         </section>
       </form>
    </div>
 </div>

CSS:

.bottom-content {
  transform: scaleY(0);
  transition: transform 250ms ease-in;
  transform-origin: top;
}

.bottom-content.open {
  transform: scaleY(1);
}
.bottom-content.open #welcomeSubmitBtn {
  opacity: 1;
}

#welcomeSubmitBtn {
  margin-top: 20px;
  opacity: 0;
  transition: opacity 0.5s;
  transition-delay: 250ms;
}

jQuery:

jQuery(document).ready(function() {
    var welcomeForm = false;
    jQuery('#welcomeSettingsIcon').click(function() {
        if (welcomeForm) {
             jQuery('#welcomeSubmitBtn').css('opacity', 0);
             jQuery('#welcomeSubmitBtn').hide();
             jQuery('.bottom-content').removeClass('open'); 

             welcomeForm = false;
        } else {
             jQuery('#welcomeSubmitBtn').show();
             jQuery('#welcomeSubmitBtn').css('opacity', 1);
             jQuery('.bottom-content').addClass('open');   

             welcomeForm = true;
        }
    }
})

共有1个答案

姬欣怡
2023-03-14

我不是100%清楚你在找什么,所以让我知道如果这是接近的。我认为不需要open类,除非您真的希望在CSS中完成所有操作:

null

jQuery(document).ready(function() {
  var welcomeForm = false;

  jQuery('#welcomeSettingsIcon').click(function() {
    if (welcomeForm) {

      jQuery('#welcomeSubmitBtn').hide();
      jQuery('.bottom-content').hide();

      welcomeForm = false;

      //jQuery('#welcomeSubmitBtn').css('opacity', 0);
      //jQuery('#welcomeSubmitBtn').hide();
      //jQuery('.bottom-content').removeClass('open');

    } else {

      jQuery('.bottom-content').slideDown(2000, function() {

        jQuery('#welcomeSubmitBtn').fadeIn();
        welcomeForm = true;

        //jQuery('#welcomeSubmitBtn').show();
        //jQuery('#welcomeSubmitBtn').css('opacity', 1);
        //jQuery('.bottom-content').addClass('open');
      })
    }
  });
});
/* .bottom-content {
  transform: scaleY(0);
  transition: transform 250ms ease-in;
  transform-origin: top;
}
.bottom-content.open {
  transform: scaleY(1);
}
.bottom-content.open #welcomeSubmitBtn {
  opacity: 1;
}
#welcomeSubmitBtn {
  margin-top: 20px;
  opacity: 0;
  transition: opacity 0.5s;
  transition-delay: 250ms;
}

*/

.bottom-content {
  display: none;
  height: 60px;
}
#welcomeSubmitBtn {
  display: none;
  margin-top: 20px;
}
html prettyprint-override"><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

<div class="col-lg-6" style="background: lightblue">
  <div class="content content-narrow">
    <div class="block">
      <div class="block-header">
        <button type="button" id="welcomeSettingsIcon">Click Me
        </button>
      </div>
      <div class="block-content block-content-narrow" id="welcomePanel">
        <form id="welcomeForm">
          <section class="top-content">
            // form elements
            <br />// form elements
            <br />// form elements
            <br />// form elements
          </section>
          <section class="bottom-content">
            <button id="welcomeSubmitBtn" type="submit">Btn</button>
          </section>
        </form>
      </div>
    </div>
  </div>
</div>
 类似资料:
  • 问题内容: 在隐藏其父级Div的同时如何显示子Div?能做到吗? 我的代码如下: 问题答案: 我认为这是不可能的。 您可以使用javascript将元素拉出,或复制元素然后显示。 在jQuery中,您可以复制一个元素 然后附加到任何适当的可见元素。

  • 如何在行flex父级的开头显示两个div容器,在末尾显示第三个div容器?在下面的示例中,child-3应该位于右侧。 下面是一个包含所有孩子的快速示例,位于父项jsfiddle的开头

  • 我有一个容器div设置了宽度和高度,溢出设置为自动。在内部,有一个无序列表,其中包含导致div滚动的内容。 问题是列表本身没有扩展到容器div之外。所以当我尝试在列表的右侧添加填充时,它并不能正常工作: CSS 这里有一把小提琴说明了问题。

  • 问题内容: 我目前正在设计CSS“巨型下拉菜单”-基本上是一个常规的仅CSS下拉菜单,但其中包含不同类型的内容。 目前, 似乎CSS 3过渡不适用于’display’属性 ,即,您不能进行从到(或任何组合)的任何过渡。 当有人将鼠标悬停在顶层菜单项之一上时,是否可以通过上述示例使第二层菜单“淡入”? 我知道您可以在属性上使用过渡,但我想不出一种有效使用过渡的方法。 我也尝试过使用高度,但是那不幸地

  • 问题内容: 这就是我的jsFiddle链接 为什么没有过渡?如果我设置 然后,“ subnav”将永远不会出现(当然),但是为什么不触发不透明度转换呢?如何使过渡正常工作? 问题答案: 如您所知,仅在CSS中将该属性设置为动画时,它会覆盖和过渡。 解决方案…只是删除了属性。

  • 问题内容: 当显示其父元素时,是否有任何机制可显示子元素:无? 这种情况是隐藏选项卡上的验证错误。我想显示错误消息,即使该字段是隐藏的。 标记: CSS: 我猜这是不可能的,因为孩子没有上下文,但以防万一? 问题答案: 不,这是不可能的。隐藏该元素,因此不会显示任何子元素。 编辑: 这可能是沿着你想要的线,如果你能够从使用切换到。 使用此方法,您可以隐藏父元素的内容,但显示所需的特定内容。唯一需要