• Как отцентрировать блок?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    В разумных пределах содержимого я это решаю гридами
    Ответ написан
    Комментировать
  • Ровная сетка с отступами на гридах невозможна?

    @cheeroque
    Скандалы! Интриги! Расследования!

    Заголовок уровня ленты.ру, чесслово. Вы не понимаете не то что как работает грид, а даже принципов построения сетки. Ширина колонки в вашем гриде = (ширина контейнера - (гап * (количество колонок - 1))) * fr / 12.
    Проблема в том, что колонок в сетке у вас три (или четыре во втором случае), а сумма fr в обоих случаях 12.
    Откуда у вас возьмётся одинаковая ширина колонки, если суммарная ширина гапов разная?
    Вот примерно так нужно делать, обратите внимание, что в последнем блоке колонки встали как нужно:

    Ответ написан
    3 комментария
  • Нужно ли проверять наличие элемента?

    @Fallenyasha
    Можно использовать синтаксис ES2020 Optional Chaining
    button?.classList.add('my-button');
    Ответ написан
    Комментировать
  • Как активировать gpu-анимацию?

    nastya97core
    @nastya97core
    Начинающий программист
    посмотри в сторону gsap https://greensock.com/gsap/ . там у них свои расчёты и работает всё очень плавно
    Ответ написан
    1 комментарий
  • Как активировать gpu-анимацию?

    tundramani
    @tundramani
    ускоренно анимируются картой только transform и opacity

    left и тд не анимируются
    Ответ написан
    Комментировать
  • Абсолютно позиционированный блок внутри overflow: auto?

    .nav {
      background: #f00;
      width: 200px;
      height: 150px;
      overflow-y: scroll;
    }
    .subnav {
      background: #00f;
      position: absolute;
      left: 200px;
      top: 16px;
      width: 200px;
    }


    Не уверен из-за чего возникает эта проблема, но что-бы её избежать нужно позиционировать блок не относительно nav, а eё обёртки, таким образом overflow не будет действовать на абсолютный блок
    Ответ написан
    Комментировать
  • Как сделать наследование классов ES6?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    class Dropdown() {
      constructor(selector) {
      	this.$el = document.querySelector(selector);
      }
    
      toggle(cls) {
      	this.$el.classList.toggle(cls);
      }
    }
    
    class Nav extends Dropdown {
      constructor(selector) {
      	super(selector);
      	this.$btn = this.$el.querySelector('.nav-button');
        	this.$btn.addEventListener('click', this.toggle.bind(this, 'nav_open'));
      }
    }
    
    class Menu extends Dropdown {
      constructor(selector) {
      	super(selector);
      	this.$btn = this.$el.querySelector('.menu-button');
        	this.$btn.addEventListener('click', this.toggle.bind(this, 'menu_open'));
      }
    }
    
    new Nav('.nav');
    new Menu('.menu');
    так?
    Ответ написан
    2 комментария
  • Как добавить обработчик при создании ES6 Класса?

    @skuvaWeb
    class Component {
      constructor(element) {
        this.element = element;
        this.button = this.element.find('.button');
    
        this.bindListeners();
      }
    
      onButtonClick() {
        alert();
      }
    
      bindListeners() {
        // Вариант 1 
        this.button.addEventListener('click', () => {
          this.onButtonClick()
        })
    
         // Вариант 2 
        this.button.addEventListener('click',  this.onButtonClick.bind(this))
      }
    }
    Ответ написан
    Комментировать
  • Как лучше сделать фолбэк для CSS Grid и стоит ли?

    sergski
    @sergski
    web-developer
    Решение создавать отдельные css для разных версий браузеров из стародавних времен (типа ie7,-8-9), и имеет смысл, если у вас отдельный бюджет от заказчика на поддержку старых версий.
    Сейчас половина трафика уже с моб.версий сайтов и разумнее идеально сделать "сначала мобильные", чем писать двойной код для исчезающего кол-ва адептов ie11) да и поддерживать такой код довольно неудобно.
    Сообщество, имхо уже пришло к мнению, что верстка не обязана выглядеть одинаково везде, достаточно, чтобы она на старых версиях выглядела аккуратно.
    А ваш пример можно переписать так без ущерба и заметно меньше и поддерживать удобнее:
    .photo-layout {
        display: flex;
        flex-flow: row wrap;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    }
    .photo-layout > div {
        width: auto;
        flex: 1;
        margin: 1rem;
    }
    Ответ написан
    Комментировать
  • Как сократить код?

    @nvdfxx
    Senior Pomidor developer
    (function() {
      const initialStates = {
        '.button_1': false,
        '.button_2': true,
        '.button_3': false
      }
      
      $('.button').on('click', function() {
        $(this).toggleClass('button_active')
      })
      
      for(key in initialStates) {
        if(initialStates[key]) $(key).click()
      }
      
    })();
    Ответ написан
    2 комментария
  • Как сократить код?

    @Higrok
    Например, вот так:

    var button1Active = false;
      var button2Active = true;
      var button3Active = false;
    
    function buttonActive(btn_name, btn_active) {
       $(btn_name).on('click', function(){
        btn_active = !btn_active;
        $(this).toggleClass('button_active', button1Active);
      }).toggleClass('button_active', button1Active);
    }
    
    buttonActive('.button_1', button1Active);
    buttonActive('.button_2', button2Active);
    buttonActive('.button_3', button3Active);
    Ответ написан
    1 комментарий
  • Как проинспектировать динамически добавляемый элемент?

    @antonwx
    Откройте консоль разработчика, начните перетаскивать элемент, и когда появится галочка, нажмите F8. Произойдёт "заморозка" состояния страницы. И теперь можете инспектировать.
    Ответ написан
    1 комментарий
  • Как удалить элемент массива не зная его индекс?

    MrDecoy
    @MrDecoy
    Верставший фронтендер
    Если я всё верно понял, то:
    remove() {
      this.arr = this.arr.filter( button => button !== this.active)
    }


    а ещё круглые скобки тут вам не нужны у remove(). То есть просто remove
    <button @click="remove()">Remove active button</button>
    Ответ написан
    1 комментарий
  • Градиент справа налево под углом?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Поменяйте цвета местами)

    background: linear-gradient(45deg, #000 90%, #f00 10%);
    Ответ написан
    2 комментария
  • Градиент справа налево под углом?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    calc(100% - 50px)
    Ответ написан
    Комментировать
  • Как вызвать сообщение о не валидности поля формы?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    Просто. Юзай. Форму. Не важно будет отправка на сервер, не будет. Это не имеет значения. Если есть текстовые поля -- всегда используй форму. Так ты избавишь и себя и пользователя от тонны головной боли (как например та, что описана в вопросе).

    Форма это интерактивный элемент (как кнопка, ссылка, и т.д.). Пользователь может взаимодействовать с ней множеством способов, не только нажимая мишкой в кнопку не подалёку. Например всем привычное поведение, особенно когда текстовое поле только одно: ввести что-то и нажать Enter. Без формы это не будет работать и вы должны будете дополнительно заморочится, для отслеживания клавиатуры и так далее.
    Ответ написан
    Комментировать
  • В чем ошибка css?

    @cheeroque
    Вот этот кусок мешает: (1.5625rem - 1rem) *
    Какие единицы должны получиться в результате выполнения calc? Пиксели в квадрате? :)
    Судя по всему, это коэффициент, который берётся из отношения базового размера шрифта к текущему, так что единицы измерения там в любом случае не нужны.
    Ответ написан
    Комментировать
  • Как правильно создать критический css?

    OtshelnikFm
    @OtshelnikFm
    Обо мне расскажет yawncato.com
    1. делай срез по своей аудитории. Может тебя только с смарт тв смотрят.
    2. пробуй Splash screen. Для второй страницы он не нужен будет - т.к. стили уже в кеше
    3. см пункт 2
    Ответ написан
    Комментировать
  • Как правильно создать критический css?

    approximate_solution
    @approximate_solution
    JS Developer. Angular\React\Vue\Ember
    Где золотая середина?

    Золотая середина это обычно + 1 секция ниже(ей вы перекрываете особо большие экраны).
    ноутбука с HD-разрешением, а у другого 4к монитор повернутый вертикально.

    Как правило критический css создается с упором на пользователей мобильный девайсов, либо же пользователей с очень плохим интернет соединением. Но 2020 год на дворе, и ваш css в 100кб, для 99% пользователей просто смешон. Большинство статей которые вы читаете про критический css - зарубежные(плохой интернет, + многомиллионный охват аудитории, какой нибудь портал вроде bbc news), если у вас такого охвата нет, и вы "стримите" свой бизнес на Россию - заморачиваться с критическим css не столь продуктивно.
    Прелоадеры

    Прелоадер нужен как правило, если у вашего сайта загрузка более 3+ секунд, он позволяет снизить коэффициент отказа у пользователя, и убрать агрессию к вам) Если ваш сайт загружается до 3 секунд - прелоадер тоже такое себе.
    Ответ написан
    Комментировать
  • Как правильно создать критический css?

    @archelon
    для загрузки стилей нужны, как правило, доли секунды. поэтому критическими стилями вообще редко кто заморачивается.

    что выносить в критический css — всегда по ситуации, но имхо основной принцип должен быть не в том, что сначала мы полностью рендерим первый экран, а потом все остальное.
    а в том, чтобы в том коротком временном промежутке, пока грузятся стили, не мелькал «голый» текст в столбик.
    т.е. прячем второстепенные и служебные элементы, откладываем на потом тени-градиенты с прочими красивостями и т.п. главное — отобразить лейаут, чтобы при полной загрузке контент не прыгал.

    3. Прелоадеры и критический css вместе не могу существовать?

    critical css нужен, чтобы отобразить сайт практически мгновенно для пользователя, чтобы не пялиться целую секунду на дурацкий прелоадер.
    Ответ написан
    Комментировать