刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画

摘要:
市面上大多数热图都是用JavaScript制作的,但用CSS3制作的热图真的很少见。事实上,CSS3也非常强大,它可以帮助我们实现JavaScript实现的许多效果。最近,小编刚刚学习了HTML5和简单的CSS3。在这里,他使用CSS3实现了热点地图动画。效果如下:让我们讨论如何使用CSS3创建热点地图。您可以学习HTML布局、HTML列表、CSS选择器、CSS3动画、CSS3 2D转换等。CSS也非常有用。

市面上大多数的热点地图,都是以 JavaScript 来做的,但是使用 CSS3 制作的热点地图倒还真的挺少见的。

其实 CSS3 的功能也很强大,能帮助我们实现很多用 JavaScript 实现的效果,最近小编刚学会 HTML5 和 简单的 CSS3,在这里用 CSS3 实现了热点地图动画,效果如下:

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第1张

下面给大家初步讲讲,如何用 CSS3 制作一个热点地图,你可以学到 HTML 的布局、HTML 列表、CSS 选择器、CSS3 动画、CSS3 的 2D 转换等,对于练习 HTML、CSS 也有很好的帮助。

知识点
  • HTML 列表
  • CSS 相对定位与绝对定位
  • CSS3 动画
  • CSS3 transform 属性
  • CSS3 animation-delay () 属性

相关代码下载命令:
点击文末链接,获取完整代码。

HTML 基础结构

首先我们来创建如下目录结构:

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第2张

在 img 目录下获取地图图片,打开终端,执行以下命令:

$ cd img$ wget https://labfile.oss.aliyuncs.com/courses/2673/map_black_bg.png

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第3张

在 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="http://t.zoukankan.com/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;
/* 给地图设置宽高 */
 747px;
height: 617px;
/* 设置背景图片,指定为不重复,并且居中 */
background: url("./map_black_bg.png") no-repeat center;
/* 将地图设置为离顶部60px,左右居中 */
margin: 60px auto 0;
}

执行如下步骤预览效果:

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第4张

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第5张

这下我们的地图就显示出来了。

地点样式设置

地图成功显示后,我们需要在上面设置地点以及地点的样式。

在 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;
     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;
     10px;
    height: 10px;
    background: #a2a9b4;
    opacity: 1;
    border-radius: 50%;
}
/* 向外扩散的圆圈 */
.region .place {
    position: absolute;
    top: 50%;
    left: 50%;
    margin: -33px 0 0 -33px;
     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;
     50px;
}

预览效果:

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第6张

如何将这个地点放置在相应位置上呢?这个时候就要使用 left 属性和 top 属性了,通过计算正确的偏移值,将地点放置在合适的位置上。

修改 .region 的样式:

.region {
    position: absolute;
    top: 302px;
    left: 308px;
}

预览效果:

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第7张

青海就已经显示在正确的地方上了。但是我们转念一想,如果我们还有一个城市,比如北京,这个时候是不是该这样:

.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>

预览效果:

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第8张

同样的道理,如果我们想设置不同地点有不同颜色的显示,我们可以专门新建一个颜色类:

修改 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 {
     120px;
    height: 120px;
    margin: -64px 0 0 -64px;
    border: 1px solid #009fd9;
    box-shadow: 0 0 12px #009fd9 inset;
}
.region.blue .dot {
    background: #0080d9;
}

预览效果:

刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画第9张

如此一来,如果我们想给一些地点加上样式,只需要为它加上像 .blue 这样的颜色类就好了。现在我们将其他的地点以及样式增加上去。

小编学习的这个《CSS3 实现热点地图动画》课程,目前正在限时免费中,感兴趣的小伙伴赶紧点击了解更多,进行学习吧!

说不定做出来的地图比小编的更好看~

免责声明:文章转载自《刚学会 HTML5 不久,最近用 CSS3 实现了热点地图动画》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nginx的基础配置管理Z10PA-D8 RAID问题以及解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

css控制继承

inherit:继承父类。 initial:继承浏览器。 unset:重置为自然值,继承父类或者浏览器。 revert:恢复原来的值。 详解: CSS为处理继承提供了四种特殊的通用属性值: inherit: 该值将应用到选定元素的属性值设置为与其父元素一样。 initial :该值将应用到选定元素的属性值设置为与浏览器默认样式表中该元素设置的值一样。...

echarts——各个配置项详细说明总结

来自博客:https://www.cnblogs.com/1996zy/p/8963385.html   以上就是echarts的几个原型图,但是在实际开发当中,我们需要的图表与echarts本身给出的实例是不同的,需要我们自己进行修改,所以我归纳整理了一下,希望可以跟大家分享学习~ 1、图表标题 1 title: { 2 x...

CSS进度条

#graphbox{ border:1px solid #e7e7e7; padding:10px; 250px; background-color:#f8f8f8; margin:5px 0; } #graphbox h2{ color:#666666; font-family:Arial; font-size:18px; font-weight:700...

HTML + CSS CSS设置背景图片后图片没有铺满屏幕等

在学习了一个星期的 HTML + CSS之后,发现还有一些东西需要去记忆,俗话说的好: 眼过千遍不如手过一遍,这就把需要记忆的东西记下来。 很多时候我们遇到的情况是: 设置背景图片background-image:url(xxx.jpg); 如果背景图片不平铺就达不到全屏的效果,如果平铺了之后效果就有些差强人意,这时候CSS这个属性就派上用场了...

div向右偏移设置 css让div靠右移一定距离

转自:https://www.thinkcss.com/shili/1372.shtml div对象盒子向右偏移设置,使用css让div靠右一定距离-div向右移教程实例篇 div向右偏移一定距离,可采用margin外边距实现、也可以使用padding来实现,这就要看不同情况下如何灵活选择了。这里thinkcss为大家介绍各种css布局div向右移方法。...

【CSS3】border属性

border常见属性 值 描述 border-width 规定边框的宽度 border-style 规定边框的样式 border-color 规定边框的颜色 border-image 规定边框的图像 border-radius 规定边框的圆角 box-shadow 规定边框的阴影 1.border-width:规定边框宽...