Как мне создать такую фигуру для отображения на веб-странице?
Я не хочу использовать изображения, так как они будут размыты при масштабировании
Я попробовал с CSS :
.tear {
display: inline-block;
transform: rotate(-30deg);
border: 5px solid green;
width: 50px;
height: 100px;
border-top-left-radius: 50%;
border-bottom-left-radius: 50%;
border-bottom-right-radius: 50%;
}
<div class="tear">
</div>
Это оказалось действительно облажался.
И тогда я попробовал с SVG:
<svg viewBox="0 100 100">
<polygon points="50,0 100,70 50,100 0,70"/>
</svg>
Он получил форму, но нижняя часть не была изогнута.
Есть ли способ создать эту форму, чтобы ее можно было использовать на HTML-странице?
html
css
svg
css-shapes
Persijn
источник
источник
[srcset]
или в<picture>
элемент. Еще лучше, просто ссылку на изображение svg:<img src="tear.svg" alt="Teardrop"/>
picture
элемент? Нет поддержки IE, нет поддержки ранних версий Chrome, нет поддержки Safari. Мне продолжать?why are you scaling the image?
Что ж, изображение может выглядеть размытым, если разработчик не масштабирует его. Все, что вам для этого нужно - это увеличение браузера. В моем случае у меня есть экран HighDPI и множество размытых изображений. Так что, да, если вы можете избежать изображений с помощью SVG, сделайте это.Ответы:
SVG подход:
Вы можете легко получить двойную кривую с помощью встроенного SVG и
<path/>
элемента вместо<polygon/>
элемента, который не допускает изогнутые формы.В следующем примере используется
<path/>
элемент с:Q
)A
)SVG - отличный инструмент для создания таких форм с двойными изгибами. Вы можете проверить этот пост о двойных кривых с помощью сравнения SVG / CSS. Некоторые из преимуществ использования SVG в этом случае:
Поддержка браузера для встроенного SVG восходит к Internet Explorer 9. См. CanIuse для получения дополнительной информации.
источник
<svg width="100%" height="100%" viewBox="0 0 8 8" /> <path d="M4 1L3 4A1.2 2 0 1 0 5 4"/> </svg>
... это заполнит область, которую вы ему дадите, поэтому он может сделать "толстые" или "тощие" капли дождя ... при необходимости изменить фиксированную высоту / ширинуd="..."
атрибуте состоит в том, что у вас больше нет двойной кривой в верхней части капли.<img />
в гипертекстовом документе.Базовый радиус-радиус
Вы можете сделать это в CSS относительно легко, используя border-radius и преобразования. Ваш CSS был только немного.
Расширенный Граница-Радиус
Это будет очень похоже на приведенное выше, но придает ему немного больше формы.
источник
Ваша основная проблема с вашим кодом CSS была:
Таким образом, «исправляя» эти проблемы, вы бы сгенерировали:
Также обратите внимание, чтобы сэкономить на длине CSS, вы можете переписать ваши свойства border-radius в:
это может быть улучшено с помощью псевдоэлементов, как показано в этой скрипке
альтернативы
Я нашел это по Vinay Challuru на codepen.
Обратите внимание, что с логикой я смог создать SVG практически для любой возможной формы сборки и т. Д. Например, быстрый вывод был:
Показать фрагмент кода
Он использует SVG и позволяет вам изменять форму несколькими способами, имея возможность изменить ее форму до желаемого результата:
Показать фрагмент кода
Версия CSS
Хотя это еще далеко от завершения, вы также можете создать эту форму с помощью CSS.
Показать фрагмент кода
Версия SVG
Я должен знать, что SVG должен быть на вершине этого ответа, однако мне нравится вызов, и вот попытка SVG.
Изменяя
path
значения, вы сможете изменить форму вашего дизайна слезинки.источник
ИМО эта форма требует гладкой кривой- Безье, чтобы обеспечить непрерывность кривой.
Капля в вопросе:
Для падения,
Примечание . Красные и синие кривые - это две разные квадратичные кривые.
stroke-linejoin="miter"
, для остроконечной верхней части.Поскольку эта форма использует только последовательные
c
команды, мы можем ее опустить.Вот последний фрагмент:
TBH, хотя , кривые принятого ответа не совсем непрерывны.
Для IE 5-8 (VML)
Работает только в IE 5-8. VML использует команды, отличные от SVG . Например. он использует v для относительного кубического Безье .
Примечание. Этот фрагмент также не будет работать в IE 5-8. Вам нужно создать HTML-файл и запустить его прямо в браузере.
источник
Или, если шрифт ваших зрителей поддерживает его, используйте символы Unicode
КАПЕЛЬ: 💧 (
💧
)или
ЧЕРНАЯ КАПЛЯ: 🌢 (
🌢
)Масштабируйте соответственно!
источник
Я бы лично использовал SVG для этого. Вы можете создавать SVG в большинстве программ векторной графики. Я бы порекомендовал:
Я сделал один ниже, который отслеживает вашу форму в Illustrator.
источник
HTML Canvas
Эта опция пока не раскрыта в этой теме. Команды, используемые для рисования на холсте, очень похожи на SVG (и веб-тики заслуживают похвалы за основную идею, использованную в этом ответе).
Соответствующая фигура может быть создана либо с помощью собственных кривых команды Canvas (Quadratic или Bezier), либо с помощью API Path. Ответ содержит примеры для всех трех методов.
Поддержка браузера для Canvas довольно хорошая .
Использование квадратичных кривых
Ниже представлена расширенная версия с градиентной заливкой и тенями. Я также включил
hover
эффект на фигуру, чтобы проиллюстрировать один недостаток Canvas по сравнению с SVG. Холст основан на растре (пикселях) и, следовательно, будет выглядеть размытым / пиксельным при масштабировании за пределы определенной точки. Единственным решением для этого было бы перерисовать фигуру при каждом изменении размера браузера, что является накладными расходами.Показать фрагмент кода
Использование кривых Безье
Показать фрагмент кода
Использование Path API
Показать фрагмент кода
Примечание: Как уже упоминалось в моем answere здесь , Путь API пока не поддерживается IE и Safari.
Дальнейшее чтение:
источник
Я также нашел это на Codepen, сделанном пользователем Ana Tudor с использованием CSS и
box-shadow
стилевых и параметрических уравнений. Очень простой, очень маленький код. И многие браузеры поддерживают стиль CSS3 Box-shadow:источник
Версия CSS
Поскольку здесь довольно много ответов, я подумал, почему бы не добавить к нему другой метод. Это использует HTML и CSS для создания слезинки.
Это позволит вам изменить цвет рамки и фона слезинки, а также изменить размер верхней части.
Используя один,
div
мы можем создать круг сborder
иborder-radius
. Затем с помощью псевдо - элементов (:before
&:after
) мы создаем CSS треугольник больше здесь , это будет действовать как кончике слеза. Используя в:before
качестве границы, мы размещаем:after
сверху с меньшим размером и желаемым цветом фона.Вот демо слезинка с цветом фона
Показать фрагмент кода
Это так же просто, как поместить цвет фона на
div
и изменить:after
bottom-border
цвет на тот же. Чтобы изменить границу, вам нужно изменитьdiv
цвет границы и цвет:before
фона.источник
Это легко сделать с SVG, просто используя ресурс преобразования изображений, такой как http://image.online-convert.com/convert-to-svg , который использовался для создания следующего:
источник
300.000000pt
и метаданные, которые на самом деле не нужныЕсли вы решите использовать SVG, вы должны прочитать о путях. Я бы также предложил редактор SVG.
источник
Вот четыре более простых формы слезы SVG:
источник