Разное

Css рисование фигур: Геометрические фигуры на CSS / Хабр

28.06.2023

Рисуем треугольные фигуры средствами CSS

Вы здесь

Главная → Блог → CSS → Рисуем треугольные фигуры средствами CSS

Раздел: 

В статье рассмотрена методика создания треугольных фигур без использования изображений на чистом CSS.

Для каждого уважающего себя веб-мастера важно владеть приемами CSS для создания особого дизайна сайта, и очень круто уметь делать это все без использования картинок и элементов, созданных в графических редакторах. Это оптимизирует работу ресурса, снижая нагрузку на сервер. Сегодня будет рассмотрен метод создания треугольных элементов.

Преимущества метода

В зависимости от фантазии и умений специалиста, можно перечислить множество способов создания элемента треугольной формы. Однако стоит этот вопрос рассматривать с точки зрения оптимизации функционирования веб-ресурса. Из этого следует, что чем проще решение — тем лучше будет работать сайт с точки зрения технических особенностей. Также простые решения, основанные на свойствах CSS, способствуют уменьшению риска создания не валидного кода.

Для справки отметим, что треугольные объекты могут создаваться в графических редакторах и вставляться в код в виде изображения. Также треугольный знак присутствует в наличии списка спецсимволов HTML. Треугольники еще могут быть нарисованы посредством тега canvas или через среду SVG.

Также использование комбинаций простых фигур позволяет создать сложные фигуры и даже картинки. Современные тенденции развития веб-дизайна показывает, что в настоящее время очень ценятся ресурсы в стиле 2-D с необычным представлением элементов оформления. Это еще одна причина овладеть методикой создания треугольников через свойства CSS.

Узнать цены на ремонт и отделку квартир в Новороссийске.

Суть метода

Мы рассмотрим, простой способ создания треугольных блоков, который основывается на свойстве border. При правильном обращении, указанное свойство разделит блок на равные треугольники с одинаковыми углами. Рассмотрим пример кода

CSS

.trigon {
    border-color: #47afca #5977b5 #ac3a39 #ff8931;
    border-style: solid;
    border-width: 200px 200px 200px 200px;
    height: 0px;
    width: 0px;
    display:block;
    margin:0px auto;/*центруем*/
}

В итоге на экране видим следующую картинку

Особенности метода

При использовании такого метода стоит отметить ряд факторов, которые будут влиять на дальнейшую работу веб-мастера над дизайном ресурса:

  • метод позволяет рисовать только фигуры с острыми углами
  • при явном не соблюдении равенства граней фигуры может возникнуть эффект искажения линий, которые и являются этими же гранями. Такой эффект ощутим в браузерах Opera и Internet Explower.
  • комбинации треугольных фигур могут образовывать сложные многоугольники
  • свойство box-shadow конфликтует с треугольными элементами, созданными по данной методике.
В каких браузерах работает?
6.0+4.0+10.0+3.0+3.0+

Ключевые слова: 

CSS приемы

CSS база. Или что должен знать каждый верстальщик

Уровень сложности:

Средний

Еще интересное

Школьные знания арифметики и геометрии в веб-разработке / WAYUP

Повспоминаем школу…Практически все дети в мире задаются вопросом, «Зачем нам надо посещать уроки математики, алгебры и геометрии? 2+2 знаем и хорошо, а тут еще и экзамены существуют, и производные, синусы с косинусами…». Некоторые дети отчаянно скучают на таких уроках, когда как другие, наоборот, даже любят решать всякие задачки и примеры с уравнениями. Но чем старше становятся дети, тем больше они начинают понимать, что некоторые математические основы действительно имеют практическое применение в их повседневной жизни, в ВУЗе, затем уже в работе. Мы не говорим об инженерии в глобальном смысле, но о повседневности. Банальный пример – «золотое сечение», используемое в рисовании и архитектуре, как минимум, и в веб-дизайне.

Вопрос, который встает перед некоторыми людьми сейчас: «Нужно ли быть отличником/хорошистом в математике, чтобы стать хорошим веб-разработчиком, поскольку с числами и вычислениями приходится оперировать весьма нередко?». И знаете, если сейчас вы думаете о том, что «хороший математик» это значит разбираться в чисто математических понятиях, таких как анализ или вычисления с несколькими переменными, которые включают в себя множество доказательств и теорем, а их решение может растянуться во всю стену (не на тетрадном двойном листочке), то мы должны признать, что эти навыки в веб-дизайне или в веб-разработке уж точно не нужны. Можно расслабиться и выдохнуть.  Впрочем, некоторые практические навыки, вероятно, еще помнятся со школьной/вузовской скамьи и иногда немного применяются в контексте веб-верстки и дизайна.

Обратимся детальнее к теме статьи. Например, использование ширины border  для создания треугольников подразумевает знания того, как браузер создает и отрисовывает границывообще+, так и некоторых знаний тригонометрии для понимания того, каким образом произошел сброс и изменение стиля для формы, и как можно изменить подход к отрисовке для создания совсем иной формы. В действительности это не так и сложно, просто мало кто задумывается, что лежит в основе современных возможностей.

Но давайте взглянем на некоторые аспекты веб-разработки, где математика может пригодиться.

Геометрия

Рисование фигур с помощью CSS

Геометрия способна помочь с пониманием того, как можно создавать фигуры в CSS. Возьмем простое свойство border-radius, которое используется для округления углов внешних границ элементов. Обычно верстальщики устанавливают некоторое значение  и продолжают работать. И это простой, удобный и быстрый способ, никто и не спорит о нем. Но давайте посмотрим чуть ближе на это свойство.

В border-radius объединены четыре свойства, описывающих значение четырёх углов элемента: верхний левый, верхний правый и так далее, что логично, ибо из квадрата (пикселя) при этом свойстве сразу создается круг. Но особенность в том, что эти свойства может иметь два значения: радиуса по горизонтали и радиуса по вертикали. Как видно на изображении верхний радиус меньше, а потому округлость углов неодинаковая, фигура выглядит слегка «кривоватой». В тоже время, для создания идеала достаточно, как обычно, прописать 50% или указать точное значение в px и работать дальше, свёрстывая дизайн. И это основа CSS, но о ней вспоминают не всегда.

Треугольники тоже создаются весьма интересным способом. Суть в том, что при создании границ вокруг квадрата, происходит их соединение по диагонали. Если основной элемент имеет размер 0 (по ширине/высоте), то мы и видим стык четырех треугольников.  Также обратите внимание на то, что поскольку так много треугольников бывает не нужно, то все остальные делаются прозрачными (transparent). Примеры мы приводили в начале нашего материала. От варианта стыка, когда центральная часть имеет размер 0,  и создаются как раз обычные треугольники.

Да, опять-таки ничего сверхъестественного, но это и есть школьная база по геометрии для расчета окружностей и углов. И если внимательнее изучить CSS в целом, а не просто, как необходимый функционал для веб-верстки, то можно найти и другие интересные закономерности.

Теорема Пифагора для CSS

И она тоже есть! И само собой, что речь пойдет опять-таки о треугольниках, но не сколько об отрисовке, сколько о расчетах. В случае, когда требуется неправильный треугольник, то и может пригодиться теорема Пифагора, для того, чтобы высчитать нужные высоты. Нагляднее смотрите ниже.

Таким нехитрым способом мы применяем знания, полученные когда-то в школе в веб-верстке и веб-дизайне. А если еще и понаблюдать, как созданы CSS на разных сайтах, то тем более становится все занятнее и занятнее. Мы как раз и говорили в прошлый раз о полезности использования шаблонов и тем.

Вот банальный пример, дизайнер придумывает красивый кусочек треугольника, что смотрит вниз и будто висит на линии. Отрисовывает его в Photoshop, но ведь много картинок на сайте тоже не слишком уж и хорошо. И разработчик задумывается, как бы это описать, дабы не было бы картинкой. Здесь как раз и придется в помощь метод «стирания» ненужного.

И еще несколько интересных примеров рисования фигур с помощью CSS. Не обычных и стандартных, а уже чуть более сложных. Множественные круги, сложный цветок, лепестки (как детализация), стрелочки

Арифметика

Это кажется совершенно незначительным, но если вы делаете какой-либо отзывчивый дизайн, что в настоящее время считается обязательным, арифметика очень важна для вас. Что же она может делать и какую принести пользу, если и самим-то считать не нужно, есть же калькуляторы! Обратим свой взор на единицы и значения в CSS, поскольку их первую очередь и нужно подсчитывать. И наверно, кому-то покажется все банальным и простым снова, как и в геометрии, но именно на простом и базируются «сложные» красоты и программный код.

Числа имеют в CSS3 особое значение, как и свойства, и описываются в спецификациях CSS Values and Units Module Level 3. Ключевой функцией для нас, в данном случае, является calc(), поддерживающая четыре основные операции: сложение, вычитание, умножение и деление.

В те дни, когда веб-дизайн был фиксированным, разработчики создавали  идеально-пиксельные проекты, которые работали только при просмотре на определенных видах экранов (размерах).  Это было просто, быстро и сложностей не возникало. Но поскольку количество различных размеров экрана, которые пользователи используют для серфинга в Интернете, росло экспоненциально, проекты с фиксированной шириной перестали соответствовать действительности.

В такой ситуации разумнее позволить браузеру самому определять размер элементов на странице в зависимости от размера экрана монитора, используя значения ширины элементов в процентах, размеры шрифтов в em или ch, а в последнее время – единицы размеров viewport, которых несколько. Что же касается функции calc, то она «смешивает» значения разных единиц CSS, совершая, тем самым,  самые каверзные вычисления, чтобы веб-разработчики могли сосредоточиться на проектировании и строительстве макетов и компонентов, которые способны радовать наши глаза. Да, звучит, будто это нечто магическое, на уровне «супер-пупер-нечто». В действительности все просто. Использование calc для выравнивания.

Посмотрим, снова, на разные варианты применения и примеры.

Плавающий нижний колонтитул

Общим требованием для многих веб-проектов является факт того, чтобы нижний колонтитул всегда был на виду в нижней части окна браузера, даже если сама страница еще очень и очень длинная. Такой эффект в наши дни достигается разными способами, но использование calc некоторыми верстальщиками считается более красивым вариантом. В данном случае, нижний колонтитул не ограничится своей высотой и даже если его содержимого мало, он все равно будет в пределах окна браузера. Самый простой пример использования calc везде, где удобно – сайт Blizzard, и нижний колонтитул есть, и плавающее меню, и не только.

Вот некоторая очень простая базовая разметка, состоящая из header, main и footer элементов.

Чтобы нижний колонтитул footer  находился в нижней части страницы, независимо от количества содержимого внутри main элемента, этот самый main элемент должен иметь минимальную высоту 100% высоты области просмотра, которая не должна превышать высоты верхнего и нижнего колонтитула вместе взятых. Рассчитывается это по формуле:

100% viewport height – (height of header + height of footer)

Переведем это в CSS (предполагается, что стили браузера уже сброшены) и получаем:

Без дополнительного стиля высота верхнего (header, заголовок) и нижнего колонтитула должна быть связана текстом внутри них. Также отметим, что использование min-height вместо height лучше тем, что если контента больше, чем в видимой области, он будет отображаться в обычном режиме.

Текучая (fluid) типографика

Речь идет о достаточно частом эффекте, применяемом в отзывчивых дизайнах, когда шрифт текста изменяет свой размер в зависимости от размера окна браузера. Пример на Codepen (просто сами уменьшите/увеличьте окно браузера и увидите изменения). Его рассмотрим детальнее.

 

Математика в данном варианте используется для определения размеров шрифта при разной ширине области просмотра. Таким образом, получается, что размер шрифта может быть чем-то более сложным, чем просто значение в px или em единицах. Проблема с этим подходом заключается в том, что если окно просмотра становится слишком маленьким, ваш шрифт может потенциально сжиматься до неразборчивого размера. Прочитать его будет проблематично и соответственно, что допускать этого никак нельзя.

Все на том же сайте, текст уменьшился очень, но и окно браузера более сужать тоже нельзя. При этом и тот, и другой вариант – читаем и разборчив.

И вот чтобы как-то бороться с автоматически уменьшающимся размером шрифта, вновь можно обратиться к функции calc  для определения этого самого минимального размера букв.

Это просто, но контроля мало. Если есть необходимость (а она обычно есть) в возможности регулирования размера шрифта, то в это уравнение добавляется больше разных переменных. Понятие «плавающего» текста (шрифтов) было введено Mike Riethmuller в его статье, что является продолжением идеи Тима Брауна (Tim Brown). Уравнение же выглядит следующим образом:

В свою очередь, Флоренс Вершельде (Florens Verschelde) позже решил глубже погрузился в тему значения математики в CSS в своей статье, выразив вычисление размера шрифта в линейной функции. Такие функции строятся в виде графиков, что значительно упрощает их осознание и визуализирует соотношение размера шрифта с размером видимой области.

Выводы

Задумываясь когда-то, зачем нам школьные знания, мало кто мог тогда думать о том, что они реально могут пригодиться в такой сфере деятельности, как веб-разработка и верстка. Да и мало кто из учителей мог сказать такое или предложить, как вариант. Это если вы учились в 90-х – 2000-х годах. Теперь же, понимание и знание данного факта может кого-то обескуражить, а кого-то и не удивить вовсе.

Но творческая работа очень часто бывает связана с математикой, с расчетом масштабов и размеров, соотношением разных величин, отрисовками правильных или кривых форм. А, ведь, еще есть и правило «Золотого сечения», ссылочку на статью мы в начале оставляли.

Такой взгляд на дизайн и верстку, безусловно, дает больше интереса к изучению верстки и сильнее интригует разработчиков, вне зависимости от их профессионализма. Хотя… если просто сказать: «В верстке и дизайне важно знать математику», то ужас в глазах слушающего человека будет с вероятностью в 99%.. .

CSS-площадка: рисование различных фигур с помощью CSS

Содержание
  • Квадрат и прямоугольник
  • Треугольники

    • пограничная собственность
  • Орудие

    • Подробнее о треугольнике
  • Трапеция
  • Круг

    • радиус границы
    • Орудие
  • Овальный
  • Квадрант
  • Конус
  • Резюме

Квадрат и прямоугольник

Квадрат и прямоугольник — это простые формы, которые можно рисовать с помощью CSS, поскольку они являются естественными формами в Интернете.

Квадрат

Квадрат
 .квадрат {
  ширина: 200 пикселей;
  высота: 200 пикселей;
  цвет фона: орхидея;
} 

Прямоугольник

Переугольник
 .retangle {
  ширина: 200 пикселей;
  высота: 100 пикселей;
  фоновый цвет: средне-фиолетовый;
} 

Треугольники

граница свойства

Прежде чем рисовать треугольник, давайте взглянем на свойство

border в блочной модели.

(Если вы не знакомы с CSS Box Model , вы можете нажать здесь).

граница содержимого
 .box {
  ширина: 200 пикселей;
  высота: 200 пикселей;
  
  граница сверху: 10px сплошной светло-зеленый;
  граница справа: 10px сплошной средне-фиолетовый;
  нижняя граница: 10px сплошной светлый лосось;
  граница слева: однотонные мокасины 10 пикселей;
}
.содержание{
  ширина: 100%;
  высота: 100%;
  размер шрифта: 50px;
  цвет фона: небесно-голубой;
  выравнивание текста: по центру;
  высота строки: 200 пикселей;
} 

Вы видите, что границы одинаковой ширины упираются друг в друга под углом 45 градусов.

Орудие

Удалите поле содержимого (синяя область) и увеличьте ширину всех границ.

бордюр-бокс
 .box {
  ширина: 0;
  высота: 0;
  
  граница сверху: 100 пикселей сплошной светло-зеленый;
  граница справа: 100 пикселей сплошной средне-фиолетовый;
  нижняя граница: 100px сплошной светлый лосось;
  граница слева: однотонные мокасины размером 100 пикселей;
} 

В итоге у нас получилось 4 треугольника.

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

бордюр-бокс
.box { ширина: 0; высота: 0; граница сверху: 100px сплошная прозрачная; граница слева: 100px сплошная прозрачная; граница справа: 100 пикселей сплошная прозрачная; нижняя граница: 100px сплошной светлый лосось; }
Подробнее о треугольнике

Мы можем «повернуть» треугольник, установив, какая граница непрозрачна.

четыре треугольника
 .triangle1 {
  ширина: 0;
  высота: 0;
  
  граница сверху: 100px сплошная прозрачная;
  граница слева: 100px сплошной средне-фиолетовый;
  граница справа: 100 пикселей сплошная прозрачная;
  нижняя граница: 100px сплошная прозрачная;
}
.треугольник2 {
  ширина: 0 пикселей;
  высота: 0px;
  
  граница сверху: 100 пикселей сплошной светло-зеленый;
  граница слева: 100px сплошная прозрачная;
  граница справа: 100 пикселей сплошная прозрачная;
  нижняя граница: 100px сплошная прозрачная;
}
.triangle3 {
  ширина: 0;
  высота: 0;
  
  граница сверху: 100px сплошная прозрачная;
  граница слева: 100px сплошная прозрачная;
  граница справа: 100 пикселей сплошная прозрачная;
  нижняя граница: 100px сплошной светлый лосось;
}
.
triangle4 { ширина: 0; высота: 0; граница сверху: 100px сплошная прозрачная; граница слева: 100px сплошная прозрачная; граница справа: однотонные мокасины размером 100 пикселей; нижняя граница: 100px сплошная прозрачная; }

Трапеция

Что произойдет, если мы добавим значение

ширины для рамки только для рамки выше?

бордюр-бокс
 .box{
  ширина: 150 пикселей;
  высота: 0px;
  
  граница сверху: 100 пикселей сплошной светло-зеленый;
  граница слева: однотонные мокасины размером 100 пикселей;
  граница справа: 100 пикселей сплошной средне-фиолетовый;
  нижняя граница: 100px сплошной светлый лосось;
} 

Отлично, у нас получилось 4 трапеции! Как и в случае с треугольниками, мы можем получить единую трапецию, скрыв 3 границы.

рамка-бокс
 .трапеция{
  ширина: 150 пикселей;
  высота: 0px;
  
  верхняя граница: 100 пикселей прозрачная;
  граница слева: 100px сплошная прозрачная;
  граница справа: 100 пикселей сплошная прозрачная;
  нижняя граница: 100px сплошной светлый лосось;
} 

Circle

border-radius

Прежде чем мы перейдем к кругу, давайте сначала посмотрим, как работает border-radius ?

Как и многие свойства CSS, относящиеся к полям, отступам и границам, существует четыре отдельных свойства — по одному для каждого угла элемента блока — и одно сокращенное свойство.

 граница-вправо-радиус
граница-нижний-правый-радиус
граница-нижний-левый-радиус
граница-верхний-левый-радиус
border-radius 

Каждое из свойств border-radius

может принимать одно или два значения, выраженные в виде длины или процента (проценты относятся к соответствующим размерам рамки).

 граница-*-радиус: [ <длина> | <%> ] [ <длина> | <%> ]? 

На следующей диаграмме показано несколько примеров того, как могут выглядеть углы с разным радиусом:

border-radius
Implement

Если мы установим border-radius: 50% (50% может быть (width/2)px) в квадрате, мы можем получить круг.

граница-радиус-50 «CSS .круг { ширина: 200 пикселей; высота: 200 пикселей; радиус границы: 50%; цвет фона: светло-розовый; } «`

Овал

Круг создается из квадрата, овал создается из прямоугольника.

овал
 .овал {
  ширина: 200 пикселей;
  высота: 100 пикселей;
  радиус границы: 50%;
  цвет фона: бледно-зеленый;
} 

Quadrant

Нарисовать квадрант легко, если вы научились рисовать круг, просто установите значение border-radius от 50% до 100% .

квадрант
 .квадрант {
 цвет фона: глубокий небесно-голубой;
 ширина: 200 пикселей;
 высота: 200 пикселей;
 радиус границы: 100% 0 0 0;
} 

То же, что и треугольник, вы можете установить значение border-radius , чтобы «повернуть» квадрант.

Конус

Конус можно нарисовать с помощью техники треугольника и круга.

конус
 .конус {
  ширина: 0;
  высота: 0;
  граница слева: 150px сплошная прозрачная;
  граница справа: 150 пикселей сплошная прозрачная;
  граница сверху: 200 пикселей сплошной песочно-коричневый цвет;
  радиус границы: 50%;
} 

Резюме

Вы можете найти всю реализацию в моей кодовой ручке.

Теперь ваша очередь создать собственную форму значка с помощью css.


Как нарисовать квадрат, круг, треугольник и другие формы с помощью CSS

Очень просто!! Но без ручки, карандаша или мыши рисовать фигуры только языком действительно романтично . Нет? Вот что мы собираемся сделать. В этом уроке мы покажем удобный способ рисования квадрата , прямоугольника, круга, овала и треугольника с использованием различных приемов и стратегий

CSS .

Следуя этому, вы можете рисовать свои собственные формы, просто изменяя значение свойств как по душе . Давайте начнем:

Но для этого вы должны иметь простое представление о CSS, так как мы не будем здесь вдаваться в основы CSS .

Если у вас нет, начните с базовыми знаниями CSS отсюда

  • Детективный обзор CSS

Как нарисовать квадрат в CSS

Квадрат — это плоская фигура, которая имеет четыре равные прямые стороны с четырьмя прямыми углами .

Чтобы нарисовать квадрат, просто возьмите раздел . Стилизуйте его с одинаковыми значениями ширины и высоты . Чтобы сделать его видимым, установите свойство border или background . Вот и все. Вы также можете использовать элемент p вместо div .

Теперь взгляните на код и посмотрите на вывод:

КОД

<дел>

ВЫВОД

Как нарисовать прямоугольник с помощью CSS

Прямоугольник – это четырехсторонняя фигура, у которой противоположные стороны равны и параллельны. Противоположные углы также равны по 90° каждый.

Чтобы нарисовать прямоугольник, возьмите элемент div или p . Стилизуйте его с неравными значениями ширины и высоты . Установите свойство border или background или оба, чтобы сделать его видимым.

КОД

<дел>