Любое разумное средство реализации просто использует растровое изображение (хранимое внутри браузера) и рисует его с использованием собственных команд рисования ОС.
Почему это имеет значение? Это совсем не связано с HTML + CSS, если это то, что вам интересно.
Более подробно, ради подробно в:
Когда в браузере HTML-парсер видит брезентовый элемент (из заданной шириной & высоты) необходимо выделить экранное растровое изображение, чтобы покрыть эту область. Он либо делает это вручную (т. Е. Malloc()), либо вызывает в некоторый собственный API-интерфейс API для создания поверхности для рисования. Собственный API OS может представлять собой Windows, Gtk, Kde, Qt или любую другую библиотеку чертежей, которую выбрал разработчик браузера. Кроме того, он сильно зависит от операционной системы. Internet Explorer, вероятно, звонит в некоторую родную библиотеку Windows (т. Е. DirectX или WinFooBarMethod()).
После того, как поверхность чертежа создана, она становится доступной для внутренних интерпретаторов интерпретатора JavaScript, вероятно, посредством указателя или дескриптора построенной поверхности чертежа. Затем, когда интерпретатор JS видит вызов одного из методов холста, он превращает это в вызов соответствующей рабочей команды ОС.
Таким образом, используя Windows 3.1 стиля метафору:
"new canvas(width, height)" = "WinCreatePixmap(width, height)"
"canvas.setPixel(x,y,color)" = "WinSetPixel(x,y,color)"
А с помощью управляемого вручную растрового изображения:
"new canvas(width, height)" = "malloc(width * height * sizeof(Pixel))"
"canvas.setPixel(x,y,color)" = "canvas[x][y] = color;"
Опять же, это не имеет значения для разработчика JavaScript, как реализованы эти методы , Единственные люди, которым нужно ухаживать, - это те, кто пишет HTML5-совместимые веб-браузеры с поддержкой холста.
Вы можете прочитать исходный код WebKit: http://webkit.org/building/checkout.html – gahooa
Вы сотрудник Microsoft? лол. –