Java, UX, HTML, CSS, WEB-design

Вопросы и ответы по кодированию с Крисом Койером: адаптивные спрайты и эффективность медиазапросов

Краткое описание по статье Вопросы и ответы по кодированию с Крисом Койером: адаптивные спрайты и эффективность медиазапросов

Название: Вопросы и ответы по кодированию с Крисом Койером: адаптивные спрайты и эффективность медиазапросов . Краткое описание: [ad_1] ⭐ Крис Ко . Дата публикации: 16.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

[ad_1]

  • Крис Койер

  • 0 Комментарии

Вопросы и ответы по кодированию с Крисом Койером: адаптивные спрайты и эффективность медиазапросов

  • 8 минут чтения

  • Кодирование, CSS, Адаптивный дизайн, Медиа-запросы

Краткое резюме ↬

Здорово, народ! Добро пожаловать в другие разделы вопросов и ответов по CSS от Smashing Magazine. Возьмем все виды «Контент: благословение, пузырь, бремя»)](https://www.smashingmagazine.com/2012/08/13/coding-qa-with-chris-coyier-responsive-sprites -отзывчивый-размер-шрифта-медиа-запрос-эффективность-больше/).

Здорово, народ! Добро пожаловать в другие разделы вопросов и ответов по CSS от Smashing Magazine. Это работает следующим образом: вы присылаете вопросы, которые у вас есть о CSS, и как минимум раз в месяц мы выбираем лучшие вопросы и отвечаем на них, чтобы каждый мог извлечь выгоду из обмена. Ваш вопрос может быть об очень конкретной проблеме, с которой вы столкнулись, или даже о философском подходе. Мы возьмем все виды.

Если вам интересно узнать больше о вопросах и ответах, в моем авторском архиве есть еще куча.

Спрайты с учетом разрешения

Джошуа Буллок спрашивает:

Ваш последний раунд вопросов назывался «Размеры блоков и спрайты CSS», в котором были даны отличные ответы на два отдельных вопроса, но они не продвинулись ни на один шаг вперед для адаптивного дизайна. В конечном счете, мой вопрос заключается в следующем: существует ли предпочтительный/предлагаемый способ обработки отзывчивых спрайтов вообще для нескольких разрешений и масштабирования изображения? Это вообще возможно?

Еще после прыжка! Продолжить чтение ниже ↓

В последнее время это горячая тема из-за роста числа дисплеев «retina». Но на самом деле, эта проблема накапливалась некоторое время. Мы, веб-дизайнеры, часто работаем в «пикселях», например, устанавливая ширину изображения: img { width: 100px; }. Но что такое 100px? Прошло много времени с тех пор, как это буквально ссылалось на пиксель на экране. В наши дни это довольно произвольное измерение. 100px в конечном итоге составляют около дюйма на физическом экране, независимо от его разрешения.

Дисплеи Retina сделали очень быстрый и большой скачок в разрешении. 27-дюймовый дисплей Apple Thunderbolt Cinema имеет 109 PPI (пикселей на дюйм), в то время как 15-дюймовый Retina MacBook имеет 220 PPI (буквально в два раза большую плотность), что означает, что на значительно меньшем экране больше пикселей.

Если вы рисуете сплошную красную рамку на экране, это не проблема! Дисплей с более высоким разрешением просто отобразит его с большим количеством пикселей. А как насчет маленькой иконки, которую вы создали в Photoshop размером 16×16 пикселей? И дисплей с высоким разрешением, и дисплей с низким разрешением должны отображать этот значок с одинаковым физическим размером, но дисплей с высоким разрешением должен существенно имитировать многие из этих пикселей. Это как когда увеличиваешь фото в фотошопе, оно сразу начинает выглядеть как дерьмо.

Одним из решений является увеличение всех исходных изображений. Вместо «пиксельного» изображения 16×16 вы можете сделать его размером 32×32 в Photoshop, но с помощью CSS изменить его размер до 16×16. Затем информация отображается на дисплее с высоким разрешением.

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

По сути, вы делаете спрайт ровно (и буквально) в два раза больше, сохраняя при этом его пропорции. Затем в своем «обычном» CSS вы загружаете «обычный» спрайт и выполняете все необходимые действия. background-position и размеры вещей, чтобы заставить ваш спрайт работать. Затем, используя медиа-запросы, вы перезаписываете background-image с вашим новым спрайтом сетчатки (когда условия правильные). Ты используешь background-size чтобы уменьшить спрайт сетчатки, поэтому вам не нужно прикасаться к утомительному позиционированию/размеру. Ура!

span.rss-icon {
   /* Size of sprite image is 200px ✕ 200px */
   background: url(sprite-1x.png)  72px 181px;
   width: 16px;
   height: 16px;
}

@media
  (min--moz-device-pixel-ratio: 2),
  (-o-min-device-pixel-ratio: 2/1),
  (-webkit-min-device-pixel-ratio: 2),
  (min-device-pixel-ratio: 2) {

  span.rss-icon {
    /* Size of retina sprite image is 400px ✕ 400px */
    background-image: url(sprite-2x.png);
    /* Bring down size to 1x size */
    background-size: 200px 200px;
  }

}

Вот демонстрация этого.

Жидкость — Фиксированная — Жидкость

Нильс Маттейс спрашивает:

Макет, который я пытаюсь создать, — L1F2L3, что означает, что первый и третий столбцы являются жидкими, а центральный столбец — фиксированным. Я пробовал кое-что, и хотя пару раз я был близок к этому, решение меня никогда не радовало. У вас есть что-нибудь по этому поводу?

Метод Flexbox в CSS может связать вас с этим решением, и это довольно просто:

<div class="grid">
  <div class="col fluid">
    ...
  </div>
  <div class="col fixed">
    ...
  </div>
  <div class="col fluid">
    ...
  </div>
</div>
.grid {
  display: -webkit-flex;
  display: flex;
}
.col {
  padding: 30px;
}
.fluid {
  flex: 1;
}
.fixed {
  width: 400px;
}

Флексбокс

Смотрите демо. Я не решаюсь рекомендовать это как решение «реального мира», потому что спецификация flexbox в последнее время довольно сильно изменилась. Приведенный выше код представляет собой более новый синтаксис, который на момент написания этой статьи поддерживается только Chrome 21+ (см. таблицы поддержки). Существует более старый синтаксис (см. демонстрацию), который имеет более широкую поддержку браузеров, но, вероятно, когда-нибудь перестанет работать.

Если вы находитесь в положении, когда вы знаете, что средний столбец будет самым длинным, вы можете сделать так, чтобы родительский контейнер имел процентное заполнение с правой и левой сторон и абсолютно позиционировал левый и правый столбцы внутри него (на ширине этого процента). ). И если вы этого не знаете, вы всегда можете измерить три столбца с помощью JavaScript и установить высоту родительского контейнера на самый высокий из трех.

Новый

Питер Карлштейн спрашивает:

Каковы самые полезные советы, приемы и приемы CSS, которые вы узнали за последнее время? Можешь представить парочку своих недавних «Ага!» моменты с CSS?

Возиться с последними вещами flexbox (как я делал выше) было довольно весело, хотя пока не очень полезно.

В последние несколько месяцев я полностью перешел на использование Compass, который оказался чрезвычайно полезным. Со временем я устал от повторяющихся и привередливых вещей в CSS. Но Sass и Compass снова превращают создание CSS для меня в удовольствие.

Что касается небольших «трюков» CSS, мне приходилось использовать это несколько раз в последнее время. По сути, если каким-то образом сверхдлинная строка текста попадет в контейнер без пробелов, он вырвется из контейнера очень неуклюжим перекрывающимся образом. Чаще всего это происходит с пользовательским контентом и пользователями, вставляющими URL-адреса. Мне нравится применять этот класс к любым текстовым контейнерам, созданным пользователем:

.prevent-text-breakouts {
  -ms-word-break: break-all;
      word-break: break-all;
      word-break: break-word;
  -webkit-hyphens: auto;
     -moz-hyphens: auto;
          hyphens: auto;
}

До:

Длинные строки текста, вырывающиеся из контейнера.

После:

Исправлены длинные строки текста.

Кроме того, старая мягкая коробка дяди Дэйва — это хороший ящик для инструментов.

Относительный размер шрифта

Грег Нельсон спрашивает:

Как вы думаете, когда-нибудь (надеюсь, скоро) появится способ установить размер шрифта в прямой зависимости от ширины его родительского элемента или какой-либо другой действительно отзывчивой меры? например, размер шрифта

может быть в процентах от ширины div боковой панели, внутри которого он находится, так что при изменении ширины экрана (и ширины боковой панели, если это также процент от ширины

) размер шрифт тоже изменится?

Да, это идет! Вы сможете установить размер шрифта с помощью vw а также vh единицы. Они обозначают «ширину области просмотра» и «высоту области просмотра». 1vw = 1% ширины текущего окна браузера. Вот спецификация CSS для этого. И вот инструкция по их использованию. Вот как это будет работать:

На момент написания этой статьи поддержка была только в Chrome 20+ и IE 10. Если вам сейчас нужна полная поддержка браузера (и вы не против использовать немного JavaScript), вы можете использовать FitText.js (лучше всего только для заголовков ).

FitText

Эффективность медиазапросов

Марк Роланд спрашивает:

При организации медиа-запросов в файле CSS есть ли преимущества или недостатки в том, как они сгруппированы?

Например, существует ли разница в производительности браузера при использовании нескольких блоков медиа-запросов (например, «@media screen и (max-width: 480px) { }» ), чтобы стили элементов определялись вместе (заголовок, навигация, нижний колонтитул и т. д.) по сравнению с помещением всех стилей элементов для конкретного медиа-запроса в один блок медиа-запроса?

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

Технически, наверное, да. Худшее оскорбление — это дополнительный размер файла, который он вызывает. Использование одного явно меньше текста, чем использование нескольких. Но дело в том, что если вы сжимаете/выкачиваете контент (вероятно, так оно и есть), он съест этот повторяющийся код на завтрак и даже не слишком сильно увеличит размер файла. Что касается времени синтаксического анализа CSS, то все происходит так быстро, что вам действительно не нужно об этом думать.

Так что на практическом уровне: не беспокойтесь об этом. Если у вас есть время, чтобы сделать свой веб-сайт быстрее, оптимизация изображений без потерь будет иметь гораздо большее значение.

Имиджоптим

Если кто-то не понимает, почему Марк спрашивает об этом, скорее всего, это из-за способности Sass и LESS «вкладывать» медиа-запросы (см.). Это действительно полезная функция, которая делает работу с медиа-запросами намного более чистой и интуитивно понятной, как вы, автор. Однако конечный результат приводит к множеству дублированных медиа-запросов. Я знаю, что решение этой проблемы находится на уме ведущего разработчика из Sass.

Вперед!

Продолжайте в том же духе, ребята! Есть хороший? Присылайте, и мы выберем лучшие для следующего выпуска.

Источник изображения на первой странице.



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Вопросы и ответы по кодированию с Крисом Койером: адаптивные спрайты и эффективность медиазапросов

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Кнопка «Наверх»