面上大多数的热点地图,都是以 JavaScript 来做的,但是使用 CSS3 制作的热点地图倒还真的挺少见的。
其实 CSS3 的功能也很强大,能帮助我们实现很多用 JavaScript 实现的效果,最近小编刚学会 HTML5 和 简单的 CSS3,在这里用 CSS3 实现了热点地图动画,效果如下:
CSS3 实现热点地图动画
下面给大家初步讲讲,如何用 CSS3 制作一个热点地图,你可以学到 HTML 的布局、HTML 列表、CSS 选择器、CSS3 动画、CSS3 的 2D 转换等,对于练习 HTML、CSS 也有很好的帮助。
相关代码下载命令:
点击文末阅读原文,获取完整代码。
首先我们来创建如下目录结构:
在 img 目录下获取地图图片,打开终端,执行以下命令:
$ cd img$ wget https://labfile.oss.aliyuncs.com/courses/2673/map_black_bg.png
在 index.html 文件中写入如下代码:
<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>热点地图</title> <!-- 引入CSS --> <link rel="stylesheet" href="./index.css" /> </head> <body> <!-- 地图 --> <div class="china-map"></div> </body></html>
为了让我们的城市能够显示在地图上,在这里我选择使用 CSS 相对定位与绝对定位的方式。
在 index.css 文件中写入如下代码:
/* CSS 通配符 * 号,表示所有的元素一开始默认的内外边距为 0 */* { margin: 0; padding: 0;}body { /* 背景色 */ background: #31363a;}.china-map { /* 给地图加上相对定位 */ position: relative; /* 给地图设置宽高 */ width: 747px; height: 617px; /* 设置背景图片,指定为不重复,并且居中 */ background: url("./map_black_bg.png") no-repeat center; /* 将地图设置为离顶部60px,左右居中 */ margin: 60px auto 0;}
执行如下步骤预览效果:
这下我们的地图就显示出来了。
地图成功显示后,我们需要在上面设置地点以及地点的样式。
在 index.html 中加入以下代码:
<div class="china-map"> <!-- 地点区域 --> <div class="region"> <!-- 地点显示的小圆点 --> <div class="dot"></div> <!-- 向外扩散的圆圈 --> <div class="place"></div> <!-- 地名 --> <div class="txt">青海</div> </div></div>
在 index.css 中加入以下代码:
* { margin: 0; padding: 0;}body { background: #31363a;}/* 地图 */.china-map { position: relative; width: 747px; height: 617px; background: url("./map_black_bg.png") no-repeat center; margin: 60px auto 0;}/* 区域地点 */.region { /* 绝对定位 */ position: absolute;}/* 小圆点 */.region .dot { position: absolute; top: 50%; left: 50%; margin: -5px 0 0 -5px; width: 10px; height: 10px; background: #a2a9b4; opacity: 1; border-radius: 50%;}/* 向外扩散的圆圈 */.region .place { position: absolute; top: 50%; left: 50%; margin: -33px 0 0 -33px; width: 66px; height: 66px; border: 2px solid #b7b7b7; border-radius: 50%; /* 透明度 */ opacity: 0.12; /* 阴影 */ box-shadow: 0 0 4px #82878f inset;}/* 地名 */.region .txt { position: absolute; top: -20px; left: 10px; font-size: 14px; color: #ccc; width: 50px;}
预览效果:
如何将这个地点放置在相应位置上呢?这个时候就要使用 left 属性和 top 属性了,通过计算正确的偏移值,将地点放置在合适的位置上。
修改 .region 的样式:
.region { position: absolute; top: 302px; left: 308px;}
预览效果:
青海就已经显示在正确的地方上了。但是我们转念一想,如果我们还有一个城市,比如北京,这个时候是不是该这样:
.region2 { position: absolute; top: 229px; left: 559px;}
不过如此一来,每当创建一个城市,就要新写一个 CSS 类,并且每一个类中都会有同样的代码 position:absolute,如果大篇幅的重复会增加代码的冗余度。所以这个时候,我们可以专门新建一个类来放置每一个城市的偏移值,修改 index.css 文件,增加如下代码:
.region { position: absolute;}/* 青海 */.region-qh { top: 302px; left: 308px;}/* 北京 */.region-bj { top: 229px; left: 559px;}
修改 index.html:
<div class="china-map"> <!-- 青海 --> <div class="region region-qh"> <div class="dot"></div> <div class="place"></div> <div class="txt">青海</div> </div> <!-- 北京 --> <div class="region region-bj"> <div class="dot"></div> <div class="place"></div> <div class="txt">北京</div> </div></div>
预览效果:
同样的道理,如果我们想设置不同地点有不同颜色的显示,我们可以专门新建一个颜色类:
修改 index.html:
<!-- 北京 --><div class="region region-bj blue"> <div class="dot"></div> <div class="place"></div> <div class="txt">北京</div></div>
在 index.css 中加入以下代码:
/* 颜色*/.region.blue .place { width: 120px; height: 120px; margin: -64px 0 0 -64px; border: 1px solid #009fd9; box-shadow: 0 0 12px #009fd9 inset;}.region.blue .dot { background: #0080d9;}
预览效果:
如此一来,如果我们想给一些地点加上样式,只需要为它加上像 .blue 这样的颜色类就好了。现在我们将其他的地点以及样式增加上去。
小编学习的这个《CSS3 实现热点地图动画》课程,目前正在限时免费中,感兴趣的小伙伴赶紧点击了解更多,进行学习吧!
说不定做出来的地图比小编的更好看~
点击了解更多,学习完整课程内容~
文就是用这种手段,以一个简单的表格文件出发,在不知道相关地点经纬度的情况下,通过python调用百度地图API实现热力地图,这其中需要申请密钥、批量经纬度换算、转换成js数据、百度热力地图api相关参数的调整等等。
有需要Python学习资料的小伙伴吗?小编整理【一套Python资料、源码和PDF】,感兴趣者可以关注小编后私信学习资料(是关注后私信哦)反正闲着也是闲着呢,不如学点东西啦
图显示了黄病毒宿主丰富度的地理分布预测结果。A)黄热病病毒(YFV)和寨卡病毒(ZIKV)。B)西尼罗河病毒(WNV)、圣路易斯脑炎病毒(SLEV)和苏图病毒(USUV)。C)蜱传脑炎病毒(TBEV)。D)里约热内卢Bravo病毒(RBV)、Entebbe蝙蝠病毒(ENTV)和达喀尔蝙蝠病毒(DBV)。E)登革热病毒(DENV)。F)日本脑炎病毒(JEV)。
数千年来,人类一直在积极地与各种致病因素作斗争,其中一些会造成严重后果、容易引起大范围传染病的病毒更是令人闻之色变。除人类外,很多野生动物也是病毒的自然宿主,对维持病毒的自然传播有着重要作用。
近日发表在《自然·通讯》杂志上的论文表示,美国加州大学戴维斯分校(University of California, Davis)的科学家们通过收集相关数据,并将其与地球上所有已知的哺乳动物和鸟类进行比较,最后确定了最有可能携带寨卡病毒(Zika)、西尼罗河病毒(West Nile)等各类黄病毒(已知会在全世界引起重大流行病和广泛的疾病和死亡)的野生动物物种。由此得到的“热点”地图显示了世界上黄病毒野生宿主多样性最高的地区。其中还包括一些尚未发现黄病毒,但当地野生动物物种可能带有黄病毒的地区。这些信息为科学家和卫生当局提供了有关疾病检测和监测工作的“路线图”。
“将来如果世界上任何一个地方爆发疫情,我们就能知道除了人类之外,哪些野生动物最有可能被感染。”加州大学戴维斯分校兽医学院(UC Davis One Health Institute)疾病动力学中心的博士后学者普拉纳夫潘迪特(Pranav Pandit)说。
近期,寨卡病毒出现并持续在南美和东南亚传播。该研究预测,这些地区的潜在野生动物宿主有能力维持寨卡病毒在自然界的传播。除此之外,人们也越来越担心,日本脑炎病毒将在欧洲出现和定植。根据以上研究,欧洲是日本脑炎潜在宿主(包括许多欧洲常见的鸟类)非常丰富的地区之一。
在这项研究中,研究人员收集了所有已发表的、有关黄病毒检测呈阳性的野生动物物种的数据。由此,他们确定了该类病毒野生宿主的重要特征,如环境和生理特征。之后,他们利用一个涉及到大约10,400种鸟类和5,400种哺乳动物的机器学习模型确定了最有可能携带黄病毒的物种。结果显示,该模型预测到了数百种以前从未观察到的宿主物种。例如,它预测了173种登革热病毒的宿主物种,其中139种以前没有得到确认。
加州大学戴维斯分校的克里斯汀·克鲁格·约翰逊(Christine Kreuder Johnson)教授是这项研究的共同作者之一。她说,这项模型研究可以帮助研究人员确定哪些灵长类动物可能是潜在的病毒宿主。例如,该模型表明,灵长类动物是寨卡病毒和黄热病病毒的主要宿主,但由于迄今为止科学家们对这两种病毒的监测活动有限,在预测为宿主的21种灵长类动物中,只有9种曾被发现携带有这两种病毒。
加州大学戴维斯分校健康研究所的科学家们已经为灵长类动物建立了非侵入性的取样技术,比如从灵长类动物咀嚼的树枝和植物上或者从涂有草莓酱的绳子上收集唾液。但是黄病毒很难检测,尤其是在野生动物身上。
“我们需要这种建模技术来帮助我们了解这些病毒在其自然栖息地的最可能宿主。”疾病动力学中心主任Johnson说。这对全球健康和野生动物保护都很重要。许多灵长类动物已经濒临灭绝,这些疾病给本就已经非常紧张的种群带来了负担。
编译:Max 审稿:alone 责编:张梦
期刊来源:《自然·通讯》
原文链接:https://medicalxpress.com/news/2019-01-world-zika-west-nile-dengue.html
中文内容仅供参考,一切内容以英文原版为准。
*请认真填写需求信息,我们会在24小时内与您取得联系。