RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 562680
Accepted
Yuri
Yuri
Asked:2020-09-04 19:01:15 +0000 UTC2020-09-04 19:01:15 +0000 UTC 2020-09-04 19:01:15 +0000 UTC

Smooth Change (Animation) Svg 路径 D 坐标

  • 772

你好!

可用svg path坐标:

M 8,21 L 12,21 L 17,26 L 17,10 L 12,15 L 8,15 L 8,21 z M 19,14 L 19,22 C 20.48,21.32 21.5,19.77 21.5,18 C 21.5,16.26 20.48,14.74 19,14 z M 19,11.29 C 21.89,12.15 24,14.83 24,18 C 24,21.17 21.89,23.85 19,24.71 L 19,26.77 C 23.01,25.86 26,22.28 26,18 C 26,13.72 23.01,10.14 19,9.23 L 19,11.29 z

单击时如何使坐标svg path平滑地更改为这些坐标:

M 8,21 L 12,21 L 17,26 L 17,10 L 12,15 L 8,15 L 8,21 Z M 19,14 L 19,22 C 20.48,21.32 21.5,19.77 21.5,18 C 21.5,16.26 20.48,14.74 19,14 Z

提前致谢。

javascript
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Yuri
    2020-09-07T02:52:07Z2020-09-07T02:52:07Z

    用 jQuery 解决这个问题:

    $.prototype.animatePathD = function(d, o) {
      // Подстраиваем под разные браузера
      var i = $('body *').length;
      $('body').append('<svg id="animatepathd' + i + '" style="display:none"><path d="' + d + '"></svg>');
      d = $('#animatepathd' + i + ' path').attr('d');
      $('#animatepathd' + i).remove();
    
      var e = this,
        d = {
          primary: {
            frame: $(e).attr('d').replace(/\ \-[0-9.]+/g, ' {n}').replace(/[0-9.]+/g, '{n}'),
            coord: $(e).attr('d').replace(/[^0-9-.]+/g, ',').replace(/([0-9.]+)\-([0-9.]+)/g, '$1,$2').replace(/^\,(.+)\,$/, '$1').split(',')
          },
          final: {
            frame: d.replace(/\ \-[0-9.]+/g, ' {n}').replace(/[0-9.]+/g, '{n}'),
            coord: d.replace(/[^0-9-.]+/g, ',').replace(/([0-9.]+)\-([0-9.]+)/g, '$1,$2').replace(/^\,(.+)\,$/, '$1').split(',')
          }
        },
        opt = o;
      if (opt == undefined) {
        opt = {
          duration: 1000,
          easing: 'linear'
        };
      } else if (/^\d+$/.exec(opt) != null) {
        opt = {
          duration: opt,
          easing: 'linear'
        };
        if (opt.duration == undefined || /^\d+$/.exec(opt.duration) == null) {
          opt.duration = 1000
        };
      } else {
        if (opt.duration == undefined || /^\d+$/.exec(opt.duration) == null) {
          opt.duration = 1000
        };
        if (opt.easing != 'swing' && opt.easing != 'linear') {
          opt.easing = 'linear'
        };
      };
      if (d.primary.frame == d.final.frame) {
        var funPoint = {
          primary: {},
          final: {},
          list: '',
          frame: "'" + d.final.frame + "'"
        };
        for (var i = 0; i < d.primary.coord.length; i++) {
          funPoint.primary['c' + i] = d.primary.coord[i];
          funPoint.final['c' + i] = d.final.coord[i];
          funPoint.list = ', c' + i;
          if (d.primary.coord.length != 0) {
            funPoint.frame = funPoint.frame.replace(/\{n\}/, "'+obj.elem.c" + i + "+'")
          } else {
            funPoint.frame = funPoint.frame.replace(/\{n\}/, "'+c" + i + "+'")
          };
        };
        funPoint.list = funPoint.list.replace(/^\,\ (.+)$/, '$1');
        $(funPoint.primary).animate(funPoint.final, {
          duration: opt.duration,
          easing: opt.easing,
          step: function(c0, obj) {
            $(e).attr('d', eval(funPoint.frame));
          }
        });
      } else {
        console.error('Frameworks coordinates do not match!');
      };
    };
    

    它是这样开始的:
    $(svg path).animatePathD('coordinates', opt);

    坐标- 新坐标;
    opt - 动画执行速度或执行选项。它只需要 2 个参数:duration(执行速度;只接受数字;默认 - 1000)和easing(动画类型;需要两个参数:linear 和 swing;默认 - linear);

    外部编辑器示例: https ://jsfiddle.net/yuri_spivak/ws4xknot/
    网站示例:

    $.prototype.animatePathD = function(d, o) {
      // Подстраиваем под разные браузера
      var i = $('body *').length;
      $('body').append('<svg id="animatepathd' + i + '" style="display:none"><path d="' + d + '"></svg>');
      d = $('#animatepathd' + i + ' path').attr('d');
      $('#animatepathd' + i).remove();
    
      var e = this,
        d = {
          primary: {
            frame: $(e).attr('d').replace(/\ \-[0-9.]+/g, ' {n}').replace(/[0-9.]+/g, '{n}'),
            coord: $(e).attr('d').replace(/[^0-9-.]+/g, ',').replace(/([0-9.]+)\-([0-9.]+)/g, '$1,$2').replace(/^\,(.+)\,$/, '$1').split(',')
          },
          final: {
            frame: d.replace(/\ \-[0-9.]+/g, ' {n}').replace(/[0-9.]+/g, '{n}'),
            coord: d.replace(/[^0-9-.]+/g, ',').replace(/([0-9.]+)\-([0-9.]+)/g, '$1,$2').replace(/^\,(.+)\,$/, '$1').split(',')
          }
        },
        opt = o;
      if (opt == undefined) {
        opt = {
          duration: 1000,
          easing: 'linear'
        };
      } else if (/^\d+$/.exec(opt) != null) {
        opt = {
          duration: opt,
          easing: 'linear'
        };
        if (opt.duration == undefined || /^\d+$/.exec(opt.duration) == null) {
          opt.duration = 1000
        };
      } else {
        if (opt.duration == undefined || /^\d+$/.exec(opt.duration) == null) {
          opt.duration = 1000
        };
        if (opt.easing != 'swing' && opt.easing != 'linear') {
          opt.easing = 'linear'
        };
      };
      if (d.primary.frame == d.final.frame) {
        var funPoint = {
          primary: {},
          final: {},
          list: '',
          frame: "'" + d.final.frame + "'"
        };
        for (var i = 0; i < d.primary.coord.length; i++) {
          funPoint.primary['c' + i] = d.primary.coord[i];
          funPoint.final['c' + i] = d.final.coord[i];
          funPoint.list = ', c' + i;
          if (d.primary.coord.length != 0) {
            funPoint.frame = funPoint.frame.replace(/\{n\}/, "'+obj.elem.c" + i + "+'")
          } else {
            funPoint.frame = funPoint.frame.replace(/\{n\}/, "'+c" + i + "+'")
          };
        };
        funPoint.list = funPoint.list.replace(/^\,\ (.+)$/, '$1');
        $(funPoint.primary).animate(funPoint.final, {
          duration: opt.duration,
          easing: opt.easing,
          step: function(c0, obj) {
            $(e).attr('d', eval(funPoint.frame));
          }
        });
      } else {
        console.error('Frameworks coordinates do not match!');
      };
    };
    
    $(function() {
      $('#button').click(function() {
        if ($('#button.-pause').length == 1 && $('#button.-play').length == 0) {
          $('#button svg path').animatePathD('M 12,26 16,26 16,10 12,10 z M 21,26 25,26 25,10 21,10 z', {
            duration: 150,
            easing: 'linear'
          });
          $('#button').removeClass('-pause');
          $('#button').addClass('-play');
        } else {
          $('#button svg path').animatePathD('M 12,26 18.5,22 18.5,14 12,10 z M 18.5,22 25,18 25,18 18.5,14 z', 150);
          $('#button').removeClass('-play');
          $('#button').addClass('-pause');
        };
        return false;
      });
    });
    @import url('data:text/css;charset=UTF-8,body { font-family: Tahoma, sans-serif; font-size: 0.8rem; } a {display: inline-block;color: #427fed;cursor: pointer;text-decoration: none;margin-right:5px;} a:hover {text-decoration: underline;} button { -webkit-padding-end: 10px; -webkit-padding-start: 10px; min-height: 2em; min-width: 4em; padding-bottom: 1px; -webkit-appearance: none; -webkit-user-select: none; background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 2px; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); color: #444; font: inherit; margin: 0 1px 0 0; outline: none; text-shadow: 0 1px 0 rgb(240, 240, 240); } button:hover { background-image: -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); border-color: rgba(0, 0, 0, 0.3); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); color: black; } button:active { background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); box-shadow: none; text-shadow: none; } button:focus { -webkit-transition: border-color 200ms; border-color: rgb(77, 144, 254); outline: none; } select { -webkit-padding-end: 20px; -webkit-padding-start: 6px; background-position: right center; background-repeat: no-repeat; min-height: 2em; min-width: 4em; padding-bottom: 0; -webkit-user-select: none; background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 2px; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); color: #444; font: inherit; margin: 0 1px 0 0; outline: none; text-shadow: 0 1px 0 rgb(240, 240, 240); } select:hover { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAQAAACxSAwfAAAAUklEQ%E2%80%A6BbClcIUcSAw21QhXxfIIrwKAMpfNsEUYRXGVCEFc6CQwBqq4CCCtU4VgAAAABJRU5ErkJggg==), -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); border-color: rgba(0, 0, 0, 0.3); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); color: black; } select:active { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAQAAACxSAwfAAAAUklEQ%E2%80%A6BbClcIUcSAw21QhXxfIIrwKAMpfNsEUYRXGVCEFc6CQwBqq4CCCtU4VgAAAABJRU5ErkJggg==), -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); box-shadow: none; text-shadow: none; } select:focus { -webkit-transition: border-color 200ms; border-color: rgb(77, 144, 254); outline: none; }');
    
    #button {
      min-width: auto;
      padding: 3px 3px 0 1px;
      cursor: pointer;
    }
    <script src="https://code.jquery.com/jquery-3.1.1.js"></script>
    
    <button id="button" class="-pause">
      <svg width="36" height="36" viewBox="0 0 36 36">
        <path d="M 12,26 18.5,22 18.5,14 12,10 z M 18.5,22 25,18 25,18 18.5,14 z"></path>
      </svg>
    </button>

    • 10
  2. Best Answer
    Yuri
    2020-02-26T19:43:51Z2020-02-26T19:43:51Z

    使用 SVG 动画的解决方案:

    为此,我们需要在具有必要坐标的路径中创建两个动画,当单击按钮时,脚本将启动其中一个动画

    网站示例:

    $(function() {
      $('#button').click(function() {
        if ($('#button.-pause').length == 1 && $('#button.-play').length == 0) {
          $('#button svg path .button-play')[0].beginElement();
          $('#button').removeClass('-pause');
          $('#button').addClass('-play');
        } else {
          $('#button svg path  .button-pause')[0].beginElement();
          $('#button').removeClass('-play');
          $('#button').addClass('-pause');
        };
        return false;
      });
    });
    @import url('data:text/css;charset=UTF-8,body { font-family: Tahoma, sans-serif; font-size: 0.8rem; } a {display: inline-block;color: #427fed;cursor: pointer;text-decoration: none;margin-right:5px;} a:hover {text-decoration: underline;} button { -webkit-padding-end: 10px; -webkit-padding-start: 10px; min-height: 2em; min-width: 4em; padding-bottom: 1px; -webkit-appearance: none; -webkit-user-select: none; background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 2px; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); color: #444; font: inherit; margin: 0 1px 0 0; outline: none; text-shadow: 0 1px 0 rgb(240, 240, 240); } button:hover { background-image: -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); border-color: rgba(0, 0, 0, 0.3); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); color: black; } button:active { background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); box-shadow: none; text-shadow: none; } button:focus { -webkit-transition: border-color 200ms; border-color: rgb(77, 144, 254); outline: none; } select { -webkit-padding-end: 20px; -webkit-padding-start: 6px; background-position: right center; background-repeat: no-repeat; min-height: 2em; min-width: 4em; padding-bottom: 0; -webkit-user-select: none; background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 2px; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); color: #444; font: inherit; margin: 0 1px 0 0; outline: none; text-shadow: 0 1px 0 rgb(240, 240, 240); } select:hover { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAQAAACxSAwfAAAAUklEQ%E2%80%A6BbClcIUcSAw21QhXxfIIrwKAMpfNsEUYRXGVCEFc6CQwBqq4CCCtU4VgAAAABJRU5ErkJggg==), -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); border-color: rgba(0, 0, 0, 0.3); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); color: black; } select:active { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAQAAACxSAwfAAAAUklEQ%E2%80%A6BbClcIUcSAw21QhXxfIIrwKAMpfNsEUYRXGVCEFc6CQwBqq4CCCtU4VgAAAABJRU5ErkJggg==), -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); box-shadow: none; text-shadow: none; } select:focus { -webkit-transition: border-color 200ms; border-color: rgb(77, 144, 254); outline: none; }');
    
    #button {
      min-width: auto;
      padding: 3px 3px 0 1px;
      cursor: pointer;
    }
    <script src="https://code.jquery.com/jquery-3.1.1.js"></script>
    
    <button id="button" class="-pause">
      <svg width="36" height="36" viewBox="0 0 36 36">
        <path d="M 12,26 18.5,22 18.5,14 12,10 z M 18.5,22 25,18 25,18 18.5,14 z">
          <animate class="button-pause" attributeName="d" attributeType="XML" dur="0.15s" begin="none" fill="freeze" from="M 12,26 16,26 16,10 12,10 z M 21,26 25,26 25,10 21,10 z" to="M 12,26 18.5,22 18.5,14 12,10 z M 18.5,22 25,18 25,18 18.5,14 z" />
          <animate class="button-play" attributeName="d" attributeType="XML" dur="0.15s" begin="none" fill="freeze" from="M 12,26 18.5,22 18.5,14 12,10 z M 18.5,22 25,18 25,18 18.5,14 z" to="M 12,26 16,26 16,10 12,10 z M 21,26 25,26 25,10 21,10 z" />
        </path>
      </svg>
    </button>

    • 6
  3. Yuri
    2020-02-25T21:54:56Z2020-02-25T21:54:56Z

    使用标准动画的脚本版本svg:

    $.prototype.animatePathD = function(d) {
      var e = this,
          animate = $(e).find('animate[data-animatePathD]');
      if(animate.length){
        animate.attr({
          'attributeName': 'd', 
          'attributeType': 'XML',
          'from': animate.attr('to') || $(e).attr('d'),
          'to': d,
          'fill': 'freeze'
        });
        animate[0].beginElement();
      };
    };
    

    发射:

    1. 我们向path元素添加animate一个属性data-animatePathD和所有必要的属性

    例子:

    <path>
      <animate data-animatePathD dur="0.15s" begin="none" />
    </path>
    
    1. 在JS函数中,我们用函数改变坐标:$(svg path).animatePathD('coordinates');

    svg 路径- 路径元素的路径;
    坐标- 新坐标;

    网站示例:

    $.prototype.animatePathD = function(d) {
      var e = this,
          animate = $(e).find('animate[data-animatePathD]');
      if(animate.length){
        animate.attr({
          'attributeName': 'd', 
          'attributeType': 'XML',
          'from': animate.attr('to') || $(e).attr('d'),
          'to': d,
          'fill': 'freeze'
        });
        animate[0].beginElement();
      };
    };
    
    $(function() {
      $('#button').click(function() {
        if ($('#button.-pause').length == 1 && $('#button.-play').length == 0) {
          $('#button svg path').animatePathD('M 12,26 16,26 16,10 12,10 z M 21,26 25,26 25,10 21,10 z');
          $('#button').removeClass('-pause');
          $('#button').addClass('-play');
        } else {
          $('#button svg path').animatePathD('M 12,26 18.5,22 18.5,14 12,10 z M 18.5,22 25,18 25,18 18.5,14 z');
          $('#button').removeClass('-play');
          $('#button').addClass('-pause');
        };
        return false;
      });
    });
    @import url('data:text/css;charset=UTF-8,body { font-family: Tahoma, sans-serif; font-size: 0.8rem; } a {display: inline-block;color: #427fed;cursor: pointer;text-decoration: none;margin-right:5px;} a:hover {text-decoration: underline;} button { -webkit-padding-end: 10px; -webkit-padding-start: 10px; min-height: 2em; min-width: 4em; padding-bottom: 1px; -webkit-appearance: none; -webkit-user-select: none; background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 2px; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); color: #444; font: inherit; margin: 0 1px 0 0; outline: none; text-shadow: 0 1px 0 rgb(240, 240, 240); } button:hover { background-image: -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); border-color: rgba(0, 0, 0, 0.3); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); color: black; } button:active { background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); box-shadow: none; text-shadow: none; } button:focus { -webkit-transition: border-color 200ms; border-color: rgb(77, 144, 254); outline: none; } select { -webkit-padding-end: 20px; -webkit-padding-start: 6px; background-position: right center; background-repeat: no-repeat; min-height: 2em; min-width: 4em; padding-bottom: 0; -webkit-user-select: none; background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); border: 1px solid rgba(0, 0, 0, 0.25); border-radius: 2px; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); color: #444; font: inherit; margin: 0 1px 0 0; outline: none; text-shadow: 0 1px 0 rgb(240, 240, 240); } select:hover { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAQAAACxSAwfAAAAUklEQ%E2%80%A6BbClcIUcSAw21QhXxfIIrwKAMpfNsEUYRXGVCEFc6CQwBqq4CCCtU4VgAAAABJRU5ErkJggg==), -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); border-color: rgba(0, 0, 0, 0.3); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); color: black; } select:active { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAQAAACxSAwfAAAAUklEQ%E2%80%A6BbClcIUcSAw21QhXxfIIrwKAMpfNsEUYRXGVCEFc6CQwBqq4CCCtU4VgAAAABJRU5ErkJggg==), -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); box-shadow: none; text-shadow: none; } select:focus { -webkit-transition: border-color 200ms; border-color: rgb(77, 144, 254); outline: none; }');
    
    #button {
      min-width: auto;
      padding: 3px 3px 0 1px;
      cursor: pointer;
    }
    <script src="https://code.jquery.com/jquery-3.1.1.js"></script>
    
    <button id="button" class="-pause">
      <svg width="36" height="36" viewBox="0 0 36 36">
        <path d="M 12,26 18.5,22 18.5,14 12,10 z M 18.5,22 25,18 25,18 18.5,14 z">
          <animate data-animatePathD dur="0.15s" begin="none" />
        </path>
      </svg>
    </button>

    • 3

相关问题

Sidebar

Stats

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

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +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
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +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