HTML页面关键词随机分布布局
结合underscore-min.js,和D3.js 绘制HTML关键词随机分布
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="./js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="./js/underscore.js"></script>
<script type="text/javascript" src="http://t.datastory.com.cn/resources/js/lib/d3.v3.min.js?version=0.2.22"></script>
<script type="text/javascript" src="http://t.datastory.com.cn/resources/js/lib/d3.layout.cloud.js?version=0.2.22"></script>
</head>
<body>
<div id="keywordDist" style="width:400px;height:280px;"></div>
</body>
</html>
<script>
//关键词分布
frepkeywordstat(); function frepkeywordstat(){
if (!$.support.leadingWhitespace) {
$("#keywordDist").html("请使用Chrome浏览器以获得最佳浏览体验");
return;
}
var lvalues = [];
var keyword = "泽泽$1|文晖$2"; if(keyword && keyword.length){
var ls = keyword.split("|");
if(ls==null||ls.length<=0){
$("#keywordDist").html('<div style="margin-top: 140px;margin-left: 180px;">暂无数据...</div>');
return;
}
$.each(ls, function(key, value){
var items = value.split("$"); if(items==null||items.length<2){
return true;
}
var p = {};
if(items.length == 2){
p.text = items[0];
p.size = items[1];
lvalues.push(p);
}else if(items.length == 3){
p.text = items[0];
p.size = items[2];
lvalues.push(p);
}
if(lvalues.length >= 25){
return false;
}
}); if(!lvalues.length){
$("#keywordDist").html('<div style="margin-top: 140px;margin-left: 180px;">暂无数据...</div>');
return;
}
}else{
$("#keywordDist").html('<div style="margin-top: 140px;margin-left: 180px;">暂无数据...</div>');
return;
}
lvalues = _.sortBy(lvalues, function(o1){return parseInt(o1.size)});
var scale = d3.scale.linear()
.domain([parseInt(lvalues[0].size), parseInt(lvalues[lvalues.length-1].size)])
.range([20,45]);
$("#keywordDist").html("");
d3.layout.cloud().size([420, 280])
.words(lvalues)
.rotate(function() { return Math.ceil(Math.random()*40)-20; })
.font("Impact")
.fontSize(function(d) { return scale(parseInt(d.size))})
.on("end", draw)
.start();
} function draw(words) {
var fill = d3.scale.category20();
d3.select("#keywordDist").append("svg")
.attr("width", 420)
.attr("height", 280)
.append("g")
.attr("transform", "translate(200, 160)")
.selectAll("text")
.data(words)
.enter().append("text")
.style("font-size", function(d) { return d.size + "px"; })
.style("font-family", "Impact")
.style("fill", function(d, i) { return fill(i); })
.attr("text-anchor", "middle")
.attr("transform", function(d) {
return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
})
.text(function(d) { return d.text; })
.style("opacity", 1e-6)
.transition()
.duration(1000)
.style("opacity", 1);
}
</script>
HTML页面关键词随机分布布局的更多相关文章
- 分布式存储数据库的Key的随机分布(RP)和顺序分布(OPP)
在分布式存储数据库的世界中,无论是基于Key/Value的数据库还是Column Base(比如HBase)的数据库,都有一个重要的因子------Key,或者叫RowKey.我们总是根据Key来快速 ...
- 移动端页面开发适配 rem布局原理
主题 HTML移动端页面开发适配 rem布局原理 什么是适配,为什么要适配 我们拿到的设计图一般是以640,750,1080分辨率为基准设计的,而现在的手机终端各式各样,分辨率不同,逻辑像素不同 ,适 ...
- 如是使用JS实现页面内容随机显示
之前有个客户咨询我,因为他们公司的业务员有多个人,但公司网站的联系方式板块里只够放一个人的信息,所以就想能不能实现这个联系方式信息随机显示,对于业务或客服人员来说也能做到分配均匀公平.本文我们将和大家 ...
- 手机端页面自适应解决方案—rem布局进阶版
手机端页面自适应解决方案—rem布局进阶版 https://www.jianshu.com/p/985d26b40199 注:本文转载之处:https://www.cnblogs.com/anni ...
- jQuery实现页面关键词高亮
示例代码,关键位置做了注释,请查看代码: <html> <head> <title>jQuery实现页面关键词高亮</title> <style ...
- djb2:一个产生简单的随机分布的哈希函数
目录 LCG算法 示例代码 djb2 示例代码 为什么选择参数33和 33 was chosen because: 5381 was chosen because 哈希选择参考 LCG算法 djb2与 ...
- 手机端页面自适应解决方案—rem布局(进阶版,附源码示例)
转自:https://segmentfault.com/a/1190000007350680 一年前笔者写了一篇 <手机端页面自适应解决方案—rem布局>,意外受到很多朋友的关注和喜欢.但 ...
- ECSHOP热门搜索关键词随机显示
实现ECSHOP热门搜索关键词随机显示,需要修改ECSHOP模板和ECShOP程序,按照步骤修改即可. 一.打开 include/lib_main.php 文件,找到下面这段代码,删除之(大概在165 ...
- eclipse重置页面恢复到最初布局状态
eclipse重置页面恢复到最初布局状态 window->perspective->reset perspective
随机推荐
- Maven概览
Maven的核心思想,约定由于配置 1 Maven坐标 1.1 本项目的坐标 groupId: 必须.项目组名称,定义当前Maven项目所隶属的实际项目,通常与域名反向一一对应,与Java包名表示方式 ...
- iOS7以上图片模糊效果
模糊后的效果 模糊后的效果 框架UIImage+BlurredFrame里的 applyLightEffectAtFrame方法 例如 bgImage = [bgImage applyLightEff ...
- setTimeout 导致的浏览器假死
问题 前几天,同事遇到一个浏览器假死的问题.就是浏览器在响应一个请求的时候,就突然不响应时间,进入假死状态,Cup也飙升到100%. 但是这个问题只出现在IE浏览器,chrome和Firefox等 ...
- HTML5 LocalStorage 本地存储,刷新值还在
H5的两种存储技术的最大区别就是生命周期. 1. localStorage是本地存储,存储期限不限: 2. sessionStorage会话存储,页面关闭数据就会丢失. 使用方法: localStor ...
- 使用BeanNameAutoProxyCreator实现spring的自动代理
提到代理,我们可以使用ProxyBeanFactory,并配置proxyInterfaces,target和interceptorNames实现,但如果需要代理的bean很多,无疑会对spring配置 ...
- eclipse将引用了第三方jar包的java项目打成jar包
今天用java开发了一个项目,想要打成jar包,并在linux环境下运行.但是运行时引用的第三方jar包却显示classNotFind错误. 于是查了一下解决办法,在此贴出来,方便以后查阅. 用Ecl ...
- yaf扩展
- C#集合u
List<T> 列表(动态数组),相当于C++的 vector Queue<T> 队列,先进先出 Stack<T> 栈,先进后出 LinkedList<T&g ...
- [译]Create a Web API in MVC 6
原文: http://www.asp.net/vnext/overview/aspnet-vnext/create-a-web-api-with-mvc-6 ASP.NET 5.0的一个目标是合并MV ...
- Codeforces Round #270 1003
Codeforces Round #270 1003 C. Design Tutorial: Make It Nondeterministic time limit per test 2 second ...