Задать вопрос
  • Как создать вторую рамку за изображением, смещенную влево и вниз?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Для однородного фона просто рамка + двойная тень

    picture, source {
      display: contents;
    }
    
    img {
      border: 2px solid red;
      box-shadow: -10px 10px 0 -2px white, -10px 10px 0 0 red;
    }

    Преимущество в том, что всё задается одному элементу, прямо картинке. Нет ни сдвигов ни зависимостей от других элементов.

    Если фон неоднородный, то либо бордеры разным элементам либо псевдику.
    Предпочтение псевдику, чтобы сдвигался именно он, а не сам элемент.

    Ещё один вариант: небольшая svg и border-image.

    p.s. picture и source удобно убирать с помощью display contents, чтобы не тревожится, будут у клиента эти теги или удалит и что там вообще с ними происходит. Просто делаем их "прозрачными".
    Ответ написан
    1 комментарий
  • Почему вместо галереи owl-gallery белое пространство?

    Ankhena
    @Ankhena Куратор тега JavaScript
    Нежно люблю верстку
    Потому что кто-то задал макс ширину 100% глобально для div и p

    div, p {
        max-width: 100%; 
    }


    Уберите или переопределите
    Ответ написан
  • Как оптимально реализовать вкладки?

    Ankhena
    @Ankhena Куратор тега JavaScript
    Нежно люблю верстку
    я понимаю что есть более правильный подход но не могу найти

    Как вариант:

    1. Вешаем слушатель событий на документ или родителя этих табов
    2. Всем табам даем одинаковый класс
    3. Проверяем попал ли таргет на таб
    4. Всем убираем класс open
    5. Тому, который в таргете задаем его

    const CLASS_TAB = 'tab';
    const CLASS_OPEN = 'open';
    
    const block = document.querySelector('.block'); // родительский блок табов
    const tabs = block.querySelectorAll(`.${CLASS_TAB}`);
    
    block.addEventListener('click', ({target}) => {
      const tab = target.closest(`.${CLASS_TAB}`);
      if (tab) {
        tabs.forEach((item) => {
          item.classList.remove(CLASS_OPEN);
        });
        tab.classList.add(CLASS_OPEN);
      }
    });


    Условие тоже можно перезаписать компактнее, но мне кажется у вас вопрос как раз в логике кода, а не в сокращении символов.

    На что-то такое
    if (tab) tabs.forEach(t => t.classList.toggle('open', t === tab));


    Когда дойдёте до задачи, когда нужно менять класс не самой кнопке-табу, а соответствующему блоку с контентом, то:
    - Почитайте про DOM дерево, поиск родителей, соседей и т.д.
    - Так же рекомендую использовать data-атрибуты для связи элементов.
    Ответ написан
    9 комментариев
  • Как изменить стиль дочернего элемента в зависимости от класса родителя?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Если span после инпута, то это вообще основы CSS
    .is-invalid + .input-group-text

    Если бы наоборот, то
    :has
    Либо добавляя класс к инпуту добавлять и спану.

    p.s. пересмотрите стили, чтобы обойтись без !important
    Ответ написан
    Комментировать
  • Как такие вещи верстаются?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Не всюду пока поддерживается, но очень удобно corner-shape
    Там где не поддерживается, можно оставить обычные скругления или не скруглять.

    Но разумеется, зависит от ТЗ, можно ли так поступить (я бы постаралась уговорить). Если нет, то по-старинке, вариантов много: svg, clip-path, псевдо, градиенты и т.д.
    Ответ написан
    2 комментария
  • Как выровнять крестик?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Почитайте про ascent-override, descent-override и line-gap-override

    Кроме как заменить на svg

    Но нужно понимать, что это самое адекватное решение.
    А ещё это, наверное, всё таки button, а не div. А x не её контент, а украшение. Контентом там должно быть что-то типа "закрыть окно". Хотя бы aria-label.
    Ответ написан
    2 комментария
  • Как лучше всего реализовать данный фон?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Старайтесь разделять смысл (разметку), украшения (стили) и поведение (скрипты).
    Кодгайд гугла
    Критерии верстки для первокурсников

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

    В идеале экспортируем пятно в том виде, в котором оно нужно нам, а не полное, как сейчас, если нет каких-то важных причин так не делать. Но пока на основе вашего пятна.

    Самый простой вариант: задаем фон для body и дорисовываем направо градиент.
    https://codepen.io/AnnaSummer/pen/WbQwNrE
    фон

    background:
      url(https://habrastorage.org/webt/68/75/69/687569cb9ee3a139342935.png) no-repeat top -100px left calc(50% + var(--container-width)/2 - 330px), 
       #ffffff  linear-gradient(#fff1da,  #fff1da) no-repeat top right / calc(50% - var(--container-width)/2) 773px;

    Тут использована ваша png. Если пятно берем отдельно, то экспортируем в svg, если слепляем с девушкой то png и image-set. Но может получиться сложнее с размерами.
    --container-width - ширина контейнера.
    Сдвиги - взяты с потолка, берите или вычисляйте из макета.
    Вместо дурацких компенсирующих сдвигов, я бы обрезала эту SVG до нужных размеров. Аналогичный эффект должен дать экспорт с включенной галкой clip content на нужном фрейме.

    В адаптиве перестраиваем по макету.

    Альтернативный вариант: использование псевдоэлементов в возможном сочетании с абсолютом, трансформом, гридами и единицами от контейнера. Но без ТЗ для широких мониторов, можно только угадывать.
    Ответ написан
    Комментировать
  • Как сделать такую фигуру на css?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Дорабатывайте под себя
    https://codepen.io/AnnaSummer/pen/BaGoKrE
    Альтернативы: маски, clip-path, svg
    Ответ написан
    Комментировать
  • Как правильно работать с background?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Чтобы не было, например, "обрезаний" при разных разрешениях экрана или "дополнения" пустых мест его дублированием


    Геометрия говорит нам, что если пропорции блока и изображения не совпадают, то возможны три варианта:
    - поля
    - обрезка лишнего
    - искажение пропорций

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

    Но кроме пропорций, есть ещё поддержка форматов и плотность пикселей. Так что, сложность тут не одна.

    Какие размеры файла желательны (в байтах)?

    Минимальные. При этом нужно сохранять достаточное качество.

    Этот вопрос не имеет смысла, даже если вы скажете размер вьюпорта/блока, но не покажете картинку. Потому что одна сожмется прекрасно, а другая заметно потеряет в качестве.

    Для ретины и разных форматов файлов используйте image-set
    Для разных размеров - @media
    Для оптимизации размеров - форматы webp, avif
    Ответ написан
    Комментировать
  • Как настроить перенос текста через максимальную ширину, как в html?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    Фикс размеры
    67f645d756e5b902308030.jpeg
    Левее - фикс ширина
    Ответ написан
    1 комментарий
  • Почему не центрируется текст?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Явно центрируется

    67ea4d32829dc332640816.jpeg

    даже с учетом опечатки в теге div

    2) Как применять маску таким образом что бы доминирующий цвет брался не из html,body ?

    Не очень понятно чего нужно достичь, но цвет берется из bg. Ни у кого кроме body его нет. Будет другой у items или item возьмется оттуда.
    Ответ написан
    Комментировать
  • Как растянуть html, body на всю высоту страницы, даже если есть прокрутка?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Заменить высоту на минимальную высоту или вовсе убрать.
    Ответ написан
    1 комментарий
  • Что делать если расположение текста находится не в том месте?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Обычно создают класс-хелпер и называют его container, wrapper или типа того.
    Ему задают ширину и центрирование.
    В верхней части шапки он у вас есть, а в нижней потерян.

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

    p.s.
    Называть классы словами down, bottom, red и т.д. не лучшая идея. Темы меняются, а блоки перестраиваются на разных размерах вьюпорта. Лучше придумывать названия по смыслу.

    p.p.s
    Если не хватает возможностей инструментов разработчика в браузере, для работы с сетками удобно использовать обводки для блоков. Полупрозрачный outline и отрицательный outline-offset.
    Ответ написан
  • Что делать, если не меняется цвет навигационных ссылок?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Да что ж такое.
    Я вам в прошлом вопросе написала тактику.
    Не меняются ссылки на цвет , который задал.

    Нет, не задали.
    Задали для nav, для ссылок - нет.
    Как решить проблему ?

    Задать.

    Также рекомендую начать пользоваться инструментами разработчика в браузере. Он отлично показывает что и почему применилось. У синей (или посещенной фиолетовой) будет написано user agent stylesheet, т.е. стили браузера по умолчанию.

    Ссылки не наследуют свойство color.
    Чтобы изменить цвет ссылки, нужно ей задать это свойство.
    Если нужно, чтобы она была такого же цвета, как родитель, то использовать значение inherit
    .nav a {
      color: inherit;
    }


    p.s. Для доступности меню верстают списком внутри тега nav.
    Ответ написан
    Комментировать
  • Как начать background-image с определенного места?

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

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Т.е. обёртку box2 удалять нельзя.

    В CSS есть display: contents для таких вещей.
    Остальное гридами.
    Ответ написан
    Комментировать
  • Не выставляются карточки с помощью gap так как надо?

    Ankhena
    @Ankhena Куратор тега CSS
    Нежно люблю верстку
    Свойство gap работает не так как надо

    На обоих скриншотах одинаковый gap и по виду очень похож на указанные 30px.
    А больше он ничего не делает.

    Но предположим, что вы хотели спросить не про gap, а про почему не получилось два столбца.
    Теперь смотрим в код (было бы идеально, если бы к коду прикладывалась песочница, в которую можно потыкать, а эти простыни убирались в спойлеры).
    Вы пишете: хочу флекс, по строкам, если не влезло, то переноси и сделай отступы (этот ваш gap) 30px.
    Смотрим на элемент: ширина 555px.
    Смотрим на контейнер: ширина 1140 и отступы 2х15.

    Считаем:
    Свободное место в контейнере: 1140 - 30 = 1110.
    Сколько нужно места хотели бы занять два элемента в ряду: 555х2 + 30 = 1140
    => Не влезает.

    А раз не влезает, то переносим.

    Нормальное решение:
    Меняем флекс на грид и задаем две колонки с нужным отступом.
    grid-template-columns: 1fr 1fr;
    gap: 30px;


    Дополнительно можно почитать про minmax в гридах.
    Ответ написан
    1 комментарий
  • Не удается экспортировать файлы из Figma?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    Экспорт находится справа внизу

    spoiler

    67a8fe054720f437471428.jpeg
    Ответ написан
    3 комментария
  • Webstorm убирает табуляцию при форматировании?

    Ankhena
    @Ankhena
    Нежно люблю верстку
    Do Not Indent Children Of
    https://www.jetbrains.com/help/webstorm/settings-c...

    Но вообще, хорошо, что удаляются отступы конкретно у этих тегов. Зачем вам сдвиг практически всего кода из-за вложенности в body?

    скрин

    67a7c0cbe0526614032646.jpeg


    p.s. за user-scalable=no и maximum-scale=1 отрывала бы руки.
    Ответ написан
    3 комментария