Jump to content

Igor Schnaider

Expert
  • Posts

    825
  • Joined

  • Days Won

    81

Everything 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. Ну старые версии HTML вообще содержали много презентационных элементов, которые со временем заменили соответствующими CSS свойствами (типа <i>, <b> и все такое). Они были исключительно про представление, не про значение. Здесь явно та же история, только речь про атрибут. Однако с упорядоченным списком у атрибута type помимо представления имеется и семантика. Предположу, что в этом причина, почему для <ul> он obsolete, а для <ol> – нет.
  3. Вам нужно выложить код вместе с разметкой. И делайте это в песочнице, чем такой простыней. Быстрее помогут.
  4. Именно в этом примере ничего не делает. В вашей 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() функция только для примера здесь. Смысла в такой реализации, конечно, нет.
  5. На MDN в принципе неплохая документация по методам в языке, почитайте. (По существу если, по 5 элемент, не включая его.)
  6. `Array.prototype.slice` – не мутирующий метод. Он не изменят массив, на котором вызывается, а возвращает новый. В примерах, где вы присваиваете этот новый массив, в цикле обхода по-прежнему обращаетесь к оригинальному, вот и вся проблема.
  7. Ну BEM – это вообще в целом про компонентный подход. Это примерно то, как мы сейчас все на реакте или вьюхе делаем. Рассматривать BEM только как соглашение по наименованию неправильно. Кстати, буквально недавно Гриненко на стриме как раз об этом рассказывал (ютуб).
  8. Ну вообще, здесь имеет смысл смотреть в сторону связки представления с моделью данных. По-хорошему стоит использовать какую-нибудь библиотеку с поддержкой data-binding. Я тут набросал, чтобы идею передать, не для прода))
  9. Почитайте про делегирование событий. p.s. Правильнее сделать контролы все-таки кнопками, а не span (с точки зрения семантики).
  10. Не надо себе задачу усложнять. Целиком всю картинку на фон ставьте и вращайте целым блоком ее. Вращение текстовых блоков компенсируйте отрицательным вращением вокруг своей оси.
  11. Можете попробовать использовать пользовательские свойства: .component { border: 1px solid var(--theme-main-color); } .component_type_warning { --theme-main-color: red; } .component_type_success { --theme-main-color: green; }
  12. 1. Отрицательным верхним или нижним полем (смотря у кого забирать). 2. Картинку внутри кругов-блоков можно спозиционировать абсолютно с выходом по размерам за пределы своего контейнера.
  13. Крутить в смысле, чтобы пользователь мог с ней взаимодействовать? Без JS, как написали, никак. Если просто повернуть в стилях, без динамики, то смотрите CSS transforms.
  14. Обычно такие компоненты tabs называют. Гляньте тут, например.
  15. Например. То есть примерно следующее будет: td > div (max-height + overflow) > text.
  16. Используйте элемент-обертку. Установите ему максимальную высоту со скрытием переполнения.
  17. Как вариант, на стороне сервера или прямо на клиенте разбить слова по дефисам и отображать их через стили, а не в самом тексте. https://jsfiddle.net/bq54L732/
  18. О том, как браузер работает с DOM, CSSOM и скриптами, как рисует страницу и что останавливает отрисовку, а что нет, можете почитать, например, тут и тут (там вообще много всего полезного, так что можно весь раздел по порядку). По поводу выполнения: если код не асинхронный, то да, будет выполняться сразу и пока не выполнится и не освободит очередь, не отдаст управление другим (асинхронным вызовам или всяким событийным колбэкам). p.s. У ноды нормальная дока, читайте там (вот про блокирующие и неблокирующие вызовы, событийный цикл). И статей в инете про внутренности работы NodeJS тоже полно, не ленитесь искать самостоятельно.
  19. http://jsbin.com/hovukenipi/ Либо так. Не совсем понял: в случайном порядке все выводились или первый брался случайно, а потом по порядку.
  20. http://jsbin.com/reyiwaxivu/edit?js,output
  21. Не в %, а в тех же em/rem. По-нормальному, внутренний радиус должен быть чуть меньше внешнего, но для простоты я взял равный высоте. https://codepen.io/anon/pen/JabaKr
  22. Все размеры кнопки, в том числе 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; }
  23. Ну если вы просто использовали глифы в своих стилях, что вам мешает точно так же использовать SVG – меняйте через background. P. S. На их сайте вижу выбор между Font+CSS и SVG+JS.
  24. table { table-layout: fixed; } th:last-child { width: 100%; }
×
×
  • 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