Ответы пользователя по тегу CSS
  • Автовёрстка HTML & CSS. Стоит ли?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Удобно? Хм…

    Ну раз удобно, попробуйте использовать выданный ими код в реальном проекте — сразу всё поймёте :))

    Почесать собственную спину с помощью мизинца на ноге — и то удобнее будет.
    Ответ написан
    9 комментариев
  • Не адаптируется таблица в моем проекте?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Проблема не в таблице (что вам и показал вынос кода в песочницу), проблема выше -- в общем контейнере.

    @media screen and (max-width: 750px)
        .science__wrap {
            /* flex-wrap: wrap;  -- не нужно тут это */ 
            flex-flow: column;  /* вот это нужно; нужно сменить ось flex'а */ 
        }
    }

    5c3378c295c4c933562208.png
    Ответ написан
    4 комментария
  • Почему изображение в flex-контейнере не уменьшается?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Что-то на самом деле тупишь:
    Ответ написан
    Комментировать
  • Как добавить отступ с права, последнему элементу?

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

    Решение вот такое:
    @media screen and (max-width: 575px) { /* Ваш медиа-запрос */
    
        /* Нужно создать элемент в конце списка. Проще всего это сделать с помощью псевдоэлемента */
        #reviews .reviews_wrap:after {
            content: "";
            flex: 0 0 10px;  /* вместо 10px -- нужное вам значение «отступа» (который не отступ на самом деле, но вы поняли) */
        }
    
    }

    5c328675226e7860426807.png
    Ответ написан
    2 комментария
  • Где живёт паттерн visually-hidden?

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

    Сам использую подобный, но с pointer-events: none; visibility: hidden; и без white-space и clip-свойств. Надо тоже их добавить, хорошая идея :))

    Upd. Хотя вот так будет лютый overkill:

    .is--visually-hidden {
    	position: absolute !important;
    	visibility: hidden !important;
    	pointer-events: none !important;
    	clip: rect(0 0 0 0) !important;
    	clip-path: inset(100%) !important;
    	width: 1px !important;
    	height: 1px !important;
    	margin: -1px !important;
    	padding: 0 !important;
    	border: 0 !important;
    	text-indent: -9999px !important;
    	white-space: nowrap !important;
    	overflow: hidden !important;
    	-webkit-user-select: none !important;
    	-moz-user-select: none !important;
    	-ms-user-select: none !important;
    	user-select: none !important;
    }

    Только что там с accessibility -- фиг его знает. Тут уже жду комментариев, если они будут.

    Update. Если кто не понял, мой код -- это сборная солянка всего что только можно для прикола. Кода из картинки автора вопроса вполне достаточно.
    Ответ написан
  • Как убрать все вендорные префиксы?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Прогоните CSS через Autoprefixer с параметром:
    >100%

    Тем самым получите на выходе вот такой результат:
    5c2ec261e28bc331351044.jpeg
    Ответ написан
    1 комментарий
  • Как сделать выделение пункта активного меню при наведении на него?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Box-shadow, а не border-top:
    Ответ написан
  • Как сформулировать селектор?

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

    Можно через препроцессоры.
    Ответ написан
    Комментировать
  • Что за хитроумные расчеты vw? Как делать офигенный резиновый текст?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Скорее всего это функция сборщика (или иной программной надстройки, или визуального редактора), который считает по формуле, сколько конкретный блок текста займёт места на экране и ставит в готовый билд эти значения. А-ля жёсткая макетизация на новый лад. Знаки после запятой нужны для точности рендеринга (чтобы округление не влияло на визуальный результат).

    Если просто тупо использовать vw, то это плохой метод для создания адаптивности на сайте.

    Данный метод (просто vw) можно и нужно использовать только тогда, когда нужно умещать конкретный текст в первозданном виде на все экраны (кол-во строк, переносы, кол-во символов и т. д.). С адаптивность эта идея не связана вовсе, не понимаю, почему её некоторые форсят.

    Есть вариант такой:
    https://css-tricks.com/snippets/css/fluid-typography/
    Это старый и известный метод, у него есть свои преимущества и сценарии использования, но опять же в целом на сайте я не знаю, чем не угодили те же em, rem да даже px.

    P. S. Ну а пример выше не умещается на экране телефона даже со всеми этими ухищрениями, хотя, видимо, призван делать именно это.

    Update. Подумал, что там постоянно разные значения в CSS-файле, поэтому запутался немного в показаниях. Посмотрел, значения не меняются на разных экранах, файл mediaelection.com/css/common.css остается нетронутым. Нет «оверайда» стилей на фронтенде. Словом, то может делаться, например, в визуальных конструкторах (индивидуальной разработки) на том же React, либо через иное решение на том же React, которое заранее просчитывает размер того или иного элемента в зависимости от ряда параметров. Крупная студия вполне может позволить себе разработку такого решения для внутреннего использования.

    Update 2. Ну или, как отметили Сергей delphinpro и tyzberd, можно по формуле в препроцессорах считать, сверяя результат визуально вручную.
    Ответ написан
  • Вокруг текста непонятный отступ (я новичок, ответ скорее всего на поверхности, но я его не вижу), как исправить?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Это называется высотой строки (свойство line-height).

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

    Более того, я не знаю, что у вас в макете и как это должно выглядеть, поэтому могу понять вас неверно. Но если я правильно понял, отступ сверху нужно задать у родительского блока с помощью padding, либо у этого h1 с помощью margin-top.

    P. S. Описанный MaxKorz метод предназначен для нивелирования влияния высоты строки на верхний отступ текстового блока от границы родительского блока.
    Ответ написан
    Комментировать
  • Позиционирование div на float?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Никаких float'ов и лишних обёрток...

    Ответ написан
  • Как оставить текст прежнего размера, если мы придали ему значение тега H1?

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

    h1 {
      font-size: 16px; /* ну или что там у вас тут будет; inherit, em, rem */
      font-weight: normal; /* сброс начертания до обычного */
    }

    Код выше будет работать для всех h1. Если не хотите, делайте более специфичный селектор, опираясь от класса обёртки-родителя, т. е. смотрите вашу разметку.

    На всякий пожарный случай:
    https://learn.javascript.ru/css-selectors.

    P. S. Номинант на премию «Вопрос-ответ года».
    Ответ написан
    Комментировать
  • Элемент с display: none занимает место на странице. Почему?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    МальчикДевочка
    СобакаКошка
    ПёсКот


    LOLOL.

    По делу: где код?

    Элемент с display: none не может в принципе занимать место в разметке, потому что он как бы полностью исключён из потока вёрстки.

    Update. Место остается из-за двойного <br>. Выйти из ситуации можно хоть так, к примеру:


    Или так:
    br ~ br {
        display: none;
    }
    .
    Ответ написан
    9 комментариев
  • Как определить когда показывать картинку для ретины а когда нет?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Тег picture или img + атрибут srcset:
    https://developer.mozilla.org/ru/docs/Learn/HTML/M...
    https://webdesign.tutsplus.com/ru/tutorials/quick-...

    Update. Есть и другой подход (не через media, а через x2, x3 и так далее), если так нужна именно Retina:
    https://webkit.org/demos/srcset/.
    Особого смысла не вижу, т. к. сейчас все телефоны имеют retina-экраны (300 DPI) или очень близки к ней.

    Update #2. Вот ещё интересная ссылка для размышления с дополнительной информацией:
    https://m.habr.com/post/422531/

    P. S. Если будет поддержка IE11, то лучше (проще) использовать img с фолбэком (обычный src):
    Ответ написан
    3 комментария
  • Как прижать подвал к низу страницы и при этом оставить событие scroll работоспособным?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    1. Все крайне элементарно и просто:
    2. А вот так будет, если есть контент (та же разметка и CSS):
    Update. Почему я поставил flex для тега html и почему я не использовал единицы viewport (vh/vw)? Если использовать 100vh для высоты, тогда в iOS Safari и Android Chrome (сразу после загрузки) страница по высоте будет выходить за пределы видимой области. Это происходит из-за того, что 100vh — высота окна браузера со сжатым интерфейсом, а сразу после загрузки страницы интерфейс не схлопнут. Именно поэтому flex и 100%.
    Ответ написан
    5 комментариев
  • Как в IE 11 сделать чтобы FlexBox работал также как везде?

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

    .advanced-search {
        flex: 0 0 100%; /* вы не поставили ширину у этого flex-элемента внутри родительского flex-контейнера */
    }
    
    .product-bg-box {
        height: 300px; /* нужно ставить и просто height тоже, не только min-height */
    }


    5c1b6e1b44817711988324.png5c1b706f2feb3792895607.png
    Ответ написан
    3 комментария
  • Возможно ли запретить прокрутку в iOS Safari с сохранением текущего положения?

    SmthTo
    @SmthTo Автор вопроса, куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Достаточно простое решение нашел на kinopoisk.ru. Как и всегда в таких случаях, оно лежало на поверхности.

    В переменную сохраняем текущее положение прокрутки body, на body вешаем стилями полученное значение (только отрицательное) в свойство top. Так же нужно добавить position: fixed и left: 0 (right: 0 тоже можно, хуже не будет). Да-да, всё же fixed, засим, может поломать transform.

    Вот такие inline-стили для body от работы данного метода на Kinopoisk:
    top: -345px;
    left: 0px;
    right: 0px;
    position: fixed;

    Проверил у себя на устройствах: работает в iOS Safari 11 и 12. Иных путей решения данной проблемы найти не удалось.

    Update. Забыл добавить функции, что я написал, они не супер-гипер крутые, но рабочие:
    // 1. Фиксация <body>
    function bodyFixPosition() {
    
      setTimeout( function() {
      /* Ставим необходимую задержку, чтобы не было «конфликта» в случае, если функция фиксации вызывается сразу после расфиксации (расфиксация отменяет действия расфиксации из-за одновременного действия) */
    
        if ( !document.body.hasAttribute('data-body-scroll-fix') ) {
    
          // Получаем позицию прокрутки
          let scrollPosition = window.pageYOffset || document.documentElement.scrollTop;
    
          // Ставим нужные стили
          document.body.setAttribute('data-body-scroll-fix', scrollPosition); // Cтавим атрибут со значением прокрутки
          document.body.style.overflow = 'hidden';
          document.body.style.position = 'fixed';
          document.body.style.top = '-' + scrollPosition + 'px';
          document.body.style.left = '0';
          document.body.style.width = '100%';
    
        }
    
      }, 15 ); /* Можно задержку ещё меньше, но у меня работало хорошо именно с этим значением на всех устройствах и браузерах */
    
    }
    
    // 2. Расфиксация <body>
    function bodyUnfixPosition() {
    
      if ( document.body.hasAttribute('data-body-scroll-fix') ) {
    
        // Получаем позицию прокрутки из атрибута
        let scrollPosition = document.body.getAttribute('data-body-scroll-fix');
    
        // Удаляем атрибут
        document.body.removeAttribute('data-body-scroll-fix');
    
        // Удаляем ненужные стили
        document.body.style.overflow = '';
        document.body.style.position = '';
        document.body.style.top = '';
        document.body.style.left = '';
        document.body.style.width = '';
    
        // Прокручиваем страницу на полученное из атрибута значение
        window.scroll(0, scrollPosition);
    
      }
    
    }


    Для Bootstrap'овских модальных окон можно сделать универсальный вызов этих функций при их открытии и закрытии:

    $(document).on('shown.bs.modal', function () { // открытие любого модального окна Bootstrap
      bodyFixPosition();
    })
    
    $(document).on('hidden.bs.modal', function () { // закрытие любого модального окна Bootstrap
      bodyUnfixPosition();
    })
    Ответ написан
    3 комментария
  • Как можно (проще) сверстать такую таблицу?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Если так не хотите с помощью таблиц, то единственным полноценным (и улучшенным) вариантом для вас будет верстка с помощью CSS Grid:
    https://css-tricks.com/snippets/css/complete-guide...

    Не будет нужно ставить жесткие габариты, все будет резиновое, Grid умеет управлять одновременно как строками, так колонками... ну и т. д. Иными словами -- как таблицы, только гораздо лучше.

    Пример + адаптивность:
    https://medium.com/evodeck/responsive-data-tables-...

    P. S. В табличной верстке вполне реально сделать так, чтобы картинки «идеально так же встали». Поддержка grid хоть и неплохая, но хуже, чем у того же Flexbox и тем более хуже, чем у исконных table. Поэтому пользуйтесь caniuse.com для определения ваших потребностей и возможностей.

    В данном случае, на мой взгляд, либо table, либо grid. Flexbox тут не очень подходит, т. к. он не умеет управлять одновременно как строками, так и колонками (только чем-то одним: row или column).
    Ответ написан
    2 комментария
  • Как сделать SVG по центру?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    1. Во-первых, у вас SVG неправильный: сама картинка среди кучи пустого пространства.
    2. Во-вторых, много лишнего CSS-кода.
    3. В-третьих, лучше сделать через background-image, чтобы избежать ошибок масштабирования в IE.
    4. В-четвертых я исправил и сжал ваш SVG:



    Просто скопируйте SVG-код.
    Ответ написан
    Комментировать
  • Как указать тег не имеющего class(id) в css?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    :nth-child(1) работает как надо, просто вы неверно его используете. С учетом однородности конструкций, вам нужно использовать селектор прямого наследования (.class > .class):


    Для справки:
    https://learn.javascript.ru/css-selectors
    Ответ написан
    Комментировать