Сохраняйте соотношение сторон вашего сайта (полимер внутри)
Одна из вещей, которые я больше всего ненавижу во время блуждания по сети, - это заходить на веб-сайты с раздражающим потоком контента. Вы можете обнаружить, что читаете текст, и через несколько секунд он уже исчез, потому что изображение только что загрузилось и переместило все содержимое вниз. Чтобы наши пользователи были довольны, мы должны обеспечить максимальное удобство использования, и я хочу поделиться с вами небольшим советом, который поможет вам на один шаг ближе к нему.
Иногда при асинхронной загрузке содержимого вы заранее знаете размер содержимого или, лучше сказать, соотношение сторон (например, изображения, встроенное содержимое), поэтому вы можете поместить это содержимое в контейнер (простой div
) и соответственно установить его размер. Таким образом, контейнер уже будет удерживать место для своего дочернего элемента и не позволит содержимому растекаться повсюду. В большинстве случаев вы хотели бы установить ширину в процентных единицах, поэтому может быть сложно установить соотношение сторон содержимого с помощью чистого CSS. Чтобы решить эту проблему, позвольте мне рассказать вам кое-что о браузерах (сначала это может показаться нелогичным, но подождите…): отступы и поля (как по вертикали, так и по горизонтали) рассчитываются по ширине элемента Только! Это означает, что если мы установим следующий css для элемента width: 100px; padding-top: 20%
. В результате padding-top
будет равно 20px
. Теперь, когда мы знаем, как работают браузеры, мы можем использовать это для нашей же пользы. Установите padding-top
псевдоэлемента :before
контейнера в соответствии с соотношением сторон (например, для набора содержимого 16: 9 padding-top: 56.25%
) и установите для дочернего position
значение absolute
вместе с top: 0; left: 0; width: 100%; height: 100%
. Таким образом мы получаем контент идеального размера, который не будет вызывать поток контента даже при асинхронной загрузке.
Вот ссылка на код с демонстрацией этой техники https://codepen.io/idoshamun/pen/PGxNKr
Если вы, как и я, любитель полимеров, вам будет несложно реализовать это в своем проекте с помощью нашего tem-container
веб-компонента.
Загляните на страницу GitHub и демо!
Спасибо за внимание! Если вам это понравилось, порекомендуйте его, чтобы другие тоже получили удовольствие, нажав кнопку в форме сердца.
Не стесняйтесь обращаться ко мне в Twitter, Linkedin и здесь, на Medium.