我试图在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
答案 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>