2017-02-15 53 views
0

当我将我的svg嵌入到html中并在其中放置了一个下拉切换类时,它完美地起作用。 但是当我用对象标签包装它时,它显示svg本身,但是当我点击它时,它不显示下拉菜单,或者很快 - 它不起作用。Bootstrap下拉切换不适用于包裹在对象标签中的svg

这里是与联SVG工作代码:

<div class="dropdown pull-left"> 
    <svg class="sidebar-icon-size notifications-icon dropdown-toggle" 
     data-toggle="dropdown" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
     viewBox="0 0 12.7 14" style="enable-background:new 0 0 12.7 14;" xml:space="preserve"> 
     <path d="M6.1,9.5c-1.6,0.6-2.7,1.3-3.4,1.9c0.5,0.5,1.5,0.6,2.4,0.2c1.2-0.4,1.9-1.5,1.7-2.3c0,0,0,0,0,0C6.5,9.3,6.3,9.4,6.1,9.5 
      M7.1,12.2c-3.1,1.1-5.6,0.5-5.7,0.2c-0.2-0.5,1-2.2,4.5-3.5c3.5-1.3,5.5-0.8,5.7-0.2C11.7,9,10.1,11.1,7.1,12.2 M10,5.8 
      C8.2,1.9,7.3,0.5,4.3,0.5c-1.1,0-0.8-0.8-1.6-0.5C1.9,0.4,2.6,0.8,1.8,1.5c-2.3,1.9-2.1,3.6-1,7.8c0.4,1.7-1.1,1.8-0.5,3.5 
      C0.7,14,4,14.5,7.4,13.3c3.4-1.3,5.6-3.8,5.2-5C12,6.5,10.8,7.5,10,5.8" /> 
    </svg> 
    <ul class="topbar-menu dropdown-menu pull-right" style="width:200px;"> 
     <li>blabla 1</li> 
     <li>blabla 2</li> 
     <li>blabla 3</li> 
    </ul> 
</div> 

这里是不与包装物标签的工作代码:

<div class="dropdown pull-left"> 

    <object class="topbar-icon-size notifications-icon dropdown-toggle" 
          data-toggle="dropdown" 
          data="../../Styles/Icons/Notifications.svg" 
          type="image/svg+xml"></object> 
    <ul class="topbar-menu dropdown-menu pull-right" style="width:200px;"> 
     <li>blabla 1</li> 
     <li>blabla 2</li> 
     <li>blabla 3</li> 
    </ul> 
</div> 

我试图消除下拉 - 从对象标签中关闭类和数据切换属性,以便它们仅保留在svg文件中,我反之亦然,将它们从svg文件中删除,并将它们仅放置在对象标记中,我试着在它们处于无论如何,但它不工作。 任何帮助,将不胜感激。 谢谢:)

+0

什么是对......的反对票? –

+0

我认为twitter-bootstrap代码根本无法工作跨文档。 –

+0

所以处理这个问题的唯一方法就是将所有丑陋的svg转储到代码中,以便使其能够与bs下拉菜单一起使用?另外,你的假设回答了将切换类仅放在svg文件并将其从对象标记中移除的情况,但是如果我将下拉切换到对象标记本身 - 那么它不是真正的跨文档,因为对象标签本身与下拉菜单ul位于相同的html文档中,所以即使我们假设您的假设是正确的,为什么它不以这种方式工作呢? –

回答

0

我怀疑原因可能是由于浏览器安全限制与点击<object>元素有关。

尝试使用<img>代替。

<div class="dropdown pull-left"> 

    <img class="topbar-icon-size notifications-icon dropdown-toggle" 
          data-toggle="dropdown" 
          src="../../Styles/Icons/Notifications.svg"/> 
    <ul class="topbar-menu dropdown-menu pull-right" style="width:200px;"> 
     <li>blabla 1</li> 
     <li>blabla 2</li> 
     <li>blabla 3</li> 
    </ul> 
</div> 
+0

感谢您的回复保罗,但我知道它适用于img,但如果我使用img而不是对象,则我失去了对图标的CSS控制,因此我无法用一些纯CSS解决它,但必须使用jQuery来replcae img与内联svg,所以CSS类将是有效的。没有任何解决方法,以便它可以用对象或其他包装(如img)解决,但不会失去对svg的CSS控制? –

+0

CSS不适用于所有文档边界,因此无论如何您都不能使用CSS样式设置''SVG(除非SVG文档本身有CSS规则)。 –

+0

对,在svg的路径标记中有css类,就像我在上面写的代码中看到的那样,它有媒体查询和悬停虚拟类和所有聚会,它可以与对象一起使用,但不能与img –