【问题标题】:Div Flashing before jQuery show or hidejQuery 显示或隐藏之前的 Div 闪烁
【发布时间】:2017-07-09 20:58:02
【问题描述】:

在这个页面上:http://woocommerce-74099-288162.cloudwaysapps.com/flashing-jquery 我在页面底部有一个标签框。当您单击左侧的选项卡按钮时,应该显示的 div 在进入显示或隐藏动画之前会在页面底部闪烁。我的代码是基本的:

jQuery( document ).ready(function() {
  jQuery("#ct_div_block_121_post_13").hide(600);
});
jQuery("#ct_text_block_86_post_13").click(function(){
  jQuery("#ct_div_block_121_post_13").show(600);
  jQuery("#ct_div_block_90_post_13").hide(600);
});
jQuery("#ct_text_block_84_post_13").click(function(){
  jQuery("#ct_div_block_90_post_13").show(600);
  jQuery("#ct_div_block_121_post_13").hide(600);
});

我也尝试在隐藏的 div 上使用 css 显示 none。

感谢您的帮助。

【问题讨论】:

    标签: jquery css show-hide


    【解决方案1】:

    jquery 的优势之一是链接,我认为它会在这方面对你有所帮助

    jQuery( document ).ready(function() {
      jQuery("#ct_div_block_121_post_13").hide(600);
    });
    jQuery("#ct_text_block_86_post_13").click(function(){
      jQuery("#ct_div_block_121_post_13").show(600).jQuery("#ct_div_block_90_post_13").hide(600);
    });
    jQuery("#ct_text_block_84_post_13").click(function(){
      jQuery("#ct_div_block_90_post_13").show(600).jQuery("#ct_div_block_121_post_13").hide(600);
    });
    

    【讨论】:

    • 这会隐藏 div 但第二个 div 没有显示/被触发。
    【解决方案2】:

    “闪烁”是由于两个动画同时发生。

    如果你把第二个放在第一个的回调中,它们会按顺序发生。

    试试这个:

    jQuery( document ).ready(function() {
      jQuery("#ct_div_block_121_post_13").hide(600);
    });
    jQuery("#ct_text_block_86_post_13").click(function(){
      jQuery("#ct_div_block_90_post_13").hide(600,function(){
        jQuery("#ct_div_block_121_post_13").show(600);
      });
    });
    jQuery("#ct_text_block_84_post_13").click(function(){
      jQuery("#ct_div_block_121_post_13").hide(600,function(){
        jQuery("#ct_div_block_90_post_13").show(600);
      });
    });
    



    编辑

    既然“闪现的bug”依然存在,那就试试别的吧。

    style.css 中,将此部分注释掉(使用/**/,如下所示):

    /*
    .ct-section::after,
    .ct-section-inner-wrap::after,
    .ct-div-block::after {
      display: table;
      content: " ";
      clear: both;
      white-space: normal;
    }
    */
    

    并添加:

    .ct-section,
    .ct-section-inner-wrap,
    .ct-div-block{
      display:table;
      clear:both;
    }
    

    div 被隐藏时,伪元素:after 消失。
    The "flash" can be seen here 以 10% 的速度...变得明显。

    【讨论】:

    • 感谢您发送这个...它仍然在闪念吗?
    • 呵呵...好吧,我认为应该先隐藏。我编辑了。
    • 效果更流畅,但点击时仍有闪光。我正在使用 Chrome。
    • 我现在怀疑是伪元素:after 导致这个div 显示为表格的原因。但我不确定。你可以访问 style.css 吗?
    • 我已经 recorded this "flashy bug" 并将视频速度减慢到 10%。现在很明显了。我很确定这是由于 :after 伪元素造成的。
    猜你喜欢
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多