CartoDB:infowindow中的样式块被忽略了。无法覆盖自定义样式

时间:2015-11-10 13:57:11

标签: css cartodb

我试图在CartoDB Editor中制作自定义信息窗口。从docs开始,应该可以使用<style>块来指定或覆盖默认样式。但似乎整个街区都被忽略了。当我查看Chrome Dev Tools时,我的样式根本不存在。他们没有被覆盖,他们只是不在那里。内联样式工作正常。

信息窗口弹出窗口的标记:

<style type="text/css">
  div.cartodb-popup.v2.custom {
    background: #666;
  }
  div.cartodb-popup.v2.custom:before {
    border-top: 14px solid #666;
  }
  div.cartodb-popup.v2.custom h4 {
    color: #fff;
  }
  div.cartodb-popup.v2.custom p {
    color: #ff0;
  }
</style>

<div class="cartodb-popup v2 custom">
 <a href="#close" class="cartodb-popup-close-button close">x</a>
 <div class="cartodb-popup-content-wrapper">
  <h4>{{boroname}}</h4>
  <p>Borough code: {{borocode}}</p>
 </div>
 <div class="cartodb-popup-tip-container"></div>
</div>

任何想法我可能做错了什么?我已经在有custom类的情况下尝试了它,但是我把它放在那里,因为我认为一些额外的特殊性不会造成任何伤害。我很确定这种<style>方法在一年前就有用了。

我可以使用内联样式做大多数样式,但这非常麻烦,并且不适用于伪元素,如小弹出箭头。

任何在Web界面上执行此操作的方法,或者我们是否需要在我们自己的服务器上托管这些以编辑.js脚本等?

这是我的地图:https://stekhn.cartodb.com/viz/a2534c80-87b0-11e5-a2ef-0e787de82d45/embed_map

2 个答案:

答案 0 :(得分:0)

上面的示例已过时,并且不再允许infowindow编辑器中的<style>块。您只能在CartoDB前端编辑器中使用CSS内联样式。要完全控制infowindow和工具提示外观,请使用cartoDB.js。在这个例子中,我将弹出背景颜色更改为灰色:

<link rel="stylesheet" type="text/css" href="http://libs.cartocdn.com/cartodb.js/v3/3.15/themes/css/cartodb.css">
<script src="http://libs.cartocdn.com/cartodb.js/v3/3.15/cartodb.js"></script>

<style type="text/css">
    div.cartodb-popup.v2.custom {
        background: #666;
    }

    div.cartodb-popup.v2.custom:before {
        border-top: 14px solid #666;
    }

    div.cartodb-popup.v2.custom h3,
    div.cartodb-popup.v2.custom p {
        color: #fff;
    }

</style>

<section id="map"></section>

<script type="infowindow/html" id="template">
  <div class="cartodb-popup v2 custom">
   <a href="#close" class="cartodb-popup-close-button close">x</a>
   <div class="cartodb-popup-content-wrapper">
    <h3>{{name}}</h3>
    <p>{{description}}</p>
   </div>
   <div class="cartodb-popup-tip-container"></div>
  </div>
</script>

<script type="text/javascript">

    cartodb.createVis('map', 'https://your-accout.cartodb.com/api/v2/viz/477bdfc0-8210-11e5-936b-0e787de82d45/viz.json', {
        tiles_loader: true,
        center_lat: 48.6,
        center_lon: 11.4,
        zoom: 7
    })
    .done(function(vis, layers) {

        var subLayer = layers[1].getSubLayer(1);

        // Select template from dom 
        subLayer.infowindow.set('template', $('#template').html());
    });
</script>

答案 1 :(得分:0)

奇怪的是,我能够在不使用任何脚本标签的情况下让我的infowindow动态变高。我使用Web界面设置窗口的宽度,然后通过单击顶部附近的按钮将其添加到infowindow自定义HTML。

{{mtrsrc}}是我表格中的一栏。

这是我的代码:

  <div class="cartodb-popup v2 custom_infowindow">
    <a href="#close" class="cartodb-popup-close-button close">x</a>
    <div class="cartodb-popup-content-wrapper">

      <div class="row">
        <div class="label"></div>
        <div class="info">
<img height="300"  src="http://pesticideresearch.com/fum/{{mtrsrc}}.png" />

        </div>
      </div> 

    </div>
    <div class="cartodb-popup-tip-container"></div>
  </div>