• Как при клике убрать активный класс?

    @LJ322
    У вас все элементы по клику на кнопку закрываются, а потом срабатывает toggle на выбранном, поэтому он не закрывается. Самый простой вариант - toggle для совпадающих id, а remove для остальных
    autoContents.forEach(content => {
    				let attr = btn.getAttribute("data-id");
    				if (content.getAttribute("data-id") == attr) {
    					btn.classList.toggle('_active')
    					content.classList.toggle("_active");
    				} else {
              content.classList.remove("_active");
            }
    			});


    upd. Сократил решение
    Ответ написан
    1 комментарий
  • Как при клике убрать активный класс?

    neuotq
    @neuotq
    Прокрастинация
    Немного упростим главный код и исправим названия класса.
    Активный класс, если это БЭМ или типа БЭМ, должен быть не _active, а fits-cars-showmore-content_active, ну и с остальными соответственно.
    Так же разделим название для data атрибутов, чтобы у кнопок и контента они различались, так желательно в данной семантике. Либо в дата атрибут передавать айди кого будем дёргать. Тут уже на усмотрение разработчика в зависимости от дельнейшего пути
    Сам цикл упростим (но желательно конечно вернуть/добавить проверки аргументов, существования элементов и тп, я убрал для наглядности.).
    const autoBtns = document.querySelectorAll('.block-tabs-main-home__item');
    	autoBtns.forEach(
        btn => {
          btn.addEventListener("click", (e) => {			
            const contentId = btn.getAttribute("data-content-id");     
            document
                .querySelectorAll(`[data-id="${contentId}"], .fits-cars-showmore-content_active`)
                .forEach( (el) =>
                  el.classList.toggle('fits-cars-showmore-content_active')
                )
    	        }
          );
        }
      );

    Обновил пример, забыл что вы хотели закрывать и другие. В любом случае действий мы выполняем меньше, чем обходя безусловно все элементы. Здесь мы обходим только те кто открыт и тот у кого айди совпадается
    Рабочий пример
    Ответ написан
    Комментировать
  • Как перенести часть текста на другую строку в блочной структуре?

    @romant094
    Frontend-developer
    С блочными элементами никак, их нужно сделать инлайновыми
    Ответ написан
    Комментировать
  • Как верстать сайты на двух языках?

    vabka
    @vabka
    Токсичный шарпист
    Обычно это разруливается на уровне шаблонизатора.
    Ты верстаешь как обычно, но в местах, где тебе нужно вставить текст, ты будешь вставлять плейсхолдер.
    Потом, в отдельном файле, в зависимости от шаблонизатора, будут перечислены сопоставления плейсхолдер->текст

    Шаблонизатор потом уже либо сгенерирует тебе N файлов для разных языков, и тебе нужно будет на стороне веб-сервера разрулить, какие файлы отдавать, либо этим будет заниматься бэкенд, либо фронтовый фреймворк.

    Код в итоге будет что-то типа:

    index.html:
    <div>
      <p>{{text}}</p>
    </div>


    i8n/ru.json:
    {
      "text": "Привет мир!"
    }


    i18n/en.json:
    {
      "text": "Hello world!"
    }


    i18n/es.json
    {
      "text": "Hola mundo!"
    }


    Но если у тебя появляются динамические данные, нужна поддержка right-to-left языков, и вообще нужна адаптация под разные регионы (типа чтобы условный Американец и условный Китаец получали разный UX), то всё будет немного сложнее. Гугли дальше по словам "Интернационализация" и "Локализация"
    Ответ написан
    5 комментариев
  • Как при клике убрать класс?

    @iqhater
    Ответ написан
    Комментировать