Сделать заказ

HTML6 + CSS4 – больше, чем разметка. Статья про CSS-новинки 2024



Когда язык разметки превращается в язык программирования – происходит чудо!
Тогда гораздо меньше нужен JS

Карусель на CSS с прилипанием (привязкой прокрутки к каждому блоку)

Добавить прилипание на iOS можно css-хаком: -webkit-overflow-scrolling: touch;

Более сложная структура карусели, с карточками с фото и текстом есть в демо

Поддержка предпочтений цветовой схемы пользователя

<meta name="color-scheme" content="dark light">

Плавный скролл к объекту при нажатии на ссылку-якорь без JS

@media (prefers-reduced-motion: no-preference) {
.smooth-scroll {
scroll-behavior: smooth;
}
}

А при наличии прилипающей шапки добавить:

scroll-margin: 100px

Другие свойства скролла. Анимация для скролла по вертикали (y), тип анимации (mandatory) - докручивание при начале движения
Если заменить mandatory на proximity - анимация будет возвращаться на предыдущий элемент, если не докрутили.
scroll-snap-align позволяет сделать привязку анимации к месту: сначала, в конце, по центру.

.grid {
    width:400px; height:400px;
    overflow: scroll;
    scroll-snap-type: y mandatory;
}
.grid > div {
    height:400px;
    display:flex;
    scroll-snap-align:start;
}

Нажатие сквозь объект

pointer-events: none

Наложение фона с градиентом и фото

background: linear-gradient(301deg, rgba(249,245,243,0) 35%, 
rgba(249,245,243,0.95) 95%), url('theme/fon.jpg') right no-repeat; 
background-size:cover,cover; margin-top:10px; border-radius:20px;

Использование jpg с белым фоном вместо прозрачных PNG24 – позволяет делать белый фон прозрачным и сильно экономит размер файлов

mix-blend-mode: multiply;

Круговые диаграммы можно сделать на чистом CSS, но предпочтительнее использовать SVG

Часто попадаются отзеркаленные фильмы. Развернуть видео в браузере можно с помощью css

transform: scale(-1, 1);

Применить к элементу видеоплеера на странице

Параллакс на чистом CSS с помощью свежих анимаций пока не поддерживают Safari (превращающийся в новый IE) и Firefox. Но есть хаки еще 2014 года. И максимально простой параллакс на чистом CSS.

Реальная видимая высота и ширина, в отличии от известных ранее vw и vh. Помогает особенно в мобильной верстке. Например, закрепление снизу блока навигации.

height: 100dvh;
width: 100dvw;

Радиус закругления вложенных элементов, если все элементы с закруглением, можно просчитывать автоматически

.parent {--nested-radius: calc(var(--radius) - var(--padding));}
.nested {border-radius: var(--nested-radius);}

Псевдокласс :target актвируется при нажатии по якорю

:target { border: 2px solid black; }

На нем можно сделать выделение определенного блока, при переходе к нему по якорю, или создать фотогалерею, аналогично lightbox, без JS
Об этом писали на Хабре еще в 2011 году... Тогда реализация оставляла желать лучшего, т.к. остальные возможности разметки были еще не так хороши, как сейчас.

<a href="#img1">
<img src="./small.jpg">
</a>
<a href="#" class="lightbox" id="img1">
<span style="background-image: url('./large.jpg')"></span>
</a>
.lightbox { display: none; position: fixed; z-index: 999; 
top: 0; left: 0; right: 0; bottom: 0; 
background: rgba(0, 0, 0, 0.8); }
.lightbox:target {display: block;}

Когда нужен focus-trap (чтобы фокуc не выходил за пределы диалогового окна) – используется HTML-атрибут inert

<article class="content" inert><!-- контент --></article>
<button type="button" onclick="window.myDialog.showModal()">Открыть как модалку</button>
<dialog aria-label="Приветствие (заголовок)">
<form method="dialog"><button>Закрыть</button></form>
</dialog>

Окно можно открыть с помощью JavaScript-методов:
show() — добавляет атрибуты open и aria-modal="false".
showModal() — открывает в режиме «модального окна». Добавляет атрибуты open и aria-modal="true". Появляется подложка в виде псевдоэлемента ::backdrop, который можно стилизовать.

Аккордеон через теги detailes и summary пока поддерживается только Хромом. Но аккордеоны можно реализовать на чистом CSS с помощью списков LI, якорей или radio-кнопок. Часто в компоненте “accordion” допускается раскрытие только одного элемента со скрытием остальных. HTML-элементы details и summary так делать не умеют. Они возвращают событие toggle при переключении и этим можно воспользоваться, добавив совсем немного javascript

Ленивая загрузка фото и фреймов через HTML-атрибут loading

loading="lazy"

Изменяемый размер панелей на чистом CSS. Пример 1 и Пример 2за счет свойства

resize: horizontal;

Свойство CSS: aspect-ratio - позволяет задать соотношение сторон для элемента. Особенно актуально для резиновой верстки:

.aspect-ratio { aspect-ratio: 16/9; }

Свойство clamp(минимальное (мобильное), предпочитаемое, максимальное (десктопное) значение) – позволяет задать диапазон значений для свойства. Сетки, колонки, анимации, переходы – настраивать можно всё. Актуально, когда есть две верстки - мобильная и десктопная и нужно подстроить все промежуточные версии. Онлайн генератор которым лично пользуюсь при работе с типографикой для генерации адаптивных размеров для font-size можно найти по ссылке.

.clamp-example { font-size: clamp(16px, 2vw, 24px); }

Кастомизация Input

// обращение к рамке инпута после нажатия
input:focus {outline: 1px dolid blue}
// обращение к тексту по-умолчанию
input::placeholder {color:blue;}
// настройка цвета каретки (текстового мигающего курсора)
input {caret-color:blue;}


Counter на CSS – позволяет создавать счетчики для элементов, динамическую нумерацию (в кавычках указывается разделитель). Это как списки OL > LI, только нумерация для любых элементов.

ol { counter-reset: my-counter; }
li::before {
  counter-increment: my-counter;
  content: counter(my-counter) ">> ";
}
// или
body { counter-reset: my-counter; }
h2::before {
  counter-increment: my-counter;
  content: counter(my-counter) ": ";
}

Свойство Flexbox order – позволяет изменять порядок элементов внутри контейнера Flexbox. По-умолчанию order всех элементов = 0.

.flex-container { display: flex; }
.flex-item:nt-child(1) { order: 2; }

Свойство clip-path - позволяет обрезать элементы по заданной области. Областью может быть и polygon() с определенными координатами. Также можно добавить анимацию перехода и эффект hover. При наведении может плавно перетекать друг в друга различная маска.

.clip-path-example {
width:400px; height:400px;
background:blue;
clip-path: circle(50%);
transition: all 300ms ease-in-out;
}
.clip-path-example:hover { clip-path: circle(100%); }

Свойство perspective - позволяет задать перспективу для элементов в 3D-пространстве, трансформацию в 3 осях. Чем больше значение perspective – тем дальше от нас угол обзора.

.container {
    width:400px; height:400px;
    border: 1px solid blue;
    perspective: 200px;
}
.figure {
    width:400px; height:400px;
    background: lightblue;
    transform: rotateX(46deg);
}

Новый формат цвета OKLCH – для OLED-экранов и устройств Apple + улучшенный контроль яркости.


Ждем HTML7 + CSS5...

0
0

Комментарии


Ваше имя:
Ваш вопрос или комментарий:
Жирный
Цитата
: )
Введите код:

Закрыть


Добавьте в соц. сети:
© 1999—2024, Влад Мерк

Мои Телеграм-каналы:

💎 Дизайн сайтов: Инновации и тренды
💎 Свежие фишки программирования и разметки (HTML, CSS, PHP, JS)
💎 Всё про искусственный интеллект
💎 Развитие, деньги и бизнес
Интересно – подписывайтесь.
Сайт работает на CMS «Движок»

Задайте вопрос
или пришлите задание для расчета стоимости
или расскажите о вашей ситуации

А можно сразу написать на почту merkvlad@gmail.com
или в Telegram, WhatsApp, Viber.

Фамилия, имя:
Email:
Телефон:
Текст письма: