Другим методом, который также может иметь ограниченную поддержку, является «встроенный SVG в CSS». Я не пробовал это сам, но идея в том, что вы предоставляете ресурс изображения в качестве URL-адреса в объявлении CSS для объекта и передаете ему правильно экранированный URL-адрес, который содержит данные.
SVG - это простой текстовый / xml формат. Пример полигона (из w3schools ):
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<polygon points="200,10 250,190 160,210"
style="fill:lime;stroke:purple;stroke-width:1"/>
</svg>
Пример встроенного (встроенного) SVG (упрощенного) (из stackoverflow ):
url("data:image/svg+xml;utf8, <svg></svg>");
Обратите внимание, что данные SVG должны быть должным образом "экранированы" для использования в строке, что делает их немного менее привлекательными, чем простая привязка файла SVG.
Существует некоторая дискуссия относительно жизнеспособности метода в вышеупомянутой связанной ветке. Я думаю, что встраивание чего-то такого простого, как белый треугольник, является простым решением, если есть поддержка. Сложные данные формата SVG должны храниться как файл SVG, а не как встроенный.
Файлы SVG являются векторными и могут масштабироваться в процентах, в отличие от метода «border». Они также (в настоящее время) имеют лучшую (по крайней мере, не встроенную) поддержку, чем перечисленный метод обтравочного контура. SVG, будучи простым текстом, может даже передаваться на лету, используя, например, PHP или другие сценарии на стороне сервера.