Нарисовать схему в браузере html svg. Теги для работы с графикой в HTML-документах

Такой вывод следует из доклада председателя правления «Башнефти» , озвученного общему собранию акционеров компании, копия которого поступила в распоряжение редакции .

Из документа следует, что в результате геологоразведочных работ, в 2018 году была открыта 81 продуктивная залежь с запасами 19 миллионов тонн.

При этом применение высокоэффективных геолого-технических мероприятий и внедрение современных технологий повышения нефтеотдачи позволили сохранить по итогам 11 месяцев добычу нефти на зрелых месторождениях в Башкирии на уровне 2017 года - 15 миллионов тонн. Всего объем добычи за указанный период составил 17,3 миллиона тонн нефти.

В докладе также отмечается, что создание единой производственной цепочки с добывающим и перерабатывающим комплексом «Роснефти» повысило эффективность работы Уфимских НПЗ и привело к снижению операционных и логистических затрат. В частности, освоен выпуск бензина «Евро-6» и начато промышленное производство дорожного битума по новому ГОСТу.

Объем розничной реализации на АЗС «Башнефти» за 11 месяцев 2018 года увеличился по сравнению с аналогичным периодом прошлого года на 13,2 процентов и достиг 1,7 миллиона тонн.

Для реализации стратегии в области нефтехимии ведется модернизация нефтехимического производства. Так, в мае 2018 года на «Уфаоргсинтезе» введена в эксплуатацию новая установка производства кумола - сырья для изготовления красок, растворителей, различных полимеров, используемых в автомобильной промышленности, медицине и фармакологии. На очереди - реконструкция комплекса производства ароматики на «Уфанефтехиме», строительство новых установок по производству олефинов на «Уфаоргсинтезе».

Консолидированный показатель операционной прибыли за 9 месяцев 2018 года вырос по сравнению с аналогичным периодом 2017 года на 22,6 процента и составил 135,5 миллиарда рублей. Чистая прибыль «Башнефти» достигла 74,6 миллиарда рублей, что на 73,5 процента превышает аналогичный показатель прошлого года.

В течение третьего квартала «Башнефть» выплатила акционерам объявленные на годовом собрании в июне 2018 года дивиденды в размере 28,2 миллиарда рублей, а совокупный объем выплаченных с начала года дивидендов составил 43 миллиарда рублей.

При этом уровень чистого долга компании снизился и по состоянию на 30 сентября 2018 года составил 40,1 миллиарда рублей (на аналогичную дату 2017 года данный показатель составлял 104,7 миллиарда рублей).

При этом за отчетный период налоговые отчисления в бюджет Башкортостана с учетом разового платежа по налогу на прибыль увеличились по сравнению с аналогичным периодом прошлого года в 1,5 раза и составили 50,5 миллиарда рублей.


D3 наиболее полезен, когда используется для создания и манипулирования визуальными образами на основе SVG. Рисование с использованием div "ов и других HTML-элементов возможно, но немного неуклюже, и обычно появляются несоответствия отображения в различных браузерах. Использование SVG более надежно, визуально последовательно и быстрее.

Редакторы векторной графики, такие как Illustrator, могут быть использованы для создания SVG-файлов, но нам необходимо научиться создавать их с помощью кода.

Элемент SVG

Scalable Vector Graphics(масштабируемая векторная графика) - формат изображений на основе текста. Каждое SVG-изображение определено с использованием разметки кода, похожей на HTML. SVG-код может быть включен напрямую в HTML-документ. Каждый веб-браузер поддерживает SVG, исключением является только Internet Explorer версии 8 и старше . SVG основан на XML, поэтому вы можете заметить, что элементы, не имеющие закрывающего тега, должны быть самозакрывающимися. Например:

Перед тем как вы сможете что-нибудь рисовать, вам надо создать SVG-элемент. Думайте об SVG-элементе, как о холсте, на котором отрисовываются все ваши визуальные образы(В такой трактовке, SVG концептуально схож с элементом HTML - canvas). Как минимум, хорошо задать ширину и высоту с помощью атрибутов width и height , соответственно. Если вы их не зададите, SVG растянется на всю площадь блока.

Здесь SVG-элемент, созданный с использованием кода выше:

Не видите его? Нажмите правой кнопкой по пустому месту выше и выберите "Просмотр кода элемента". Ваш веб-инспектор должен показать что-то похожее:

Заметьте, что тут есть SVG-элемент, который занимает 500 пикселей по горизонтали и 50 пикселей по вертикали.

Также заметьте, что браузеры считают пиксели единицей измерения по умолчанию. Мы указали размеры как 500 и 50, а не 500px и 50px. Мы можем указать px явно, или любую другую единицу измерения, например: em , pt , in , cm , и mm.

Простые фигуры

Существует некоторый набор фигур, которые вы можете поместить внутрь элемента SVG. Этот набор включает: rect , circle , ellipse , line , text и path .

Если вы знакомы с программирование компьютерной графики, вы вспомните, что обычно координатная система на основе пикселей начинается с левого верхнего угла и имеет координаты точки (0,0). Увеличение х происходить слева направо, увеличение у -сверху вниз.

0,0 100,20 200,40

rect рисует квадрат. Квадрат задается четырьмя значениями: x , y - указывают точку верхнего левого угла; width , height - указывают ширину и высоту квадрата. Этот квадрат занимает все пространство нашего SVG:

circle рисует круг. Круг задается тремя величинами: cx , cy указывают точку, расположенную в центре описываемой окружности, r задает радиус круга. Этот круг расположен в центре нашего SVG, потому что атрибут cx ("center-x") равен 250. Пример:

ellipse задается схоже с circle , но предполагается, что радиус задается по двум осям: по х и по у . Вместо х используйте rx , вместо y - ry .

line рисует линию. Используйте x1 и y1 для задания координат начала линии, и x2 и y2 для задания координат конца. Атрибут stroke должен задавать цвет линии, иначе она будет невидимая.

text отрисовывает текст. Используйте x , чтобы указать левый край, и y , чтобы указать вертикальную позицию так называемой базовой линии.

Easy-peasy Easy-peasy

текст будет наследовать CSS-стили шрифта родительского элемента, если только вы не зададите свои стили для текста. Обратите внимание, как форматирование текста выше совпадает с текстом, описываемом в этом параграфе. Мы может переопределить стили форматирования так:

Easy-peasy Easy-peasy

Также заметьте, когда любой визуальный элемент упирается в границу SVG-элемента, он будет обрезан. Будьте осторожны, когда используете text , чтобы ваши загагулины у текста не были обрезаны. Вы можете увидеть, что случится с текстом, если выставить baseline (то есть у ) равным 50, такую же, как высота SVG:

Easy-peasy Easy-peasy

path рисует что-нибудь более сложное, чем фигуры, описанные выше(например, силуэт стран на геокартах), и будет описан отдельно. А теперь мы будем работать с простыми фигурами.

Стилизация SVG-элементов

По умолчанию любой элемент SVG имеет черную заливку и не имеет рамку. Если вы хотите что-то сверх этого, вам придется применить стили к вашему элементу. Общие SVG свойства перечислены ниже:

  • fill - заливка. Цветовое значение. Также как и в CSS цвет может быть указан несколькими способами:
    • по имени: orange;
    • значение в шестнадцатиричной системе счисления: #3388aa , #38a ;
    • значение в формате RGB: rgb(10, 150, 20) ;
    • значение в формате RGBA: rgba(10, 150, 20, 0.5) .
  • stroke - рамка. Цветовое значение.
  • stroke-width - ширина рамки(обычно в пикселях).
  • opacity - прозрачность. Числовое значение в промежутке от 0.0(полностью прозрачно) до 1.0(полностью видимо).

С text также можно использовать следующие свойства:

  • font-family
  • font-size

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

Ниже некоторые CSS-свойства заданы непосредственно в элементе circle :

По-другому мы могли бы сделать так: не прописывать атрибуты стиля, а указать класс стилей(также как и обычному HTML элементу):

а потом добавить fill , stroke и stroke-width параметры в CSS-стили необходимого класса:

Pumpkin { fill: yellow; stroke: orange; stroke-width: 5; }

Второй подход имеет несколько очевидных преимуществ:

  1. Можно описать класс один раз и применять его ко многим элементам.
  2. CSS-код проще воспринимать, чем атрибуты внутри элементов.
  3. По этим причинам второй подход более прост в обслуживании, а также он быстрее применим.

Использование CSS для применения стилей к SVG, однако, может кого-то привести в замешательство. fill , stroke , stroke-width все-таки не CSS-свойства(ближайшие CSS-эквиваленты это background-color и border ). Чтобы помочь вам запомнить, какие правила в таблице стилей указаны для SVG-элементов, желательно включать svg в CSS-селектор:

Svg .pumpkin { /* ... */ }

Наложение и порядок их рисования

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

И еще, если нарисовать несколько фигур, то они перекрываются:

Порядок, в котором элементы указаны в коде, определяет их глубину. Фиолетовый квадрат указан в коде первым, поэтому первым он и отрисовывается. Дальше рисуется синий квадрат над фиолетовым, дальше зеленый над синим и фиолетовым и т.д.

Думайте так, будто SVG-фигуры рисуются на холсте. Цвет, который применяется позже всех, закрашивает остальные цвета, оказываясь "впереди".

Этот аспект рисования порядка становится важным, когда у вас есть несколько визуальных элементов, которые не должны быть ничем перекрыты. Например, у вас могут быть оси или метки значений на осях, которые появляются на диаграмме рассеивания. Оси и метки должны быть добавлены в SVG в конце, чтобы они появились перед остальными элементами и были видны.

Прозрачность

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

Существует два способа применить прозрачность: использовать RGB-цвет с альфа-каналом или установить свойству opacity числовое значение.

Вы можете использовать rgba() везде, где надо указать цвет, например в атрибутах fill и stroke . rgba() ожидает, что вы передадите ему 3 значения в промежутке от 0 до 255 для красного, зеленого и синего, плюс альфа-канал(прозрачность) в диапазоне от 0.0 до 1.0.

Заметьте, что с методом rgba() , прозрачность применяется к fill и stroke атрибутам независимо. Заливка следующих кругов на 75% прозрачна, а их рамка - на 25%:

Для применения прозрачности ко всему элементу, необходимо установить атрибут opacity . Ниже полностью видимые круги:

а это те же круги с различной прозрачностью:

Вы также можете использовать атрибут opacity у элемента, цвета которого заданы в формате rgba() . Когда вы это делаете - прозрачность умножается. Ниже круги используют те же значения цвета RGBA для fill и stroke . У первого элемента не установлен атрибут opacity , а у двух других установлен:

Обратите внимание, что у третьего круга opacity равно 0.2 или 20%. Тем не менее его фиолетовая часть имеет прозрачность в 75%. Таким образом, фиолетовая часть в конечном итоге прозрачна на 0.2*0.75 = 0.15 или 15%.

Векторная графика широко используется в печатном деле. Но и для веб сайтов мы можем использовать её с помощью SVG (Scalable Vector Graphic - масштабируемая векторная графика) . В соответствии со спецификацией W3.org SVG определяется как:

Язык для описания двумерной графики в XML. SVG допускает использование трех типов объектов: векторные графические формы (наппример, пути, состоящие из прямых линий и кривых), изображения и текст.

Несмотря на то, с августа 2011 года SVG включено в рекомендации W3C , данная технология практически не используется в веб проектах, хотя и имеет перед растровыми изображениями ряд преимуществ. В данной серии уроков мы представим, как работать с SVG элементами на веб страницах.

Преимущества SVG

Независимость разрешения

Растровые изображения зависят от разрешения. Графика приобретает непрезентабельный вид при изменении размеров до определенных масштабов. С векторной графикой такая ситуация невозможна в принципе, так как все представляется математическими выражениями, которые автоматически пересчитываются при измении масштаба, и качество сохраняется в любых условиях.

Уменьшение количества запросов HTTP

SVG может быть встроено непосредственно в документ HTML с помощью тега svg , поэтому браузер не нуждается в запросах для обслуживания графики. Такой подход хорошо влияет на характеристики загрузки веб сайта.

Стили и скрипты

Встраивание с помощью тега svg также позволяет легко определять стили для графики с помощью CSS. Можно изменять свойства объекта, такие как цвет фона, прозрачность, рамки и так далее. Подобным же образом можно манипулировать графикой с помощью JavaScript.

Легко редактировать и анимировать

Объекты SVG можно анимировать с помощью CSS или JavaScript. Также объекты SVG можно модифицировать с помощью текстового редактора.

Меньший размер файла

SVG имеет меньший размер файла по сравнению с растровой графикой.

Базовые формы SVG

В соответствии со спецификацией мы можем рисовать несколько базовых форм: линия, полилиния, прямоугольник, круг, эллипс. Все элементы должны быть вставлены в тег ... . Рассмотрим базовые элементы подробно.

Линия

Для вывода линии в SVG используется элемент . Он рисует отрезок, для которого нужно определить две точки: начало и конец.

Начало отрезка определяется атрибутами x1 и y1 , а конечная точка определяется координатами в атрибутах x2 and y2 .

Также имеется два других атрибута (stroke и stroke-width) которые используются для определения цвета и ширины линии соответственно.

Данный объект похож на , но с помощью элемента Можно рисовать несколько линий сразу.

Элемент Содержит атрибут points , который используется для указания координаты точек.

Прямоугольник выводится с помощью элемента . Нужно определить ширину и высоту.

Для вывода круга используем элемент . В следующем примере мы создаем круг с радиусом 100 , который определяется в атрибуте r:

Первый два атрибута cx и cy определяют координаты центра. В выше приведенном примере мы установили значение 102 для обеих координат. По умолчанию используется значение 0.

Для вывода эллипса используем элемент . Он работает так же, как и круг, но мы можем специально задавать радиусы по оси x и y с помощью атрибутов rx и ry:

Элемент Выводит многогранные фигуры, такие как треугольник, шестиугольник и прочее. Например:

Использование редактора для векторной графики

Вывод простых объектов SVG в HTML осуществляется просто. Однако, когда сложность объекта увеличивается, подобная практика может привести к большому объему нужной работы.

Но вы можете воспользоваться любым редактором для векторной графики (например, Adobe Illustrator или Inkscape ) для создания объектов. Если вы владеете подобным инструментом, рисовать в них нужные объекты существенно проще, чем кодировать графику в теге HTML.

Можно копировать команды для векторной графики из файла в документ HTML. Или можно встраивать файл.svg с помощью одного из следующих элементов: embed , iframe и object .

Результат будет одинаковым.

Поддержка в браузерах

SVG имеет хорошую поддержку в большинстве современных браузеров , за исключением IE версии 8 и более ранних. Но задачу можно решить с помощью библиотеки JavaScript . Для облегчения работы можно воспользоваться инструментом ReadySetRaphael.com для конвертации кода SVG в формат Raphael.

Сначала загружаем и включаем библиотеку в документ HTML. Затем загружаем файл.svg , копируем и вставляем полученный код в функцию после загрузки:

В теге body размещаем следующий элемент div с идентификатором rsr .

И все готово.

В следующем уроке серии мы рассмотрим, как определять стили для объектов SVG в CSS.

Векторная графика широко применима в печатной продукции. Что касается веб-сайта, то здесь мы также можем использовать векторную графику посредством SVG или Scalable Vector Graphics (масштабируемая векторная графика). В официальной спецификации W3.org описывается следующим образом:

Язык для описания двумерной графики посредством XML. SVG позволяет нам использовать три типа графических объектов: векторные графические фигуры (например, пути, состоящие из прямых и кривых линий), изображений и текст.

Технология была доступна аж с 1999 года, и 16 августа 2011 года вошла в список рекомендаций W3C. Тем не менее, SVG до сих пор не так часто используется, несмотря на множество преимуществ в использовании векторной графики вместо растровой.

Преимущества масштабируемой векторной графики

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

Независимость от разрешения

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

Сокращение HTTP-запросов

Масштабируемая векторная графика можете быть встроена напрямую в HTML-документ при помощи тега svg, так что браузеру не нужно будет дополнительный запрос для графики. Это также положительно сказывается на производительности веб-сайта.

Стилизация и скриптинг

Прямая интеграция при помощи тега svg также позволит нам стилизовать графику при помощи CSS. Мы можем изменять такие параметры объекта как цвет фона, непрозрачность, границы и так далее, таким же образом, как это происходит в HTML. Мы также можем управлять графикой посредством javascript.

Возможность анимации и редактирования

SVG-объект может быть анимирован при использовании анимационного элемента или посредством JS-библиотеки вроде jQuery. SVG-объект также может быть отредактирован посредством любого текстового редактора или графического ПО вроде (бесплатен) или .

Меньший размер файла

SVG имеет меньший размер файлов в сравнении с растровой графикой.

Рисуем простые фигуры, используя SVG

Следуя спецификации, мы можем рисовать вроде многоугольников, окружностей, линий или эллипсов посредством SVG и, для того, чтобы браузер генерировал масштабируемую векторную графику, все эти графические элементы должны быть помещены в теги «svg». Давайте рассмотрим на примерах, представленных ниже:

Линия

Для того чтобы нарисовать линию при помощи SVG, мы можем использовать элемент «line». Этот элемент используется для рисования одной прямой линии, поэтому он будет состоять всего из двух точек: начальной и завершающей.




Как вы можете видеть выше, координата начальной точки линии указана в первых двух атрибутах х1 и х2, а координата завершающей точки указана атрибутами y1 и y2.

Здесь также есть два других атрибута: stroke и stroke-width, которые отвечают за цвет и ширину границы. С другой стороны, мы также можем определить эти атрибуты в строчном стиле, следующим образом:

Style="stroke-width:1; stroke:rgb(0,0,0);"
и это даст нам тот же результат.


*

Ломаная линия

Здесь все очень сходится с «line», но посредством элемента «polyline» мы можем нарисовать несколько линий, вместо одной. Вот пример:




Элемент «polyline» имеет атрибуты точек, которые содержат все координаты линий.


*

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

Нарисовать прямоугольник мы можем так же просто, только при помощи элемента «rect». Нам только лишь нужно будет указать ширину и высоту:





*

Окружность

Мы также можем нарисовать окружность посредством элемента «circle». В этом примере мы нарисуем окружность с радиусом 100, который определяется атрибутом r:




Первые два атрибута, cx и cy, определяют центральную координату окружности. В вышеприведенном примере мы выставили 102 как для координаты x, так и для y. Если эти атрибуты не будут заданы, то по умолчанию они будут составлять 0.


*

Эллипс

Мы можем нарисовать эллипсы посредством элемента «ellipse». Здесь все работает примерно так же, как и с кругом, но на этот раз мы можем управлять отдельно радиусом линии х и радиусом линии y посредством атрибутов rx и ry.





*

Многоугольник

С помощью элемента «polygon» мы можем рисовать многоугольники, фигуры с несколькими углами и сторонами вроде треугольника, восьмиугольника. Пример:





*

Применение редактора векторной графики

Как видно, рисовать простые фигуры при помощи SVG в HTML довольно просто. Тем не менее, если нам нужен более сложный объект, то этот метод нам уже не подойдет.

К счастью, как мы уже указали выше, мы можем использовать редактор векторной графики вроде Adobe Illustrator или Inkscape для того, чтобы проделать эту работу. Если вы знакомы с этим ПО, то вы без труда сможете рисовать объекты при помощи удобного интерфейса, нежели при помощи кода HTML.

Либо вы также можете встроить сам svg-файл при помощи одного из следующих элементов: embed, iframe, object.


Результат будет схожим.

В данном примере мы использовали с .


*

Браузерная поддержка масштабируемой векторной графики

Что касается поддержки в браузерах, то масштабируемая векторная графика уже сейчас отлично поддерживается во за исключением IE8 и более ранних версий. Но это можно исправить при помощи javascript-библиотеки под названием . Чтобы облегчить задачу, мы воспользуемся инструментом , чтобы конвертировать наш SVG-код в формат, поддерживаемый Raphael.


Для начала, скачайте и включите библиотеку Raphael.js в ваш HTML-код. Затем, загрузите svg-файл на сайт, скопируйте и вставьте сгенерированный код в следующую функцию load:

Window.onload=function() {
//the Raphael code goes here
}
Внутри тега body вставьте следующий div с id атрибутом rsr.


И на этом мы закончили! Посмотрите пример, приведенный по ссылке ниже.

В завершение

Итак, это и есть основы SVG. Мы надеемся, что теперь вы немного понимаете этот предмет. Это один из лучших способов оптимизировать производительность ваших страниц, и при этом предоставить графику, способную отчетливо отображаться даже на экранах Retina.

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

* (Введение в SVG)
* (SVG: не будем зависеть от разрешения)
* (Почему бы не использовать SVG?)

Спасибо за чтение, и надеемся, что данная статья окажется полезной вам!

Внимание! У вас нет прав для просмотра скрытого текста.

Этот пост - первый из серии статей о SVG (Scalable Vector Graphic), рассказывающий об основах векторной графики на сайте.

Векторная графика широко применяется в полиграфии. Для веб-сайтов существует SVG, которая согласно официальной спецификации на w3.org является языком для описания двумерной графики в XML. SVG включает в себя три типа объектов: фигуры, изображения и текст. SVG существует с 1999 года , а с 16 августа 2011 включена в рекомендации W3C . SVG сильно недооценена веб-разработчиками, хотя имеет несколько важных преимуществ.

Преимущества SVG

  • Масштабирование: в отличие от растровой графики, SVG не теряет в качестве при масштабировании, поэтому ее удобно использовать для разработки под retina.
  • Уменьшение HTTP-запросов: при использовании SVG сокращается количество обращений к серверу, соответственно увеличивается скорость загрузки сайта.
  • Стайлинг и скриптинг: при помощи CSS можно менять параметры графики на сайте, например фон, прозрачность или границы.
  • Анимация и редактирование: при помощи javascript можно анимировать SVG, а также редактировать в текстовом или графическом редакторе (InkScape или Adobe Illustrator).
  • Малый размер: объекты SVG весят намного меньше растровых изображений.

Основные SVG-фигуры

Согласно официальной спецификации можно рисовать простые объекты с помощью SVG: прямоугольник, окружность, линию, эллипс, ломаную линию или многоугольник при помощи тега svg .

Простая линия с помощью тега line с всего двумя параметрами - точками начала (x1 и x2) и конца (y1 и y2):

Также можно добавить атрибуты или стили stroke and stroke-width, чтобы задать цвет и ширину:

Style="stroke-width:1; stroke:rgb(0,0,0);"

Ломаная линия

Синтаксис аналогичен предыдущему, используется тег polyline , атрибут points задает точки:

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

Вызывается тегом rect, можно добавить некоторые атрибуты:

Окружность

Вызывается тегом circle , в примере с помощью атрибута r задаем радиус, cx и cy задают координаты центра:

Эллипс

Вызывается тегом ellipse , работает аналогично circle , но можно задать два радиуса - rx и ry :

Многоугольник

Вызывается тегом polygon , многоугольник может иметь разное количество сторон:

Использование редакторов

Как видно из примеров, рисование базовых SVG-фигур - это очень просто, но объекты могут быть намного сложнее. Для таких нужно использовать редакторы векторной графики, например Adobe Illustrator или Inkscape, где можно сохранять файлы в SVG-формате, а потом редактировать в текстовом редакторе. Вставлять на страницу SVG можно с помощью embed, iframe и object:

Пример - изображение айпода с сайта OpenClipArt.org .