Редактирование кода с помощью веб-версии Visual Studio Code (предварительная версия)
Из студии дизайна вы можете редактировать код сайта с помощью веб-версии Visual Studio Code. Эта функция позволяет редактировать статическое содержимое, код HTML, CSS, Liquid и JavaScript для следующих метаданных веб-сайта:
| Метаданные | Контент |
|---|---|
| Расширенные формы (многошаговые формы) | JavaScript |
| Базовые формы | JavaScript |
| Фрагменты содержимого | Все поддерживаемые фрагменты содержимого |
| Списки | JavaScript |
| Веб-файлы | Просмотр и загрузка медиафайлов. Редактирование текстовых файлов (файлов кода). |
| Веб-страницы | Все поддерживаемое содержимое (для каждого языка), JavaScript и CSS |
| Веб-шаблоны | Все поддерживаемое содержимое |
Вы не сможете создавать записи метаданных, только добавлять и редактировать содержимое, код и просматривать/загружать вложенные файлы.
Веб-версия Visual Studio Code предоставляет бесплатное программное обеспечение Microsoft Visual Studio Code, не требующее установки. Оно работает полностью в вашем браузере, что позволяет вам быстро и безопасно просматривать код сайта и вносить небольшие изменения в код. Дополнительная информация: Веб-версия Visual Studio Code для работы в Интернете.
- Это предварительная версия функции.
- Предварительные версии функций не предназначены для использования в производственной среде, а их функциональность может быть ограничена. Они доступны перед официальным выпуском, чтобы клиенты могли досрочно получить доступ и предоставить отзывы.
- Первый раз загрузка веб-версии Visual Studio Code может занять некоторое время, так как будут установлены необходимые расширения для этой функции.
- Операции создания, удаления и переименования файлов не поддерживаются.
- Эта функция использует веб-расширение Power Platform Tools. Веб-расширения ограничены песочницей браузера и поэтому имеют ограничения по сравнению с обычными расширениями.
- Интерфейс командной строки Power Platform не поддерживается.
- Возможности веб-расширения Power Platform Tools ограничены опытом редактирования кода Power Pages.
- Эта функция недоступна в правительственном облаке сообщества (GCC), правительственном облаке сообщества High (GCC High) и министерстве обороны (DoD). Пользователи в этих регионах будут использовать приложение Управление порталами для редактирования кода. Дополнительную информацию см. в разделе Редактирование кода в приложении «Управление порталами».
Редактирование кода доступно в дизайн-студии
Функция редактирования кода позволяет пользователям редактировать код в следующих областях:
- Редактирование кода веб-страницы из рабочей области страниц
- Код шаблона заголовка из рабочей области страниц
- Редактирование кода пользовательской таблицы CSS из рабочей области стиля
- Редактировать пользовательский код JavaScript для многошаговых форм
- Редактировать пользовательский код JavaScript для базовых форм
- Редактирование пользовательского кода JavaScript для списков
- Редактирование фрагментов содержимого
- Изменение веб-шаблонов
- Просмотр и загрузка веб-медиафайлов (изображений)
- Редактирование текстовых веб-файлов (CSS, JavaScript, другое)
Давайте посмотрим, как редактировать код, используя эти области.
Редактирование кода веб-страницы из рабочей области страниц
Когда вы открываете студию дизайна Power Pages, вы видите параметр Редактировать код в меню страниц 1 и правом верхнем углу экрана 2 .
Код шаблона заголовка из рабочей области страниц
Выберите Редактировать заголовок сайта, затем выберите Редактировать код, чтобы открыть редактор кода.

Редактирование кода пользовательской таблицы CSS из рабочей области стиля
Перейдите в рабочую область стиля и выберите меню Изменить код доступной пользовательской таблицы CSS, чтобы открыть редактор кода.

Уведомление о конфликте слияния
Если вы сотрудничаете с другими разработчиками, могут возникнуть ситуации, когда вы будете работать над одним и тем же исходным кодом. Если вы попытаетесь сохранить изменения в устаревшем файле, вы получите уведомление о необходимости Сравнить или Перезаписать изменения.
Сравнение кода покажет текущий код рядом с вашим кодом и позволит вам вернуться к существующим изменениям, принять каждое изменение по отдельности или использовать свои изменения и перезаписать существующее содержимое.

Вы сможете просмотреть последнее содержимое и либо объединить, либо перезаписать код, либо отменить изменения.
Учебное пособие: редактирование кода сайта с помощью веб-версии Visual Studio Code
В этом руководстве вы пошагово отредактируете код сайта с помощью Visual Studio Code для Интернета.
Шаг 1. Изменение кода сайта с помощью Visual Studio Code для интернета

- Откройте свой сайт в студии дизайна Power Pages
- В правом верхнем углу выберите Изменить код
- Выберите Открыть Visual Studio Code из диалогового окна подтверждения.
- Войдите в Visual Studio Code, используя ваши учетные данные среды.
- Дождитесь инициализации веб-расширения Power Platform Tools и загрузки кода веб-страницы на левой панели.
Шаг 2. Обновление содержимого и кода
- Проводник в левой части экрана загружает соответствующие метаданные конфигурации веб-сайта, которые можно редактировать с помощью Visual Code для Интернета.

- Внесите изменения в соответствующие файлы метаданных и нажмите Ctrl+S, чтобы сохранить изменения.
- Перейти в студию дизайна и выберите Синхронизировать, чтобы получить все обновления в текущем сеансе студии дизайна.

- Выберите Предварительный просмотр, чтобы увидеть изменения на сайте Power Pages.
Использование Visual Studio Code для Интернета или Visual Studio Code Desktop
Пользователи могут редактировать, отлаживать и просматривать изменения в изменениях страниц, используя веб-версию Visual Studio Code без необходимости использования внешних инструментов. Visual Studio Code Desktop предоставляет другие расширенные функции для редактирования всех метаданных сайта и интеграции с платформами GitHub и процессами непрерывной интеграции/непрерывной разработки (CI/CD).
Функция VS Code в Интернете VS Code Desktop Создание новых записей метаданных конфигурации веб-сайта No Ограничено веб-страницами, шаблонами страниц, веб-шаблонами, фрагментами содержимого и веб-файлами. Прямое редактирование сайта Да No Редактирование метаданных сайта Ограничено редактированием веб-страниц, фрагментов содержимого, базовых форм, многошаговых форм, списков и веб-шаблонов. Вся конфигурация метаданных Power Pages Предварительный просмотр сайта Плановое Плановое Поддержка интерфейса командной строки Power Platform No Да Расширенный рабочий процесс с привязкой к ЦП и хранилищу — поддержка ReactJS или другого инструмента для сборки платформы No Да Интеграция с GitHub с такими возможностями, как возврат кода, получение кода, управление конфликтами и слияние. No Да Редактирование кода в приложении «Управление порталами»
- Использование веб-версии Visual Studio Code для редактирования веб-сайтов не поддерживается в правительственном облаке сообщества (GCC), правительственном облаке сообщества High (GCC High) и министерстве обороны (DoD). Пользователи в этих регионах могут использовать приложение Управление порталами для внесения необходимых изменений.
Если регион не поддерживает Visual Studio Code for the Web, при выборе значка редактора кода >на панели команд откроется приложение Управление порталами.
Переходите к соответствующим записям веб-страниц, базовых форм, многошаговых форм, списков или веб-шаблонов, чтобы редактировать код.
Type Местоположение кода Веб-страница Выберите запись веб-страницы. Выберите запись содержимого веб-страницы в разделе Локализованное содержимое . Текст страницы можно редактировать в поле Текст (HTML) на вкладке Общие. Код элементов Пользовательский код JavaScript и Пользовательский CSS можно редактировать на вкладке Дополнительно. Базовая форма Выберите запись базовой формы. Редактировать Пользовательский код JavaScript можно на вкладке Дополнительные параметры. Многошаговая форма Выберите запись многошаговой формы. Выберите шаг многошаговой формы на вкладке Шаги формы. Редактировать Пользовательский код JavaScript можно на вкладке Параметры формы. Список (List) Выберите запись списка. Редактировать Пользовательский код JavaScript можно на вкладке Параметры. Веб-шаблон Выберите запись веб-шаблона. Редактировать Источник можно на вкладке Общие. Сохраните запись и просмотрите свой веб-сайт, чтобы протестировать отредактированный код.
См. также
Расширение файла CSS

Файлы CSS используются для форматирования содержимого и описания представления веб-сайта WWW.
Какие данные могут содержать файлы CSS?
Файлы с расширением CSS содержат информацию о том, как данные элементы HTML должны отображаться на данной веб-странице. Файлы CSS хранят такую информацию, как:
- настройки шрифта (тип, размер, цвет, стиль),
- междустрочный интервал и отступ,
- встроенные элементы HTML,
- ссылки на ресурсы (графики, таблицы, диаграммы и т. д.).
CSS — это также название языка разметки, используемого для создания файлов CSS. Разметка CSS была разработана для разделения содержимого веб-сайта и представления. Это разделение делает изменение характеристик представления веб-сайтов более простым и гибким, не затрагивая содержание. Файлы CSS также позволяют отображать веб-сайты по-разному в зависимости от устройства, с которого к ним осуществляется доступ (будь то мобильное устройство, настольный ПК и т. д.), для гораздо лучшего взаимодействия с пользователем.
Могу ли я редактировать файлы CSS?
Файлы CSS хранят данные в текстовом формате, поэтому их можно легко редактировать с помощью текстового редактора. Однако рекомендуется редактировать файлы CSS с помощью специальных инструментов, чтобы избежать возможных ошибок. Такие инструменты автоматически выделяют ключевые слова, исправляют синтаксические ошибки и предлагают функции автозаполнения.
Программы, которые поддерживают CSS расширение файла
Следующий список содержит программы, сгруппированные по 4 операционным системам, которые поддерживают CSS файлы. Файлы с суффиксом CSS могут быть скопированы на любое мобильное устройство или системную платформу, но может быть невозможно открыть их должным образом в целевой системе.
Программы, обслуживающие файл CSS

Windows

MAC OS

Linux
Updated: 10/05/2023
Как открыть файл CSS?
Проблемы с доступом к CSS могут быть вызваны разными причинами. К счастью, наиболее распространенные проблемы с файлами CSS могут быть решены без глубоких знаний в области ИТ, а главное, за считанные минуты. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Установите Adobe Dreamweaver программное обеспечение

Проблемы с открытием и работой с файлами CSS, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами CSS на вашем компьютере. Наиболее очевидным решением является загрузка и установка Adobe Dreamweaver или одной из перечисленных программ: Adobe ColdFusion, WeBuilder, Microsoft Visual Studio. В верхней части страницы находится список всех программ, сгруппированных по поддерживаемым операционным системам. Одним из наиболее безопасных способов загрузки программного обеспечения является использование ссылок официальных дистрибьюторов. Посетите сайт Adobe Dreamweaver и загрузите установщик.
Шаг 2. Проверьте версию Adobe Dreamweaver и обновите при необходимости

Вы по-прежнему не можете получить доступ к файлам CSS, хотя Adobe Dreamweaver установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Причиной того, что Adobe Dreamweaver не может обрабатывать файлы с CSS, может быть то, что программное обеспечение устарело. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Adobe Dreamweaver.
Шаг 3. Настройте приложение по умолчанию для открытия CSS файлов на Adobe Dreamweaver
После установки Adobe Dreamweaver (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия CSS файлов. Метод довольно прост и мало меняется в разных операционных системах.

Процедура изменения программы по умолчанию в Windows

- Нажатие правой кнопки мыши на CSS откроет меню, из которого вы должны выбрать опцию Открыть с помощью
- Далее выберите опцию Выбрать другое приложение а затем с помощью Еще приложения откройте список доступных приложений.
- Последний шаг — выбрать опцию Найти другое приложение на этом. указать путь к папке, в которой установлен Adobe Dreamweaver. Теперь осталось только подтвердить свой выбор, выбрав Всегда использовать это приложение для открытия CSS файлы и нажав ОК .
Процедура изменения программы по умолчанию в Mac OS
- В раскрывающемся меню, нажав на файл с расширением CSS, выберите Информация
- Откройте раздел Открыть с помощью, щелкнув его название
- Выберите из списка соответствующую программу и подтвердите, нажав « Изменить для всех» .
- Наконец, это изменение будет применено ко всем файлам с расширением CSS должно появиться сообщение. Нажмите кнопку Вперед , чтобы подтвердить свой выбор.
Шаг 4. Убедитесь, что CSS не неисправен
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл CSS действительным. Вероятно, файл поврежден и, следовательно, недоступен.

1. Проверьте CSS файл на наличие вирусов или вредоносных программ.
Если CSS действительно заражен, возможно, вредоносное ПО блокирует его открытие. Рекомендуется как можно скорее сканировать систему на наличие вирусов и вредоносных программ или использовать онлайн-антивирусный сканер. CSS файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Проверьте, не поврежден ли файл
Если вы получили проблемный файл CSS от третьего лица, попросите его предоставить вам еще одну копию. Возможно, файл был ошибочно скопирован, а данные потеряли целостность, что исключает доступ к файлу. Это может произойти, если процесс загрузки файла с расширением CSS был прерван и данные файла повреждены. Загрузите файл снова из того же источника.
3. Убедитесь, что у вас есть соответствующие права доступа
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Войдите в систему, используя учетную запись администратора, и посмотрите, решит ли это проблему.
4. Проверьте, может ли ваша система обрабатывать Adobe Dreamweaver
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы CSS. Закройте все работающие программы и попробуйте открыть файл CSS.
5. Проверьте, есть ли у вас последние обновления операционной системы и драйверов
Современная система и драйверы не только делают ваш компьютер более безопасным, но также могут решить проблемы с файлом Cascading Style Sheet. Возможно, файлы CSS работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла CSS мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле CSS.
Обзор инструментов разработки в браузерах
Каждый современный интернет-браузер оснащён мощными инструментами для веб-разработчика. Эти инструменты позволяют делать различные вещи, от изучения загруженных в настоящий момент HTML, CSS и JavaScript до отображения в каких ресурсах нуждается страница и как долго она будет загружаться. Эта статья научит вас использовать базовые функции инструментов разработчика в вашем браузере.
Примечание: Прежде чем начать заниматься с примерами, откройте пример сайта для начинающих, с которым мы работали на предыдущих занятиях. Вам следует держать его открытым, чтобы выполнить описанные ниже действия.
Как открыть инструменты веб-разработчика в вашем браузере?
Панель разработчика находится в нижней части вашего браузера :

Как её отобразить? Есть три варианта:
- Клавиатура.Ctrl + Shift + I, кроме
- Internet Explorer.(клавиша — F12)
- Mac OS X.(сочетание клавиш — ⌘ + ⌥ + I )
- Панель Меню.
- Firefox. Открыть меню
*➤
*➤ Инструменты разработки, или_ Инструменты ➤Веб-разработка ➤ Инструменты разработки - Chrome.Дополнительные инструменты ➤ Инструменты разработчика
- Safari.Разработка ➤ Показать Web Inspector . Если вы не видите меню «Разработка», зайдите в Safari ➤ Настройки ➤ Дополнительно, и проверьте стоит ли галочка напротив «Показать меню разработки».
- Opera. Меню➤Разработка ➤ Инструменты разработчика. Если вы не видите меню «Разработка», включите его отображение, перейдя в Меню ➤ Другие инструменты ➤ Показать меню разработчика.
- Firefox. Открыть меню
- Контекстное меню. Нажмите правой кнопкой мыши на любом участке веб-страницы (Ctrl-клик для Mac), появится контекстное меню, в котором вам нужно выбрать пункт Исследовать Элемент. (дополнение: этот способ отобразит вам код того элемента, на котором вы щёлкнули правой кнопкой.)

Inspector: DOM обозреватель и CSS редактор
По умолчанию, в панели открывается вкладка Inspector, вы можете увидеть это на скриншоте снизу. Этот инструмент позволяет вам видеть, как HTML-код выглядит на странице в настоящем времени, также как CSS, который применён к каждому элементу на странице. Это также позволяет вам в реальном времени редактировать как HTML, так и CSS. Внесённые изменения можно увидеть непосредственно в окне браузера.

Если вы не видите Inspector,
- Нажмите на вкладку Inspector .
- В Internet Explorer, нажмите на DOM Обозреватель, или нажмите Ctrl + 1.
- В Safari, элементы управления представлены не так чётко, но вы должны увидеть HTML код, если вы не выбрали что-то другое в окне разработки. Нажмите на кнопку Стиль, чтобы увидеть CSS.
Обзор DOM inspector
Для начала, попробуйте нажать правой кнопкой мыши (Ctrl+клик) по элементу HTML в DOM inspector и посмотрите на контекстное меню. Пункты меню могут различаться в разных браузерах, но важными из них являются одни и те же:

- Удалить узел (иногда Удалить элемент). Удаляет текущий элемент.
- Править как HTML (иногда Добавить атрибут/Править текст). Позволяет редактировать HTML и видеть результат «вживую». Очень полезно для отладки и тестирования.
- :hover/:active/:focus. Заставляет элементы переключить своё состояние на то, к которому применён ваш стиль.
- Копировать/Копировать как HTML. Копирует текущий выделенный HTML.
Попробуйте изменить что-нибудь через окно Inspector на вашей странице прямо сейчас. Дважды кликните по элементу, или нажмите правой кнопкой мыши и выберите Править как HTML из контекстного меню. Вы можете сделать любые изменения, какие захотите, но вы не сможете их сохранить.
Обзор CSS редактора
По умолчанию, CSS редактор отображает CSS-свойства применённые к текущему выбранному элементу:

Эти функции особенно удобны:
- Свойства, применённые к текущему элементу, отображаются в порядке убывания приоритета.
- Можно убирать галочки напротив свойств для того чтобы видеть, что получится, если их удалить.
- Нажмите на маленькую стрелочку рядом со свойством, чтобы увидеть все его эквиваленты.
- Нажмите на имя свойства или его значение, чтобы открыть текстовое окошко, в котором вы можете задать новые значения и увидеть, как изменится ваш элемент с новыми значениями.
- Рядом с каждым свойством указаны имя файла и номер строки. где располагается это свойство. Щелчок по этому пути перенесёт вас в окно, где можно редактировать этот CSS и сохранить.
- Вы можете также нажать на закрывающуюся фигурную скобку любого свойства, чтобы вывести текстовое поле на новую строку, где вы сможете написать совершенно новую декларацию для вашей страницы.
Вы должно быть уже заметили другие вкладки в CSS редакторе:
- Вычислено: Здесь указаны все вычисления свойств выделенного элемента (окончательные, нормализованные значения применённые браузером).
- Блоковая модель: Отображает блочную модель выделенного элемента, здесь вы можете увидеть внешние и внутренние отступы, а также границы применённые к элементу, здесь также указан их размер.
- Анимации: В Firefox, на вкладке Анимации вы можете увидеть анимации применённые к выделенному элементу.
Узнать больше
Узнать больше об Inspector в различных браузерах:
- Firefox Page inspector
- IE DOM Explorer
- Chrome DOM inspector (Inspector в Opera схож с Inspector в Chrome)
- Safari DOM inspector and style explorer
Консоль JavaScript
Консоль JavaScript невероятно полезный инструмент для отладки JavaScript, если он не работает, как ожидалось. Она позволяет вам загружать JavaScript вопреки порядку загрузки скрипта в браузере, и докладывает об ошибках как только браузер пытается выполнить ваш код. Для доступа к консоли из любого браузера просто нажмите на кнопку Console. (В Internet Explorer, нажмите Ctrl + 2.) Откроется окно, как показано ниже:

Чтобы понять, что происходит, попробуйте ввести фрагменты кода в консоль один за другим (и затем нажмите Enter):
alert("hello!");
.querySelector("html").style.backgroundColor = "purple";
var myImage = document.createElement("img"); myImage.setAttribute( "src", "https://farm4.staticflickr.com/3455/3372925208_e1f2aae4e3_b.jpg", ); document.querySelector("h1").appendChild(myImage);
Теперь попробуйте ввести следующую, неправильную версию кода и посмотрите, что из этого получится.
alert('hello!);
.cheeseSelector("html").style.backgroundColor = "purple";
var myImage = document.createElement("img"); myBanana.setAttribute( "src", "https://farm4.staticflickr.com/3455/3372925208_e1f2aae4e3_b.jpg", ); document.querySelector("h1").appendChild(myImage);
Вы увидите некоторые ошибки, которые сообщит вам браузер. Зачастую эти ошибки выглядят довольно загадочно, но они должны быть довольно простыми, чтобы можно было выяснить проблему!
Узнать больше
Узнать больше о JavaScript консоли в различных браузерах:
- Firefox Web Console
- IE JavaScript console
- Chrome JavaScript Console (Inpector в Opera схож с Inspector в Chrome)
- Safari Console
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Your blueprint for a better internet.
Условные выражения в CSS

Мне нравится думать о CSS как о языке дизайна с условными выражениями. На протяжении многих лет CSS был известен как способ стилизации веб-страниц. Однако сегодня этот язык эволюционировал настолько, что в нём уже есть правила условных выражений. Любопытно то, что эти правила реализуются не напрямую (например, в CSS всё ещё нет if/else).
Инструменты дизайна наподобие Figma, Sketch и Adobe XD сильно облегчили жизнь дизайнеров, однако им всё равно не хватает той гибкости, которая есть у CSS.
В этой статье я расскажу о некоторых возможностях CSS, которые мы используем каждый день, и покажу, насколько они условны. Кроме того, я приведу несколько примеров, в которых CSS гораздо мощнее, чем инструменты дизайна.
Что такое условный CSS?
Если говорить простыми словами, то имеется в виду дизайн с определёнными условиями. При удовлетворении одного или нескольких условий дизайн подвергается изменениям.
Например, вставка нового раздела в дизайн должна отталкивать вниз другие элементы под ним. На рисунке ниже в левой части показана стопка элементов. При добавлении нового элемента все остальные под ним должны сместиться вниз.

Логически это кажется ожидаемым и нормальным. В инструментах дизайна такая функция появилась много лет назад. В Figma есть функция «Auto Layout». В веб-дизайне это присутствовало изначально, даже до появления CSS.
Условный CSS
Возможно, вы задаётесь вопросом: что такое условный CSS? Он вообще существует? Нет, в CSS отсутствует оператор «if».
Главное здесь — понять, что некоторые свойства CSS работают в определённых условиях или сценариях. Например, при использовании в CSS селектора :empty для проверки того, является ли элемент пустым, он работает в качестве условного псевдоселектора.
.alert p:empty
Если бы мне нужно было объяснять это своей двухлетней дочери, то я сделал бы это так:
Если здесь ничего нет, то это пропадёт.
Вы заметили здесь оператор «если» ? Это дизайн с косвенно реализованными условными выражениями. В следующем разделе я объясню некоторые возможности CSS, работа которых похожа на работу оператора if/else.
В чём заключается цель этого? В более глубоком понимании и осознании того, что можно ждать от написанного тобой CSS. Вы научитесь находить условный CSS, просто взглянув на стили компонента, раздела или страницы.
CSS против Figma
Почему Figma? Я считаю её современным стандартом для дизайна UX, поэтому подумал, что неплохо было бы выполнять сравнение на её основе. Покажу один простой пример. Вот список горизонтально отображаемых тегов.

Поразмыслив над ним, вы заметите важные различия. Например, версия на CSS:
- может выполнять перенос на несколько строк, если недостаточно места;
- работает с направлениями текста «слева направо» и «справа налево»;
- при переносе элементов для строк использует gap .
При этом в CSS присутствуют три условных правила :
- Если flex-wrap имеет значение wrap , то элементы при нехватке места могут переноситься.
- При переносе элементов на новую строку gap работает для горизонтального и вертикального пространств.
- Если текст на странице идёт справа налево, то элементы переключат свой порядок (то есть Design будет первым справа).
Примеры условного CSS
▍ Медиа-запрос
Мы не можем говорить об условном CSS без упоминания медиа-запросов CSS. Спецификация CSS называется CSS Conditional Rules Module. Честно говоря, я впервые узнал об этом названии.
Когда я проводил своё исследование о тех, кто спрашивает о «Conditional CSS» или упоминает его, то часто видел, что ближайшим аналогом оператора if в CSS являются медиа-запросы (media query).
.section < display: flex; flex-direction: column; >@media (min-width: 700px) < .section < flex-direction: row; >>Если ширина вьюпорта 700px или больше, изменить flex-direction элемента .section на row . Это ведь явный оператор if, правда?
То же самое справедливо и для медиа-запросов наподобие @media (hover: hover) . В показанном ниже CSS стиль наведения будет применён, только если человек пользуется мышью или трекпадом .
@media (hover: hover) < .card:hover < /* Добавляем стили наведения. */ >>▍ Контейнерный запрос размера
При помощи контейнерных запросов мы можем проверить, имеет ли родительский элемент компонента определённый размер, и соответствующим образом стилизовать дочерний компонент.

.card-wrapper < container-type: inline-size; >@container (min-width: 400px) < .card < display: flex; align-items: center; >>Я уже много раз писал о контейнерных запросах (container query) и создал ресурс, на котором делюсь связанными с ними демо.
▍ Контейнерный запрос стиля
На момент написания этой статьи эта функция включалась флагом в Chrome Canary и её должны были выпустить в Chrome stable.
При помощи запроса стиля мы можем проверить, помещён ли компонент в обёртку, имеющую определённую переменную CSS, и если да, то соответствующим образом стилизовать его.
На рисунке ниже показано тело статьи, генерируемое из CMS. Мы видим стандартный стиль для изображения и другой стиль для изображения, которое отмечено как рекомендованное (Featured).
Чтобы реализовать это при помощи запросов стиля, мы можем стилизовать стандартный элемент, а затем проверить, имеет ли изображение специальную переменную CSS , позволяющую выполнить уникальную стилизацию.
figure < container-name: figure; --featured: true; >/* Стиль рекомендуемого изображения. */ @container figure style(--featured: true) < img < /* Уникальная стилизация */ >figcaption < /* Уникальная стилизация */ >>А если —featured: true отсутствует, мы по умолчанию будем использовать базовый дизайн изображения. Чтобы проверить, что изображение не имеет этой переменной CSS, можно использовать ключевое слово not .
/* Стандартный стиль изображений. */ @container figure not style(--featured: true) < figcaption < /* Уникальная стилизация */ >>Это оператор if, только косвенный.
Ещё один пример: изменение стилизации компонента на основании его родительского компонента. Рассмотрим следующий рисунок:

Стиль карточки может переключаться на тёмный, если она помещена в контейнер, имеющий переменную CSS —theme: dark .
.special-wrapper < --theme: dark; container-name: stats; >@container stats style(--theme: dark) < .stat < /* Добавляем тёмные стили. */ >>Показанный выше пример означает следующее:
Если stats контейнера имеет переменную —theme: dark , то добавить следующий CSS.
supports в CSS
Функция @supports позволяет тестировать, поддерживается ли в браузере конкретная функция CSS.
@supports (aspect-ratio: 1) < .card-thumb < aspect-ratio: 1; >>Также мы можем выполнять тестирование на поддержку селектора, например :has .
@supports selector(:has(p)) < .card-thumb < aspect-ratio: 1; >>▍ Перенос Flexbox
Свойство CSS flex-wrap определяет, должны ли flex-элементы принудительно находиться в одной строке, или могут переноситься на несколько строк. Если перенос разрешён, оно задаёт направление, в котором строки накладываются друг над другом.
Свойство flex-wrap позволяет flex-элементам переноситься на новую строку, если недостаточно места.
Рассмотрим следующий пример. У нас есть карточка, содержащая заголовок и ссылку. Если места мало, каждый дочерний элемент должен переноситься на новую строку.
.card < display: flex; flex-wrap: wrap; align-items: center; >.card__title

На мой взгляд, это условное выражение. Если места недостаточно, выполняем перенос на новую строку/строки.

Если каждый flex-элемент переносится на строку, то как управлять интервалами между flex-элементами? В настоящее время существует margin-right для заголовка, а в случае переноса элемента его следует заменить на margin-bottom . Проблема в том, что мы не знаем, когда элементы будут переноситься , потому что это зависит от содержимого.
Удобно то, что интервалы можно сделать условными при помощи свойства gap . Когда они находятся в одной строке, интервалы горизонтальные, а если в нескольких, то вертикальные.
.card
Это одна из самых любимых мной функций flexbox. Вот наглядная демонстрация того, как gap переключает интервалы.

Кстати, я считаю flex-wrap защитным CSS. Чтобы избежать неожиданных проблем, я добавляю его почти в каждый flex-контейнер.
▍ Свойство flex
Более того, свойство flex тоже может работать как условное выражение. Рассмотрим такой пример: я добавил к заголовку карточки flex-grow: 1 , чтобы он заполнял доступное пространство.
.card__title

Это работает, но когда ширина карточки слишком мала, её заголовок перенесётся на новую строку.

Ничего особо ужасного, но можно ли сделать получше? Например, я хочу сказать заголовку: «Если твоя ширина меньше X, тогда перенесись на новую строку». Это можно сделать, задав свойство flex-basis .
В приведённом ниже CSS я присваиваю заголовку максимальную ширину 190px . Если она меньше, то он перенесётся на новую строку.
.card__title

Узнать больше о свойстве flex в CSS можно из моей подробной статьи о нём. В ней более глубоко рассматриваются такие вещи, как добавление flex-grow, string и так далее.
▍ Селектор :has
На мой взгляд, сейчас это наиболее близкая к оператору «if» фича CSS. Она имитирует оператор if/else.
▍ Изменение стиля карточки
В этом примере нам нужны два разных стиля в зависимости от того, имеет ли карточка изображение.

Если в карточке есть изображение:
.card:has(.card__image)
.card:not(:has(.card__image))
Это же практически оператор if!
▍ Условное скрытие или отображение элементов форм
В формах обычно бывает поле ввода или группа элементов ввода, скрытых по умолчанию, которые отображаются, когда пользователь активирует опцию в меню .

При помощи :has можно проверять, выбрана ли опция other , и если она выбрана, отображать поле ввода.
.other-field < display: none; >form:has(option[value="other"]:checked) .other-field
▍ Предупреждения
Когда на странице есть предупреждающее сообщение, например, информация о серьёзной проблеме или проблемах в системе, его иногда нужно сделать ещё более очевидным.

В этом примере на странице есть предупреждение, а при помощи :has мы можем проверить, есть ли на дашборде предупреждение, и если есть, соответственно его стилизовать.
.main:has(.alert) .header
▍ Изменение столбцов сетки на основании количества элементов
Вам когда-нибудь было нужно отображать и менять ширину столбца в сетке на основании количества дочерних элементов?

С этим при помощи условных выражений позволяет справиться :has .
.wrapper < --item-size: 200px; display: grid; grid-template-columns: repeat( auto-fill, minmax(var(--item-size), 1fr) ); gap: 1rem; >.wrapper:has(.item:nth-last-child(n + 5))
В этом примере говорится, что если .wrapper содержит пять элементов, то переменная —item-size изменяет своё значение на 120px .
Подробнее о селекторе :has можно прочитать в моей статье, где есть множество примеров.
▍ Функция сетки minmax() в CSS
Функция minmax() работает в CSS условным образом. Используя ключевое слово auto-fit , мы говорим браузеру: «если есть свободное пространство, то пусть элементы сетки заполняют его».

▍ Комбинатор соседнего одноуровневого элемента
Этот комбинатор сопоставляет второй элемент, идущий непосредственно после элемента.
В примере ниже если за элементом идёт элемент
, то
получает уникальные стили.
h3 + p

Верхнее поле
было изменено условным образом.
▍ Псевдокласс :focus-within
Ещё одна интересная фича CSS — это :focus-within . Допустим, вам нужно проверить, находится ли элемент ввода в фокусе, и если да, добавить границу к его родительскому элементу.
Рассмотрим следующий пример:

У нас есть компонент поиска. Когда поле ввода в фокусе, вся обёртка должна иметь контур. При помощи :focus-within мы можем проверить, находится ли поле ввода в фокусе, и применить соответствующие стили.
.hero-form:focus-within < box-shadow: 0 0 0 5px rgb(28 147 218 / 35%); >
▍ Селектор :not
Этот псевдокласс исключает элементы, не соответствующие определённому селектору. Например, он может быть полезен для проверки, является ли элемент последним, и если да, то удалять границу.
.item:not(:last-child)

▍ Условный border-radius
Когда-то давно я писал о том, как нашёл интересный условный подход к добавлению border-radius для карточки на веб-сайте Facebook.

Идея в том, что когда карточка больше размера вьюпорта или равна ему по размерам, то радиус должен быть равен 8px , а если нет, то 0px .
.card
Статью можно прочитать здесь.
▍ Условный разделитель
Ещё один интересный пример использования условных выражений в CSS — создание разделителя, который переключает своё направление и размер на основании того, есть ли у элементов перенос.
Обратите внимание на разделитель между двумя разделами:

Мне нужно, чтобы когда flex-элементы расположены один над другим, линия переключалась и становилась горизонтальной. Этого можно достичь, воспользовавшись flex-wrap и сравнением clamp .
.section < --: 400px; display: flex; flex-wrap: wrap; gap: 1rem; >.section:before
Об этом написано в моём блоге, а решение с clamp() предложил Темани Афиф.

▍ Внутреннее определение размеров: fit-content
Ключевое слово fit-content — это сочетание min-content и max-content . Наверно, это не очень понятно, поэтому давайте взглянем на следующую блок-схему.

Если у нас есть элемент с width: fit-content , он работает условным образом в соответствии с блок-схемой.
Вот видео о том, что происходит при изменении размеров:
Я писал о внутреннем определении размеров в своём блоге.
▍ Функции сравнения
В CSS есть следующие функции сравнения: min() , max() и clamp() . Для меня они ощущаются условными в примере, на который я наткнулся в процессе написания недавней статьи.

Идея в том, что у меня есть два разных контейнера: один для заголовка статьи (названия и даты), другой для основного содержимого и примечаний.
Я хочу выровнять край содержимого заголовка с содержимым тела.
Мне нужно, чтобы на мобильных отбивка слева была равна 1rem , однако в более крупных вьюпортах она должна быть динамической и зависеть от ширины вьюпорта.

Для этого можно использовать функцию max() , позволяющую условным образом выбирать одно из двух значений (1rem или динамическое значение).
.prose < padding-left: max(1rem, (100vw - var(--wrapper-width)) / 2); >Подробнее об этой технике можно узнать из моей статьи Inside the mind of a frontend developer: Article layout.
▍ Псевдоклассы
В CSS есть множество псевдоклассов, однако первым делом вспоминаются :focused и :checked .
input:checked + label < /* Уникальная стилизация */ >input:focus
Если элемент ввода помечен, то добавляем эти стили к . Если элемент ввода находится в фокусе… и так далее.
Но… CSS — это не язык программирования!
Я знаю, спасибо, что сказали. Мне часто доводилось слышать этот аргумент. Лично у меня нет строгого мнения на этот счёт, но CSS во многих отношениях является условным.
На самом деле, большинство представленных выше примеров нельзя реализовать на JavaScript без условных операторов.
Заключение
Мне понравилось писать эту статью, потому что она напомнила мне о причинах моей любви к CSS. Для меня CSS подобен суперсиле, потому что позволяет принимать множество дизайнерских решений при помощи его условных возможностей. Работа с инструментами дизайна часто кажется ограничивающей, потому что я как будто упираюсь в стены. Думаю, что возможность создания условных правил с помощью CSS делает его уникальным и мощным инструментом веб-дизайна.
Но это не значит, что я создаю дизайн в браузере. Инструменты дизайна для меня — это пустой холст для проб и экспериментов с дизайнерскими идеями, а также для создания отшлифованных UI-продуктов.
Мне нравится использовать браузер для тонкой настройки дизайнов, а не для создания их целиком.

- ruvds_переводы
- css
- figma
- адаптивный дизайн
- адаптивная вёрстка
- дизайн ui
- интерфейсы пользователя
