如何使用Css定位SVG加载程序?

时间:2014-06-11 17:19:45

标签: html css svg loader

我在codepen上找到了一个相当酷的SVG加载器 - 它可以工作,但是我无法弄清楚如何将它放到屏幕的中心。常规的'ole Css不起作用,所以我有点卡住了。

这是SVG / HTML:

<svg width="300px" height="320px">
      <path class="tri1" d="M11.7 118L9.719 118 72.5 9.259 135.281 118z"></path>
      <path class="tri2" d="M12.2 118L9.719 118 54.602 40.259 99.486 118z"></path>
      <path class="tri3" d="M48.8 118L46.496 118 72.991 72.11 99.486 118z"></path>
    </svg>

这就是重要的Css:

svg {
            vertical-align: bottom;
            display: inline-block;
        }

请提前帮助和谢谢!

1 个答案:

答案 0 :(得分:0)

假设所有代码都在一个文件中(HTML中的所有内容),并且您没有使用imgbackground-image加载SVG,请尝试以下操作:

<style>
   #loadingSVG { position: absolute; top:50%; left:50%; }
</style>

<svg width="300px" height="320px" id="loadingSVG">
    <path class="tri1" d="M11.7 118L9.719 118 72.5 9.259 135.281 118z"></path>
    <path class="tri2" d="M12.2 118L9.719 118 54.602 40.259 99.486 118z"></path>
    <path class="tri3" d="M48.8 118L46.496 118 72.991 72.11 99.486 118z"></path>
</svg>

请在此处查看:http://jsfiddle.net/993eL/


现在,除了假设,如果您尝试将其作为外部文件加载或者您想使用外部样式表,游戏会更改。如果你想使用外部样式表,基本上你有2个选项可以设置你的SVG样式。:

  1. 在HTML文档中内嵌SVG。如果你这不重要 在生成页面或只是copypaste时通过服务器端插入它 它在文档中,必须是内联的。

  2. 将SVG加载为对象元素,这样您就不必将其插入HTML中,但是您必须使用从SVG文件中加载的单独的外部样式表。

  3. 使用外部样式表

    方法1的示例:HTML文档中的内联SVG

    在HTML文档中:

    <svg ... id="Layer_1">
      <ellipse .../>
      <path .../>
    </svg>
    

    在样式表中:

    /*Center the SVG element*/
    /*Option 1: have the element with an specific width so you can
      use margin:0 auto;*/
    #Layer_1 {
        width: 500px; 
        margin: 0 auto;
    }
    
    /*Option 2: move the element anywhere with absolute positioning.
    Note: Remember it will be relative to the parent element as long as 
    your parent element has position:relative set, else it will take
    the body as a base for positioning*/
    #Layer_1 {
        position: absolute;
        top: 50%;
        left: 50%;
    }
    

    请参阅完整代码:http://jsfiddle.net/Sg2Z5/

    方法2的示例:将SVG加载为对象

    在SVG文件中将外部样式表导入为XML样式表(请记住SVG是基于XML的):

    <?xml-stylesheet type="text/css" href="stylesheet.css" ?>
    <svg xmlns="http://www.w3.org/2000/svg">
    

    在HTML中,将SVG加载为XML对象:

    <object type="image/svg+xml" data="YOUR-SVG-FILE.svg">
        <!-- Put your fallback here -->
    </object>
    

    参考文献和推荐读物

    我建议阅读这些文章,因为他们会更详细地解释所有这些