RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 983412
Accepted
zeni1agent
zeni1agent
Asked:2020-05-20 16:14:27 +0000 UTC2020-05-20 16:14:27 +0000 UTC 2020-05-20 16:14:27 +0000 UTC

这段代码可以缩短吗?

  • 772

我可以以某种方式缩短此代码而不会失去其功能吗?

 // Перевод в проценты
  function per(num, par) {
    return Number(num / 100 * par);
  }

  var block_size = 200;
  var block_sped = 600;
 //Анимацыя вперед
  function ani_show(sped, name) {
      $(name).animate({ height: (per(block_size, 40)) + 'px'}, per(sped, 90),"linear", (function(){ 
        $(name).animate({ height: (block_size) + 'px'},sped, "linear",(function(){   }));
      }));
  }
 //Анимацыя назад
function ani_none(sped, name, name2) {
  $(name).animate({ height: (block_size) + 'px'},0, "linear",(function(){ 
    $(name).animate({ height: (per(block_size, 80)) + 'px'},per(sped, 10),"linear", (function(){
      $(name).animate({ height: (0) + 'px'},per(sped, 50), "linear",(function(){ 
        ani_show(sped, name2);
      }));
    }));
  }));
}



$( ".but1" ).click(function() {
  var check1_1 =  parseInt($(".block2").css("height"));
  var check2_1 =  parseInt($(".block3").css("height"));
  if(check1_1 == block_size){
    ani_none(block_sped, ".block2", ".block1");
  }
  if(check2_1 == block_size){
    ani_none(block_sped, ".block3", ".block1");
  } 
});

$( ".but2" ).click(function() {
  var check1_2 =  parseInt($(".block1").css("height"));
  var check2_2 =  parseInt($(".block3").css("height"));
  if(check1_2 == block_size){
    ani_none(block_sped, ".block1", ".block2");
  }
  if(check2_2 == block_size){
    ani_none(block_sped, ".block3", ".block2");
  } 
});

$( ".but3" ).click(function() {
  var check1_3 = parseInt( $(".block1").css("height"));
  var check2_3 = parseInt( $(".block2").css("height"));
  if(check1_3 == block_size){
    ani_none(block_sped, ".block1", ".block3");
  }
  if(check2_3 == block_size){
    ani_none(block_sped, ".block2", ".block3");
  } 
});
div{
  background-color:#00fff0;
  overflow:hidden;
  font-size:30px;
  height: 0px; 
}

.block1{
  height: 200px; 
}
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<a class="but1">but1</a>
<a class="but2">but2</a>
<a class="but3">but3</a>
<div class="block1">text1</div>
<div class="block2">text2</div>
<div class="block3">text3</div>

css
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. zeni1agent
    2020-05-20T18:27:56Z2020-05-20T18:27:56Z

    好吧,我可以用纯 css 做到这一点

    div{
      background-color:#00fff0;
      overflow:hidden;
      font-size:30px;
      height: 0px; 
      animation-duration: 3s;
      animation-timing-function: linear;  
      animation-iteration-count: 1; 
      animation-name:revers ;
    }
    
    .but1:checked ~ .block1{
       
       height: 200px; 
      
      animation-duration: 3s;
      animation-timing-function: linear;  
      animation-iteration-count: 1; 
      animation-name:show;
    }
    
    
    .but2:checked ~ .block2{
     
      
       height: 200px; 
      
      animation-duration: 3s;
      animation-timing-function: linear;  
      animation-iteration-count: 1; 
      animation-name:show;
    }
    
    .but3:checked ~ .block3{
      color:#f0f;
      
       height: 200px; 
      
      animation-duration: 3s;
      animation-timing-function: linear;  
      animation-iteration-count: 1; 
      animation-name:show;
    }
    
    
    @keyframes  show {
    0% { max-height: 0px; }	
    50% { max-height: 0px; }
    70% { max-height: 70px; }
    100% { max-height: 200px; }
    }
    
    @keyframes  revers {
    100% { height: 0px; }	
    50% { height: 0px; }
    30% { height: 70px; }
    0% { height: 200px; }
    }
    <input type="radio" class="but1" checked name="rt">
    <input type="radio" class="but2" name="rt">
    <input type="radio" class="but3" name="rt">
    
    <div class="block1">text1</div>
    <div class="block2">text2</div>
    <div class="block3">text3</div>
    
    
     

    • 3
  2. Best Answer
    OPTIMUS PRIME
    2020-05-20T17:46:50Z2020-05-20T17:46:50Z

    缩短(重写):

    提琴手

    var timeout; /* Сюда будет сохраняться таймаут... */
    $('.but').on('click', function(){
      clearTimeout(timeout);/*...чтобы перед каждым кликом удалить его */
      $('.but').removeClass('active');
      $(this).addClass('active');
    
      $('.block').removeClass('show');
      /* Находим номер кликнутой кнопки */
      var index = $(this).index('.but');
      timeout = setTimeout( function(){
        /* По этому же номеру открываем нужную вкладку*/
        $('.block').eq( index ).addClass('show');
      }, 1000);   
      /* Только не сразу, а через секунду - когда предыдущая успеет закрыться */
      /* Удаление таймаута вначале клика было необходимо, иначе если быстро кликать на несколько 
      кнопок - сразу откроются все (от оставшегося таймаута с предыдущего клика) */ 
    });
    .block {
      /* transition будет работать только для height */
      transition: height 1s linear; 
      height: 0px;
      background-color:#00fff0;
      overflow:hidden;
      font-size:30px;
    }
    
    .show {
      height: 200px;
    }
    
    .but {
      display: inline-block; 
      border: 2px solid #236; cursor: pointer;
      padding: 3px 8px; margin: 0 4px 7px 0;
    }
    .active {background-color: #236; color: white;}
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <a class="but active">but1</a>
    <a class="but">but2</a>
    <a class="but">but3</a>
    
    <div class="block show">text1</div>
    <div class="block">text2</div>
    <div class="block">text3</div>

    如果在此类任务中您亲自戳每个按钮的代码,那么就会出现问题)然后您想重做 4 个按钮的选项并且厌倦了重写。

    昨天我提供了一个链接并没有白费)JavaScript 可切换选项卡 - 选项卡(和一点 CSS) - 在第二段中,一个类似的示例。

    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5