Источник: Nuances of Programming
В статье пойдет речь о нескольких редко упоминаемых в технической литературе свойствах CSS. Тем не менее их использование повлечет за собой повышение скорости и качества разработки веб-интерфейсов.
Экспериментальные свойства также рассматриваются в статье, но большинство функционала все-таки доступно во всех современных браузерах. Однако следует уточнить перед запуском производственного решения, какие браузеры поддерживают каждое из используемых вами свойств.
Итак, вы готовы к небольшому путешествию в удивительный и почти безграничный мир CSS?
Свойства display: grid и place-items
CSS-свойства grid и place-items позволяют удобно выравнивать элементы по горизонтали и вертикали с помощью всего двух строк кода:
.parent {
display: grid;
place-items: center;
}
Свойство place-items похоже на сокращенную для удобства версию свойств justify-items и align-items.
Его можно применять к одной или нескольким (дочерним) ячейкам одновременно.
.parent {
display: grid;
grid-template-columns: 1fr 1fr;
place-items: center;
}
Свойства display: flex и margin: auto
Еще один современный способ выравнивания элементов по горизонтали и вертикали — комбинирование свойства display: flex с margin: auto:
.parent {
display: flex;
}
.child {
margin: auto;
}
Было бы справедливо сказать, что тот же самый результат достигается с помощью следующей инструкции:
.parent {
display: flex;
justify-content: center;
align-items: center;
}
Свойства display: flex и gap
Раз уж статья затрагивает использование Flexbox, то стоит упомянуть: наконец-то реализована возможность устанавливать промежутки между элементами flex с помощью свойства gap (очень полезный функционал):
.parent {
display: flex;
flex-wrap: wrap;
gap: 1em;
}
Свойство display: inline-flex
Использование свойства display: inline-flex позволяет создавать строчные элементы (inline), которые ведут себя с окружающими их элементами похоже на свойство Flexbox. Вместо тысячи слов — один пример!
- HTML-файл:
CSS-файл:
Свойства column-count, column-gap и column-rule для создания колонок таблицы
Использование вышеперечисленных свойств позволяет разделить текст внутри элемента-блока на колонки.
- column-count задает количество колонок;
- column-gap указывает размер промежутка между колонками;
- column-rule отвечает за стиль отображения вертикальной линии между колонками.
Существует также сокращенное свойство columns, заменяющее column-count и column-width.
- HTML-файл:
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quis reprehenderit inventore ad libero officia, necessitatibus laudantium corporis veniam quae, fugiat dolores quaerat corrupti tempore ipsa consequuntur similique explicabo ducimus commodi expedita. Dolore commodi nesciunt harum? Consequuntur, voluptatibus odio!
</p>
- CSS-файл:
Свойство background-repeat
Свойство background-repeat задает порядок заполнения фона указанным изображением. Значение round равномерно распределяет изображения по всей ширине контейнера, а значение space добавляет небольшие отступы между изображениями.
- HTML-файл:
<div class="repeat"></div> <div class="round"></div> <div class="space"></div>
- CSS-файл:
Свойство background-blend-mode
Свойство background-blend-mode задает порядок, в котором фоновое изображение и цвет (или несколько фоновых изображений/цветов) должны смешиваться друг с другом.
Данному свойству можно задать следующие значения:
- color
- color-burn
- color-dodge
- darken
- difference
- exclusion
- hard-light
- hue
- lighten
- luminosity
- multiply
- overlay
- saturation
- screen
- soft-light
Вы когда-нибудь работали с Photoshop? Тогда, скорее всего, вы поймёте, о чем сейчас пойдёт речь.
Предположим, что в вашем распоряжении находится черно-белое изображение, подобранное вами для фона. Но в то же время вы хотите, чтобы изображение было цветным. Как же вам этого добиться?
- HTML-файл:
<h1> look at
<br /> the sky
</h1>
- CSS-файл:
Свойство background-clip
Свойство background-clip определяет, насколько фоновый цвет или фоновое изображение может выйти за пределы padding элемента. Одним из самых интересных значений данного свойства можно назвать text, как в следующем примере.
- HTML-файл:
<p>nature</p>
- CSS-файл:
Свойство filter
Данное свойство позволяет применять к элементам некоторые визуальные эффекты.
Функции из следующего списка доступны в качестве возможных значений свойства filter:
- url()
- blur()
- brightness()
- contrast()
- drop-shadow()
- grayscale()
- hue-rotate()
- invert()
- opacity()
- saturate()
- sepia()
Теперь ознакомимся с примером реализации функционала изменения цветовых тем (или схем) на сайте для тех, кто ленится.
- HTML-файл:
<input type="checkbox" class="theme" />
<p class="text"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quam dolores quod debitis veritatis placeat nemo iste natus maxime. Adipisci quos quia veritatis nemo quaerat magnam dolorum tempora voluptatum deleniti consectetur enim ea facere nihil sed ut laborum hic, sapiente vel ratione harum, vero iusto laudantium. Porro accusantium a harum ipsam!
</p>
- CSS-файл:
На сайте CSSgram вы найдете пример использования CSS-свойства filter для создания фильтров, очень похожих на те, что есть в Instagram.
Свойство filter со значением drop-shadow
Свойство filter с установленным значением drop-shadow(), в отличие от box-shadow, которое аналогично по применяемому эффекту, позволяет добавить тень к самому изображению (в формате PNG), а не к блочному элементу, который её обрамляет.
- HTML-файл:
<input type="checkbox" class="theme" />
<p class="text"> Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quam dolores quod debitis veritatis placeat nemo iste natus maxime. Adipisci quos quia veritatis nemo quaerat magnam dolorum tempora voluptatum deleniti consectetur enim ea facere nihil sed ut laborum hic, sapiente vel ratione harum, vero iusto laudantium. Porro accusantium a harum ipsam!
</p>
- CSS-файл:
Свойство object-fit
Свойство object-fit управляет соотношением сторон заменяемых элементов, таких как img и video, если они имеют ширину или высоту, а также руководит процессом масштабирования.
Например, значение scale-down позволяет сохранить соотношение сторон изображения независимо от размера блока.
- HTML-файл:
<img src="https://pics.freeicons.io/uploads/icons/png/21088442871540553614-64.png" alt="js" />
<img src="https://pics.freeicons.io/uploads/icons/png/20167174151551942641-64.png" alt="react" />
<img src="https://pics.freeicons.io/uploads/icons/png/191213921552037062-64.png" alt="vue" />
- CSS-файл:
Свойство object-position используется для выравнивания содержимого в любом выбранном заменяемом элементе в пределах родительского блочного элемента.
Свойство cursor для настройки параметров отображения курсора
Знаете ли вы, что помимо значков курсора, по умолчанию предоставляемых браузером (например, cursor: pointer), мы можем задавать собственные растровые и векторные изображения в формате SVG?
- HTML-файл:
<div class="image">image</div>
<div class="svg">svg</div>
- CSS-файл:
Свойство scroll-behavior
Свойство scroll-behavior с установленным для него значением smooth, позволяет легко реализовать плавную прокрутку между подразделами страницы.
- HTML-файл:
Свойство text-overflow
Свойство text-overflow со значением, установленным как ellipsis, позволяет добавить символ троеточия в конец текста, но только в том случае, если текст начинает выходить за пределы контейнера.
- CSS-файл:
p {
text-overflow: ellipsis;
}
Свойство caret-color
Свойство caret-color задает цвет для каретки текста. Это такой видимый маркер (символ |), явно указывающий, куда прямо сейчас вставляется следующий набранный пользователем символ.
- CSS-файл:
CSS-правило @supports
Правило @supports позволит вам выполнить проверку используемого свойства или комбинации свойства со значением на поддерживаемость конкретным браузером пользователя.
- CSS-файл:
@supports (display: grid) {
section {
display: grid;
}
}
@supports (image-rendering) {
img {
image-rendering: pixelated;
}
}
Функция var()
Функция var() позволяет использовать значения пользовательских переменных в качестве значений для свойств CSS. Вторым необязательным параметром этой функции передается резервное значение.
Функция calc()
Функция calc() используется для указания уже посчитанного значения тем свойствам, которые применяют в качестве значений показатель размера, угла, времени или числа. Это позволяет основывать эти значения на результате операций сложения или вычитания различных единиц измерения.
Обычно абсолютно позиционированный элемент выравнивается по горизонтали и вертикали следующим образом.
- CSS-файл:
.modal {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
Когда нам известны размеры элемента, можно сделать следующее.
- CSS-файл:
.modal {
position: absolute;
top: calc(50% - 50px);
left: calc(50% - 100px);
}
Функция attr()
С помощью функции attr() можно получить значение атрибута выбранного элемента и использовать его в стилях CSS.
Всплывающие подсказки реализуются с помощью CSS следующим образом.
- HTML-файл:
<p>Здесь <span data-tooltip="tooltip">текста</span> текста</p>
- CSS-файл:
Псевдокласс :target
С помощью псевдокласса :target создаются модальные окна, которые работают без использования JavaScript.
- HTML-файл
- CSS-файл
Псевдокласс ::marker
Ранее было весьма распространено удаление маркеров списка с помощью свойства list-style: none, а также добавление собственных изображений для маркеров с помощью псевдоэлементов ::before или ::after. Теперь есть более простой способ настройки маркеров списка — можно использовать псевдоэлемент ::marker.
- HTML-файл:
<ul> <li>Prima</li> <li>Altera</li> <li>Triera</li> </ul>
- CSS-файл:
Псевдокласс ::selection
Псевдоэлемент ::selection позволяет настроить внешний вид для выделения текста.
- CSS-файл:
Спасибо за чтение, хорошего дня!
Читайте также:
Оригинал статьи Alexey Shepelev: 22 CSS Tricks That Can Make You a Layout Ninja