Как подготовить файл Inkscape SVG для адаптивного веб-дизайна?

Я делал учебник по Treehouse по адаптивному веб-дизайну. На этом этапе в учебнике нас просят преобразовать изображение в svg, чтобы оно могло масштабироваться полностью ответственно.

вместо использования Adobe Illustrator, которым я не владею, я использовал бесплатную Inkscape. После преобразования изображения нам предлагается открыть изображение в текстовом редакторе и удалить требования к высоте и ширине из объявления svg и добавить селектор объектов в правило max width в наш стиль css:

  img, object {
max-width: 100%;
}    

однако после удаления высоты и ширины изображение не реагирует, а вместо этого странно обрезается следующим образом:

enter image description here

кто-нибудь знает, какую ошибку я сделал? Или то, что я должен был убрать?

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

edit1, код:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:xlink="http://www.w3.org/1999/xlink"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   id="svg2985"
   version="1.1"
   inkscape:version="0.48.4 r9939"
   width="319"
   height="177"
   sodipodi:docname="logo.gif">
  <metadata
     id="metadata2991">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <defs
     id="defs2989" />
  <sodipodi:namedview
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1"
     objecttolerance="10"
     gridtolerance="10"
     guidetolerance="10"
     inkscape:pageopacity="0"
     inkscape:pageshadow="2"
     inkscape:window-width="640"
     inkscape:window-height="480"
     id="namedview2987"
     showgrid="false"
     inkscape:zoom="0.94984326"
     inkscape:cx="159.5"
     inkscape:cy="88.5"
     inkscape:window-x="0"
     inkscape:window-y="0"
     inkscape:window-maximized="0"
     inkscape:current-layer="svg2985" />
  <image
     width="319"
     height="177"
     xlink:href="

это "высота" и "ширина" в первом теге SVG, который я удалил.

4 ответов


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

все это означает, что когда масштабирование SVG работает правильно (см. Ниже), вы не увидите преимуществ использования векторных работ. Когда вы масштабируете векторные иллюстрации, вы не получаете "jaggies" (блочность), которые вы получаете при масштабировании растровых изображений. Если ваш SVG просто содержит растровое изображение, это почти то же самое, что просто использовать растровое изображение.

фактический проблема здесь в том, что Inkscape не включает атрибут viewBox в SVGs, который он сохраняет.

при удалении атрибутов" width "и" height "по умолчанию используется значение"100%". Который сообщает браузеру масштабировать SVG, чтобы соответствовать родительскому контейнеру. К сожалению, чтобы это масштабирование работало, браузер должен знать, каковы размеры содержимого SVG. Для этого и предназначен атрибут viewBox.

Illustrator добавляет атрибут viewBox, Inkscape делает не.

чтобы увидеть, что я имею в виду, необходимо добавить следующий код <svg> тег после удаления width и height:

viewBox="0 0 319 177"

вы должны обнаружить, что ваше изображение больше не обрезается и будет изменяться при изменении размера страницы.


Inkscape теперь предоставляет возможность включить viewbox, если вы сохраните файл как "оптимизированный svg". Очень удобно!


  • вы сделали что-то неправильно, если вы "преобразования" растр в векторную графику. Не используя Inkscape, я не могу сказать, но по крайней мере согласно Википедии он не способен выполнять преобразования.

  • вы ничего не преобразовали, ваше изображение находится в формате графического обмена!

чтобы увидеть, как выглядит" реальный " SVG-файл, откройте пример со страницы wiki.


Как вы можете читать здесь ( и для завершения что и требовалось доказать-х):

  1. Выберите объект(ы) для экспорта
  2. откройте окно свойства документа ( Ctrl+Shift+D)
  3. выберите "Изменить размер страницы для рисования или выбора"
  4. Файл > Сохранить Как Копию...
  5. выберите оптимизированный SVG в качестве формата