Jump to content

Igor Schnaider

Expert
  • Posts

    825
  • Joined

  • Days Won

    81

Posts posted by Igor Schnaider

  1. Грубо говоря, потому что new просто создает новый объект на основе конструктора, а Object.create – с указанием прототипа.

    В первом случае в объекте tom инициализируются свойства name, age и gender, но у него не будет определен метод greet.

    // it's ok
    tom.name;
    tom.age;
    tom.gender;
    
    // but
    Person.greet.call(tom);

    Во втором случае (Object.create) метод greet будет найден в цепочке наследования (у прототипа).

  2. 31.12.2020 в 21:15, CrystalCrystal сказал:

    Это в справочниках пишут: "осуждается в HTML5, взамен используйте свойства CSS".

    Ну старые версии HTML вообще содержали много презентационных элементов, которые со временем заменили соответствующими CSS свойствами (типа <i>, <b> и все такое). Они были исключительно про представление, не про значение. Здесь явно та же история, только речь про атрибут. Однако с упорядоченным списком у атрибута type помимо представления имеется и семантика. Предположу, что в этом причина, почему для <ul> он obsolete, а для <ol> – нет.

    • Thanks 1
  3. Именно в этом примере ничего не делает. В вашей callback функции контекст this не используется вообще никак, поэтому thisArg ни на что не влияет.

    Вот, сравните:

    const arr1 = ['a', 'b', 'c'];
    const arr2 = [1, 2, 3];
    
    function each(arr, cb, ctx) {
      for (let i = 0, l = arr.length; i < l; i++) {
        cb.call(ctx, arr[i], i, arr);
      }
    };
    
    const cb = function(item, i, arr) {
      console.log(this[i] + item);
    }
    
    each(arr1, cb, arr1); // "aa bb cc"
    each(arr1, cb, arr2); // "1a 2b 3c"

    p.s. Эта cb() функция только для примера здесь. Смысла в такой реализации, конечно, нет.

    • Like 1
  4. `Array.prototype.slice` – не мутирующий метод. Он не изменят массив, на котором вызывается, а возвращает новый. В примерах, где вы присваиваете этот новый массив, в цикле обхода по-прежнему обращаетесь к оригинальному, вот и вся проблема.

  5. Ну BEM – это вообще в целом про компонентный подход. Это примерно то, как мы сейчас все на реакте или вьюхе делаем. Рассматривать BEM только как соглашение по наименованию неправильно.

    Кстати, буквально недавно Гриненко на стриме как раз об этом рассказывал (ютуб).

  6. Ну вообще, здесь имеет смысл смотреть в сторону связки представления с моделью данных. По-хорошему стоит использовать какую-нибудь библиотеку с поддержкой data-binding.

    Я тут набросал, чтобы идею передать, не для прода))

  7. 22 часа назад, torsar сказал:

    Можно ли блок (div) сверстать так,  как на изображении

    (смотрите вложение). Выделено красным квадратом.

    Чтоб div был конусом с закругленным основанием.

    Не надо себе задачу усложнять. Целиком всю картинку на фон ставьте и вращайте целым блоком ее. Вращение текстовых блоков компенсируйте отрицательным вращением вокруг своей оси.

  8. Можете попробовать использовать пользовательские свойства:

    .component {
      border: 1px solid var(--theme-main-color);
    }
    
    .component_type_warning {
      --theme-main-color: red;
    }
    
    .component_type_success {
      --theme-main-color: green;
    }

     

  9. 10 часов назад, torsar сказал:

    Нужно именно без js крутить, средствами css3.

    Крутить в смысле, чтобы пользователь мог с ней взаимодействовать? Без JS, как написали, никак. Если просто повернуть в стилях, без динамики, то смотрите CSS transforms.

  10. О том, как браузер работает с DOM, CSSOM и скриптами, как рисует страницу и что останавливает отрисовку, а что нет, можете почитать, например, тут и тут (там вообще много всего полезного, так что можно весь раздел по порядку).

    По поводу выполнения: если код не асинхронный, то да, будет выполняться сразу и пока не выполнится и не освободит очередь, не отдаст управление другим (асинхронным вызовам или всяким событийным колбэкам).

    p.s. У ноды нормальная дока, читайте там (вот про блокирующие и неблокирующие вызовы, событийный цикл). И статей в инете про внутренности работы NodeJS тоже полно, не ленитесь искать самостоятельно.

  11. 56 минут назад, Delat сказал:

    Как высчитать пропорции для border-radius в %?

    Не в %, а в тех же em/rem. По-нормальному, внутренний радиус должен быть чуть меньше внешнего, но для простоты я взял равный высоте.

    https://codepen.io/anon/pen/JabaKr

  12. Все размеры кнопки, в том числе border-radius, можно привязать к размеру шрифта для пропорционального масштабирования.

    То, что много стилей в результате, в данном случае не страшно. Для псевдоэлемента не указывайте фиксированные размеры:

    button:before {
      content: '';
    
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
    
      margin: 10px;
      /* or just top, right, bottom, left: 10px; without margin */
    
      background-color: #fff;
    
      border-radius: inherit;
    }

     

  13. Ну если вы просто использовали глифы в своих стилях, что вам мешает точно так же использовать SVG – меняйте через background.

    P. S. На их сайте вижу выбор между Font+CSS и SVG+JS.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy