續(xù)上一章
- 2.6 監(jiān)控區(qū)域布局
- 2.6.1 布局結(jié)構(gòu)解析:
- 2.6.2 樣式描述:
- 2.6.3 HTML結(jié)構(gòu)及CSS樣式代碼
- 2.6.3 ### 監(jiān)控區(qū)域-效果
- 2.6.7 點(diǎn)位區(qū)域(point)
2.6 監(jiān)控區(qū)域布局
監(jiān)控區(qū)域 monitor盒子高度: 480px,布局劃分及內(nèi)部盒子類名如下:
2.6.1 布局結(jié)構(gòu)解析:
- .tab樣切換:tabs 標(biāo)簽選項(xiàng),加上active激活選項(xiàng),默認(rèn)激活第一個(gè)選項(xiàng);
- .顯示內(nèi)容:content 切換內(nèi)容,添加style="display: block;"顯示內(nèi)容 默認(rèn)激活第一個(gè)內(nèi)容
2.6.2 樣式描述:
- .inner 容器內(nèi)間距 24px 0
- .tabs 容器內(nèi)間距 0 36px
- a 容器 顏色: #1950c4 內(nèi)間距:0 27px 字體:18px
- 第一個(gè)a容器 去除左側(cè)內(nèi)間距 加上右側(cè)2px寬度邊框#00f2f1
- 激活的時(shí)候 顏色白色
- .content容器
- .head 容器
- 行高 1.05 背景 rgba(255, 255, 255, 0.1) 內(nèi)間距 12px 36px 顏色 #68d8fe 字體大小 14px
- row 容器
- 行高 1.05 內(nèi)間距 12px 36px 顏色 #68d8ff 字體大小 12px
- .icon-dot 字體圖標(biāo) 絕對定位 左邊0.2rem 透明度0
- 鼠標(biāo)經(jīng)過后:背景 rgba(255, 255, 255, 0.1) 透明度1
- col容器
- 寬度:1rem 2.5rem 1rem
- 第二個(gè)col 一行不換行 溢出 省略
2.6.3 HTML結(jié)構(gòu)及CSS樣式代碼
HTML
<!--監(jiān)控--><div class=
"monitor panel"><div class=
"inner"><div class=
"tabs"><a href=
"javascript:;" class=
"active">故障設(shè)備監(jiān)控</a><a href=
"javascript:;" >異常設(shè)備監(jiān)控</a></div><div class=
"content"><div class=
"head"><span class=
"col">故障時(shí)間</span><span class=
"col">設(shè)備地址</span><span class=
"col">異常代碼</span></div><div class=
"marquee-view"><div class=
"marquee"><div class=
"row"><span class=
"col">20180701</span><span class=
"col">11北京市昌平西路金燕龍寫字樓</span><span class=
"col">1000001</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190601</span><span class=
"col">北京市昌平區(qū)城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190704</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000003</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20180701</span><span class=
"col">北京市昌平區(qū)建路金燕龍寫字樓</span><span class=
"col">1000004</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190701</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000005</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190701</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000006</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190701</span><span class=
"col">北京市昌平區(qū)建西路金燕龍寫字樓</span><span class=
"col">1000007</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190701</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000008</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190701</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000009</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190710</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000010</span><span class=
"icon-dot"></span></div></div></div></div><div class=
"content"><div class=
"head"><span class=
"col">異常時(shí)間</span><span class=
"col">設(shè)備地址</span><span class=
"col">異常代碼</span></div><div class=
"marquee-view"><div class=
"marquee"><div class=
"row"><span class=
"col">20190701</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000001</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190701</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190703</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190704</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190705</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190706</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190707</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190708</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190709</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div><div class=
"row"><span class=
"col">20190710</span><span class=
"col">北京市昌平區(qū)建材城西路金燕龍寫字樓</span><span class=
"col">1000002</span><span class=
"icon-dot"></span></div></div></div></div></div></div>
CSS樣式代碼
.monitor{height: 6rem
;
}
.monitor .inner{padding: .3rem 0
;display: flex
;flex-direction: column
;
}
.monitor .tabs{padding: 0 .45rem
;margin-bottom: 0.225rem
;display: flex
;
}
.monitor .tabs a{color:#1950c4
;font-size: 0.225rem
;padding: 0 .3375rem
;
}
.monitor .tabs a:first-child{padding-left: 0
;border-right: 0.025rem solid #00f2f1
;
}
.monitor .tabs a.active{color: #fff
;
}
.monitor .content{flex: 1
;position: relative
;display: none
;
}
.monitor .head{display: flex
;justify-content: space-between
;line-height: 1.05
;background-color: rgba(255, 255, 255, 0.1
);padding: 0.15rem 0.45rem
;color: #68d8fe
;font-size: 0.175rem
;
}
.monitor .marquee-view {position: absolute
;top: 0.5rem
;bottom: 0
;width: 100%
;overflow: hidden
;
}
.monitor .row{display: flex
;justify-content: space-between
;line-height: 1.05
;font-size: 0.15rem
;color: #61a8ff
;padding: 0.15rem 0.45rem
;
}
.monitor .row .icon-dot{position: absolute
;left: 0.2rem
;opacity: 0
;
}
.monitor .row:hover {background-color: rgba(255, 255, 255, 0.1
);color: #68d8fe
;
}
.monitor .row:hover .icon-dot{opacity: 1
;
}
.monitor .col:first-child{width: 1rem
;
}
.monitor .col:nth-child(2){width: 2.5rem
;white-space: nowrap
;text-overflow: ellipsis
;overflow: hidden
;
}
.monitor .col:nth-child(3){width: 1rem
;
}
由于在CSS中,將兩個(gè)content盒子設(shè)置為了display:none(隱藏),因此,這里在HTML結(jié)構(gòu)里寫css行內(nèi)式,將第一個(gè)盒子打開(display:block)。
通過以上代碼,此時(shí)監(jiān)控區(qū)布局已實(shí)現(xiàn)的頁面效果如下圖:
接下來,就需要用到JavaScript,來實(shí)現(xiàn)切換效果。
2.6.3 ### 監(jiān)控區(qū)域-效果
新建一個(gè)JavaScript 文件:index.js,并引入HTML文件。
<head><!--。。。省略 --><script src=
"js/jquery.min.js"></script><script src=
"js/index.js"></script>
</head>
注意:引入自己的js 文件,必須在jQuery下面。也可寫在結(jié)構(gòu)中body的最底端,這樣還可省去寫js的入口函數(shù)。
2.6.3.1 立即執(zhí)行函數(shù):
為了防止變量名沖突(變量污染), 我們采用立即執(zhí)行函數(shù)策略。
注釋:在JavaScript 文件中,會(huì)有大量的變量命名;特別Echarts的使用,需要大量初始化Echarts對象。
語法格式:(function(){})();
語法示例如下:
(function(){var num
= 10;
})();
(function(){var num
= 10;
})();
如上,這兩個(gè)函數(shù)內(nèi)部雖然變量名相同(都是num),但互相不會(huì)沖突(每個(gè)函數(shù)中的變量都是局部變量)。
注意: 多個(gè)立即執(zhí)行函數(shù)之間,必須加分號(hào)隔開。
因此,在本項(xiàng)目中采用以下方法:
在每個(gè)模塊中都專門新建一個(gè)立即執(zhí)行函數(shù),可以重名,但是相互之間不會(huì)有影響。
2.6.3.2 切換功能:
- 綁定 、標(biāo)簽頁點(diǎn)擊、事件;
- 當(dāng)前容器加active,其他容器移除active;
- index對應(yīng)的內(nèi)容容器顯示,其他容器隱藏。
切換功能 JavaScript 代碼:
$(".monitor .tabs").on("click", "a", function() { $(this).addClass("active").siblings("a").removeClass("active");$(".monitor .content").eq($(this).index()).show().siblings(".content").hide();});
2.6.3.3 動(dòng)畫功能(滾動(dòng)效果):
- 原理及實(shí)現(xiàn)思路:
- 先克隆列表(marquee里面所有的行row);
- marquee-view 占滿剩余高度,溢出隱藏;
- 絕對定位,top 1.6rem bottom 0 ;
- 寬度100%,溢出隱藏;
- 使用animation實(shí)現(xiàn)動(dòng)畫(CSS3動(dòng)畫滾動(dòng)marquee);
- 使用 translateY 向上位移 50%;
- 動(dòng)畫時(shí)間15s,勻速播放,循環(huán)執(zhí)行。
- 鼠標(biāo)經(jīng)過marquee 就停止動(dòng)畫(animation-play-state: paused; )
首先,利用CSS3 編寫CSS代碼:
.marquee-view .marquee {animation: move 15s linear infinite
;
}
@keyframes move {0% {}100% {transform: translateY(-50%
);}
}
.marquee-view .marquee:hover {animation-play-state: paused
;
}
然后,再書寫JavaScript代碼實(shí)現(xiàn)動(dòng)畫功能:
$(".marquee-view .marquee").each(function() {var rows
= $(this).children().clone();$(this).append(rows
);});
至此,實(shí)現(xiàn)的項(xiàng)目效果如下:
2.6.7 點(diǎn)位區(qū)域(point)
原理及實(shí)現(xiàn)方法:
- 在官網(wǎng)找到類似的圖表引入到頁面中;
- 根據(jù)需求修改具體的配置
1、HTML結(jié)構(gòu):
<!-- 點(diǎn)位
--><div
class="point panel"><div
class="inner"><h3
>點(diǎn)位分布統(tǒng)計(jì)
</h3
><div
class="chart"><div
class="pie"></div
><div
class="data"><div
class="item"><h4
>320,11</h4
><span
><i
class="icon-dot" style
="color: #ed3f35"></i
>點(diǎn)位總數(shù)
</span
></div
><div
class="item"><h4
>418</h4
><span
><i
class="icon-dot" style
="color: #eacf19"></i
>本月新增
</span
></div
></div
></div
></div
></div
>
2、CSS代碼:
point盒子高度為340px
.point {height: 4.25rem
;
}
.point .chart {display: flex
;margin-top: 0.3rem
;justify-content: space-between
;
}
.point .pie {width: 3.9rem
;height: 3rem
;margin-left: -0.125rem
;background-color: pink
;
}
.point .data {display: flex
;flex-direction: column
;justify-content: space-between
;width: 2.1rem
;padding: .45rem .375rem
;box-sizing: border-box
;background-image: url(../images/rect.png);background-size: cover
;
}
.point h4 {margin-bottom: 0.15rem
;font-size: .35rem
;color: #fff
;
}
.point span {display: block
;color: #4c9bfd
;font-size: .2rem
;
}
為所有panel盒子添加文字樣式:
.panel h3 {font-size: .25rem
;color: #FFF
;font-weight: 400
;
}
點(diǎn)位模塊至此實(shí)現(xiàn)效果如圖:
3、引入echarts圖表(南丁格爾玫瑰圖)
echarts圖表官方實(shí)例:https://echarts.apache.org/examples/zh/index.html
找到實(shí)例圖表后,根據(jù)需求修改配置項(xiàng)。
roseType:參數(shù)說明:面積模式 ‘a(chǎn)rea’ 和半徑模式radius。
引入時(shí)遵循以下步驟:
建立即執(zhí)行函數(shù),實(shí)例化對象myChart;修改配置項(xiàng)和數(shù)據(jù)給實(shí)例化對象;將配置項(xiàng)和數(shù)據(jù)指定給實(shí)例對象。
代碼如下:
(function() {myChart
= echarts
.init(document
.querySelector(".pie"));var option
= {color
: ['#006cff', '#60cda0', '#ed8884', '#ff9f7f', '#0096ff', '#9fe6b8', '#32c5e9', '#1d9dff'],tooltip
: {trigger
: 'item',formatter
: '{a} <br/>{b} : {c} (ozvdkddzhkzd%)'},series
: [{name
: '點(diǎn)位統(tǒng)計(jì)',type
: 'pie',radius
: ["10%", "70%"], center
: ['50%', '50%'],roseType
: 'radius',data
: [{ value
: 20, name
: '云南' },{ value
: 26, name
: '北京' },{ value
: 24, name
: '山東' },{ value
: 25, name
: '河北' },{ value
: 20, name
: '江蘇' },{ value
: 25, name
: '浙江' },{ value
: 30, name
: '四川' },{ value
: 42, name
: '湖北' }],label
: {fontSize
: 10},labelline
: {length
: 6,length
: 8}}]};myChart
.setOption(option
)
})()
實(shí)現(xiàn)效果如下:
注意: 餅形圖的文字樣式(label)和引導(dǎo)線樣式(labelline)都是在series 里面設(shè)置
最后,在上面的立即函數(shù)中,myChart的下面添加監(jiān)聽瀏覽器縮放事件,實(shí)現(xiàn)圖表隨瀏覽器適時(shí)等比例縮放。
window
.addEventListener("resize", function() { myChart
.resize();});
上一章:學(xué)習(xí)筆記之?dāng)?shù)據(jù)可視化(二)—— 頁面布局(上)
下一章: 學(xué)習(xí)筆記之?dāng)?shù)據(jù)可視化(二)—— 頁面布局(下)
總結(jié)
以上是生活随笔為你收集整理的学习笔记之数据可视化(二)——页面布局(中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。