Еще несколько лет назад, если вам нужны были фоновые фигуры или разделы веб-сайта, которые представляли бы собой что-то кроме прямоугольников, вам, скорее всего, требовался дизайнер, который предоставил бы вам статическое изображение PNG или JPEG, которое можно было бы добавлять по мере необходимости, но CSS прошли долгий путь с тех пор, друзья мои.
Когда я работал над обновлением веб-сайта, в котором содержимое страницы было разбито на разделы фона разного цвета, чередующиеся между чисто белым и нежно-серым цветами, в макет дизайна я включил один раздел, нижний край которого был наклонен вверх и чтобы вправо, вместо того, чтобы проходить по странице под идеальным углом в 90 градусов, как это делает типичный блочный элемент.
Теперь я мог бы попросить дизайнера создать фоновое изображение, чтобы сделать это за меня, но вместо этого я хотел посмотреть, смогу ли я сделать это самостоятельно с помощью CSS. И, о чудо, я смог это сделать с помощью CSS clip-path.
Интересные формы и визуальные эффекты в DOM больше не являются прерогативой дизайнеров: благодаря таким инструментам, как CSS clip-path, разработчики могут изменять форму элементов, и я покажу вам, как это сделать.
Если вы, как и я, менее знакомы со свойством CSS clip-path, оно создает область отсечения, которая определяет, какие части элемента должны отображаться. Части, находящиеся внутри области, отображаются, а те, что находятся за ее пределами, скрыты.
Демо из документации MDN clip-path. Различные варианты обрезки обеспечивают разные виды воздушного шара и текста.
Свойство clip-path может принимать самые разные значения:
Значения
/* this CSS combines two different clip path properties */ clip-path: padding-box circle(50px at 0 100px);
В этом посте не вдаются подробные сведения обо всех свойствах, которые может принимать clip-path, и о том, как их можно комбинировать для создания довольно сложных фигур. Если вам нужна дополнительная информация и примеры использования clip=path в действии, я рекомендую начать с документации Mozilla.
Одним из свойств
Серый многоугольный фон, который мне нужно было создать с помощью CSS.
Изображение выше — это скриншот раздела серого фона, который мне нужно было воссоздать с помощью свойства CSS clip-pathpolygon(). И первое, что мне нужно было сделать, это создать несколько HTML-элементов, к которым можно было бы применить CSS.
polygon() clip-path vs rect() clip-path
Возможно, вам интересно, почему я решил использовать свойство polygon() вместо свойства rect() с clip-path. Несмотря на то, что они похожи, функция Polygon() может создавать более сложные многоугольные формы и обеспечивает большую универсальность для сложных проектов, принимая пары координат для определения каждой вершины многоугольника, тогда как rect() может обрабатывать только прямоугольные формы.
Сайт, над которым я работал, основывался на генераторе статических сайтов Hugo, фреймворке на основе Go. Хьюго использует шаблоны для отображения HTML-кода сайта, поэтому приведенный ниже пример кода должен показаться вам относительно знакомым, если вы знаете HTML.
Примечание о шаблонах:
Если вы когда-либо использовали компоненты JSX, Node.js с Pug или Handlebars или Jekyll — шаблоны Hugo похожи: HTML-элементы с переменными Go и функциями, добавленными с помощью {{ }} для отображения правильной информации везде, где есть шаблоны. вводятся.
Вот код того, что я назвал «разделом головоломок» на странице из-за части головоломки на переднем плане этого раздела. Для целей и ясности этой статьи я заменил переменные Go, внедренные в шаблон, на сгенерированный HTML.
single.html
Lorem ipsum dolor
Sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Ipsum dolor sit amet consectetur adipiscing elit pellentesque.
Duis aute irure dolor in reprehenderit
in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Consectetur adipiscing elit pellentesque habitant morbi tristique senectus et.
Этот участок кода относительно компактен, но заслуживает обсуждения. Помимо элементов HTML, существует немало классов CSS, взятых из библиотеки Bootstrap, одной из оригинальных фреймворков CSS с открытым исходным кодом для адаптивного веб-дизайна.
Среди пользовательских классов, таких как about-body, которые я использовал для добавления собственного стиля, есть такие классы, как контейнер, строка, col-12 или col-md-6, mb-5 и mb-3.
Все последние классы являются классами Bootstrap, которые служат для того, чтобы элементы текста и изображения на экране разделяли ширину страницы, когда область просмотра превышает определенную ширину (col-md-6), или применяют поле-дно определенное количество в теги
(mb-3 или mb-5).
Однако классы Bootstrap не имеют отношения к делу в этом посте, класс, на котором следует сосредоточиться, — это puzzle-section, который обертывает весь текст и изображение фрагмента головоломки.
В этом классе раздела-головоломки мы собираемся добавить свойство clip-path для отображения светло-серого фона позади текста и изображения со слегка наклоненным дизайном, направленным вверх и вправо.
]Поскольку я не совсем понимал, как придать обычному прямоугольному
Этот веб-сайт для создания CSS-путей просто великолепен, потому что он имеет множество предустановленных форм, регулируемые размеры изображений и фон, а вершины отображаемого в данный момент изображения можно перетаскивать в любое желаемое расположение. В строке внизу экрана показаны точные значения CSS пути обрезки, которые вы можете скопировать/вставить в CSS вашего собственного проекта.
Я выбрал заданную форму параллелограмма в качестве отправной точки, а затем перетащил углы, чтобы они соответствовали углу участка фона, который я пытался воссоздать с нуля. Убедившись, что результат выглядит точно, я скопировал строку CSS внизу страницы в буфер обмена.
В файле SCSS моего проекта я добавил скопированный CSS-файл clip-path в дополнение к светло-серому свойству фона-цвета и некоторым отступам, чтобы дать тексту и изображениям частей головоломки некоторую передышку на странице.
ПРИМЕЧАНИЕ: Несмотря на то, что этот файл, показанный в примере кода, представляет собой SCSS, а не чистый CSS, для этого поста это не должно иметь значения. Это должно быть прямое сравнение 1:1.
о.scss
.about-body { // this white sets the white background color for the whole webpage background-color: white; .puzzle-section { // clip-path code copied from the clip-path maker website clip-path: polygon(0 0, 100% 0%, 100% 75%, 0% 100%); background-color: light-grey; padding: 2rem 0 10rem 0; } }
Этого небольшого количества CSS для clip-path было все, что нужно, чтобы взять мой идеально прямоугольный элемент DOM и вместо этого превратить его в несовершенный многоугольник. Не слишком потертый!
CSS расширяет границы того, что могут сделать веб-разработчики, не прибегая постоянно к изображениям, видео и специально разработанным элементам. И удовлетворение от того, что ты понимаешь, как сделать небольшой крутой дизайн самостоятельно, очень вдохновляет.
Недавним примером этого было использование свойства CSS clip-path для создания фонового поля для текста и изображений с неровным нижним краем. С помощью интерактивного веб-сайта, посвященного декодированию контуров всех форм и размеров, мне удалось быстро разобраться с этим слегка перекошенным многоугольником.
И позвольте мне выразить свою признательность людям, создающим эти небольшие сайты или фрагменты кода, которые решают очень специфическую проблему другого разработчика — вы, ребята, продолжаете делать Интернет лучше.
Зайдите сюда через несколько недель — я буду писать больше о JavaScript, React, IoT или о чем-то еще, связанном с веб-разработкой.
Если вы хотите быть уверенным, что никогда не пропустите ни одну мою статью, подпишитесь на мою рассылку здесь: https://paigeniedringhaus.substack.com
Спасибо за прочтение. Я надеюсь, что изучение изменения внешнего вида элементов в DOM с помощью CSS поможет вам так же, как помогло мне.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3