Ответы пользователя по тегу Вёрстка
  • Как сделать анимацию логотипа?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Что первое, что второе, по описанию, требуют WebGL. Второй вариант проще и легче в плане кода будет: статичная сфера с текстурой + текст, который описывает движение по её орбите.

    Можно на CSS сделать достаточно убогую бесконечную прокрутку карты, но она не будет учитывать геометрию шара.

    Типа так:


    UPDATE. Увидел такой баг в Android Chrome в результате совместной работы border-radius и overflow:
    5d694ce0ed71b148762968.png
    Нашел решение хаком. Нужно добавить следующее к такому блоку:
    -webkit-mask-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC); /* this fixes the overflow:hidden in Chrome/Opera */


    Это исправило проблему, обновил песочницу.
    Ответ написан
    3 комментария
  • Как реализовать данную верстку на сайте?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Если вы о линиях, то я для одного ответа тут уже делал :))


    Можно, конечно, просто картинкой на задний фон поставить эти круги.

    А ежели вы о вёрстке всего блока — то это уже задание, а не вопрос.
    Ответ написан
    7 комментариев
  • Как выполнить верстку вот такого блока?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Я сделал на flex, потому такая штука будет работать и в IE11. Хотя проще сделать с помощью grid. А вообще, такое можно сделать хоть на float (но не надо).



    Можете их даже компоновать иначе, ничего не развалится:
    Ответ написан
    4 комментария
  • Почему не работают медиа запросы на второй странице?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    На второй странице отсутствует мета-тег адаптивности:
    <meta name="viewport" content="width=device-width, initial-scale=1">
    Ответ написан
    Комментировать
  • Как правильно работать с PSD макетами под ретиной?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    Retina-макетов не бывает. Retina — не более чем маркетинговое название экранов с высоким разрешением (300+ px на дюйм). Retina могут быть только ресурсы, например, картинки, которые будут иметь в несколько раз большее, чем целевой макет, разрешение, чтобы попасть в пиксельную сетку реального разрешения.

    Вы же верстает не под размеры экрана в физических px, а под viewport с его «виртуальными» px, которые получаются из:
    [физическое разрешение] : [степень масштабирования]

    Чем выше разрешение при равных размерах экрана — тем всё мельче, если масштаб 1:1. Поэтому принято увеличивать масштаб, иначе всё мелкое-мелкое. Таким образом достигается высокая чёткость + адекватные размеры элементов на экране (эффект retina).

    Доп. инфо про правильное масштабирование
    Кстати, если используется масштабирование, то желательно, чтобы масштаб вообще был кратен двум (x2, x4…) для попадания в пиксельную сетку экранов, ибо так получаем меньшее влияния субпиксельного сглаживания, но это задача производителей устройств, а не нас с вами.

    На данный момент в том же iPhone XS используется нечётное масштабирование x3 не потому, что так хорошо, а потому что для нормального масштаба x4 нужно очень сильно увеличить разрешение экрана, а это дорого и не очень энергоэффективно.

    А на OLED-экранах ещё есть богомерзкий PenTile, из-за которого контрастные контуры выглядят пиксельно даже на очень высоком разрешении…

    Так, старый iPhone 6 и iPhone XS имеют одинаковый размер viewport (375px), но реальное разрешение различается очень сильно: 750px против 1125px. Достигается это с помощью масштаба: x2 у iPhone 6 и x3 у iPhone XS.

    Макет должен быть 1:1 к целевому размеру viewport, а не к физическому разрешению экрана. Потому что после всех манипуляций с масштабированием у нас остаётся четкое значение размера viewport, именно на него и надо ориентироваться.

    Наличие или отсутствие retina в этом деле вам совершенно не важно, ибо вы верстает под чёткие размеры viewport, которые могут быть одинаковыми на устройствах с совершенно разными физическими разрешениями: например, ширину viewport 375px (как у iPhone XS) можно достичь на древнем VGA-экране, сжав в нём окно браузера до этих 375px.


    Зачем тогда вообще retina-ресурсы
    Retina-ресурсы по сути бывают только растровыми, ибо векторные картинки, шрифты и вёрстка в целом масштабируются без потери качества. Этого нельзя сказать о всяких JPG'ах, поэтому если вы на iPhone 6 загрузите картинку 375px по ширине — да, она будет равна размеру viewport, но будет выглядеть размыто, потому что физическое разрешение экрана — 750px, а картинка по сути масштабируется в два раза, теряя в визуальном качестве.

    Если у вас в макете текст имеет 15px, то и делайте его 15px. Надеюсь, кстати, что макет вам делал не совсем отбитый дизайнер, который не забыл поставить px вместо pt в макете для текстов. Иначе — либо подгонять на глаз, либо пытаться конвертировать их в px, исходя из выбранном плотности печати в настройках документа макета. Ибо pt — это относительная единица для печати, в web её нет.

    Есть дизайнеры-уникумы, которые делают макеты в два раза больше необходимых размеров, типа, блин, retina x2. А если у меня retina x3 — что мне тогда делать? Или же делают макеты вообще неведомых размеров. Да и в Photoshop'e web-макеты в 2019-м году уже делать не надо, конечно.

    В CSS и HTML есть методы детекции наличия масштаба, чтобы грузить нужный ресурс в зависимости от его степени.
    UPDATE. С макетом полный порядок, тут уже дело в навыках верстки.
    Ответ написан
    6 комментариев
  • Background-size cover для retina экранов?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
      
      /* Тут ваш код для чистой retina, начинающейся от минимального размера viewport в два раза меньше физического или, если нет поддержки первого свойства, от от разрешения в 192DPI */
      
    }

    Вот пример, где работает cover везде и безо всяких проблем. Проверяется это тем, что там две картинки на фон, первая с надписью X1 (обычная), вторая — с надписью X2 (retina). Везде background-size: cover. И всё работает:



    На обычном экране грузит X1:

    5d517b143bb0a556931245.png

    На экране, который проходит проверку retina — X2

    5d517bafeed0c135455260.jpeg

    Android Chrome тоже всё понимает и, если экран высокого разрешения, использует retina-вариант (X2):

    5d517f4f33c14418788499.png
    Ответ написан
    Комментировать
  • Выпадающая карточка внутри слайдера и overflow?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Вам поможет только хак с отступами. Так делаю не только я.

    Добавляем к контейнеру, у которого применен overflow: hidden, следующие стили:

    padding-bottom: 1000px; // делаем отступ внутренний
    margin-bottom: -1000px; // вычитаем отступ внешний, что нивелировать

    В вашем случае, вроде, нет проблем, если только на CSS делать безо всякий динамики (но лучше на JS, читайте об этом под спойлером):



    Читайте тут тут более подробно о решении с помощью добавления класса к контейнеру, ибо иногда так бывает нужно по какой-то причине

    Если у вас планируется доп. функционал, расширяемость и т. п., то лучше сделать на универсальном решении на JS, там сложнее, но иногда это нужно.

    CSS-подход может подойти, а может и нет. Вам, вроде подходит самый простой. Я потратил день на поиск универсального CSS-решения, но в итоге пришел к выводу, что на CSS сделать сие нельзя нормально, если нужны полноценные анимации, переходы при наведении и т. п. К примеру, есть какая-то задержка, если нужно менять z-index на :hover. Видимо, какие-то особенности обработки :hover у браузеров.

    Если на JS: при наведении на слайд, добавляем к контейнеру, у которого применен overflow: hidden, класс с теми же стилями отсупов, что я написал выше. Класс можно добавить и к общему родителю, но стили применяем все равно именно к тому, что c overflow: hidden (это я и сделал в примере ниже).

    В итоге получаем а-ля такое:



    У хака есть одна проблема (решаемая): если есть элементы, типа кнопок-стрелок, на абсолютном позиционировании внутри сдвигаемого блока с oveflow: hidden, то эти элементы будут скакать, ибо вы реальные размеры блока увеличили с помощью padding-bottom. Решается это просто калькуляцией половины вычитаемого отступа и половины размера элемента.
    Ответ написан
    2 комментария
  • Как реализовать сей блок?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    В данном случае держать SVG в разметке, как в примере Андрей, необязательно.

    Все что нужно — внешний файл SVG с атрибутом preserveAspectRatio="none" + background-size: 100% 100%. Тогда можно вызывать нужную картинку с волной через background: url() — и все будет адаптивно растягиваться.

    В примере я сделал не через ссылку, а через base64, потому что не знаю хостингов, куда можно загрузить SVG, вам же нужно просто поменять base64-код на ссылку с вашего хостинга:


    Вот сам код SVG, обратите внимание на атрибут preserveAspectRatio="none":

    <svg preserveAspectRatio="none" viewBox="0 0 314 109">
      <path d="M45.33 34.92A183.358 183.358 0 0 0 92.91 41c70.66.27 107.53-30.89 180.89-30.95a263.848 263.848 0 0 1 40.2 3.09V109H0V15.82a181.388 181.388 0 0 0 45.33 19.1z" fill="#fff"></path>
    </svg>
    Ответ написан
    8 комментариев
  • Как правильно определять структуру при вёрстке?

    SmthTo
    @SmthTo Куратор тега HTML
    Все перепёлки мира будут оплакивать мою смерть.
    И ещё в принципе можно упросить, но не нужно.

    Ответ написан
  • Где можно достать бесплатный макет на фигме, для обучения вёрстке?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    https://www.figmafreebies.com/

    Поиск в Google:
    Free Figma templates
    Figma freebies
    Ответ написан
    Комментировать
  • Улетел placeholder на IOS. Как исправить?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    input {
       line-height: 1;
    }
    Ответ написан
    Комментировать
  • Как правильно пользоваться Dev Tools (или где hover)?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    5cff28160079e892357678.png

    Когда вы применили :hover к нужному элементу, это не значит, что именно у него будут показаны стили дочерних элементов. На примере div:hover a — после выбора состояния :hover для родителя нужно выбрать именно a, потому что стили применяются именно к нему, несмотря на то, что они идут от :hover родителя (что, чёрт, логично).
    Ответ написан
    6 комментариев
  • Почему не срабатывает transform translate у псевдоэлемента?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Потому что с чистыми inline-элементами (:before и :after являются оными изначально) не работает свойство transform. Поменяйте, к примеру, на inline-block, как я в примере, и все будет работать:

    Ответ написан
    2 комментария
  • Как сверстать блоки похожие на плиточную раскладку?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    Можно даже без классов модификаторов, тупо на nth-child:


    Если нужно вставлять именно img и если соотношение сторон картинок будет известно заранее, то вот, чтобы размеры по высоте не скакали до загрузки картинок:

    Ответ написан
    1 комментарий
  • Как сделать ограничение плавающему элементу?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Если есть контент, который должен «плавать» внутри непосредственного родительского блока без сложной логики этого действия, то можно использовать position: sticky;. Но он поддерживается не всеми браузерами.

    Для условной автоматизации этого дела есть хороший плагин https://dollarshaveclub.github.io/stickybits — там, где нет sticky, он сделает с помощью fixed и наоборот.

    position: sticky; хорош тем, что он не добавляет никаких слушателей прокруток и т. п., что положительно сказывается на производительности страницы.

    P. S. Но без JS не обойтись вовсе, если нужно добавить логику по типу «если плавающий элемент доходит до какого-то элемента внутри общего родительского блока, то сделать то-то, то-то».
    Ответ написан
    Комментировать
  • Как сверстать такое, не меняя структуры?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Data-атрибуты -- тоже CSS-селекторы.

    Ответ написан
    1 комментарий
  • Почему iframe не занимает 100% высоты?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    height: 100% у детей будет работать, если задать родительскому элементу четкое (эксплицитное) значение высоты.

    min-height таким свойством не является. Оно не чёткое. Поэтому height: 100% работает внутри такого контейнера как height: auto.

    Как один из вариантов,:
    https://codepen.io/anon/pen/YgqEoJ

    Таким методом удобно задавать соотношение сторон, кстати.
    Ответ написан
    Комментировать
  • В браузере Safari появляются ссылки в верстке, хотя их нет, как исправить?

    SmthTo
    @SmthTo Куратор тега Вёрстка
    Все перепёлки мира будут оплакивать мою смерть.
    Вот это в head:
    <meta name="format-detection" content="telephone=no">

    Вообще, этих мета-тегов больше:
    <meta name="format-detection" content="telephone=no">
    <meta name="format-detection" content="date=no">
    <meta name="format-detection" content="address=no">
    <meta name="format-detection" content="email=no">

    Информация:
    https://stackoverflow.com/questions/28027330/html-...
    Ответ написан
    1 комментарий
  • Как реализовать такой блок?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Flex (для лучшей и более простой поддержки браузеров) + box-shadow (чтобы не увеличивать габариты блоков; можно заменить на псевдоэлемент):

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