使用jQuery获取Dribbble的内容
Introduction
As a web developer, third party API integration is something you will have to face. Especially with the current trend, we have facebook, twitter, flickr etc. Today, we are going to look at dribbble’s API. Dribbble is a place to show off your design, it’s based on invitation basis, therefore, most designs are of high quality.

HTML
Initially, you just have to create a div with a class called drib-list and specify an id also if you intended to use it multiple times.
<div class="drib-list clearfix" id="popular">
<h1>Popular</h1>
</div>
Once all the dribbble items are loaded, data is grabbed from the API and then being parsed into a predefined HTML structure. This HTML structure is created to accommodate the sliding up and down simple animation as well.
<div class="drib-item">
<div class="drib-image">
<a href="{url}"><img src="{image}" alt="{title}" /></a>
</div>
<div class="drib-detail">
<div class="drib-detail-wrapper">
<a href="#">{title}</a>
<ul>
<li class="views">{views}</li>
<li class="likes">{likes}</li>
<li class="comments">{comments}</li>
</ul>
</div>
</div>
</div>
CSS
The following is the CSS we use for this dribbble plugin. We used plenty of CSS3 to make it looks good.
body {
font-family:arial;
font-size:75%;
margin:0 0 170px 0;
padding:0;
background: #2F2F2F;
color: #C6C6C6;
}
hr {
-moz-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-webkit-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
-o-box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
box-shadow: rgba(255, 255, 255, 0.07) 0 1px 0;
border-bottom: 1px solid #121212;
border-top: none;
margin: 18px 0;
display:block;
}
h1 {
font: 30px Tahoma, Helvetica, Arial, Sans-Serif;
text-align: left;
color: #555;
text-shadow: 0px 2px 5px #111;
margin: 20px 0 10px 0;
}
.drib-list {
width: 1080px;
margin:15px auto 0 auto;
padding-left:10px;
}
.drib-item {
width:200px;
height:150px;
border:5px solid #ccc;
position:relative;
overflow:hidden;
border: 1px solid rgba(0, 0, 0, 0.05);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
box-shadow: rgba(255, 255, 255, 0.1) 0 1px 0, rgba(0, 0, 0, 0.8) 0 1px 7px 0px inset;
background: #202020;
background-color: rgba(0, 0, 0, 0.3);
margin-bottom:10px;
float:left;
margin-right:10px;
}
.drib-image,
.drib-detail {
width:100%;
position:absolute;
left:0;
}
.drib-image {
top:0;
z-index:10;
}
.drib-image img {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
border:0;
}
.drib-detail {
z-index:0;
height:50%;
bottom:0;
background:#333;
-webkit-box-shadow: inset 0 0 10px 5px rgba(0, 0, 0, 0.5);
-moz-box-shadow: inset 0 0 10px 5px rgba(0, 0, 0, 0.5);
box-shadow: inset 0 0 10px 5px rgba(0, 0, 0, 0.5);
}
.drib-detail-wrapper {
margin:14px 10px 0 10px;
}
.drib-detail a {
color:#eee;
font-weight:bold;
display:block;
text-decoration:none;
font-size:110%;
}
.drib-detail a:hover {
color:#ffffff
}
.drib-detail ul {
margin:2px 0 0 0 ;
padding:0;
list-style:none;
}
.drib-detail li {
float:left;
margin-right:5px;
background:url('sprite.png') no-repeat 0 0;
padding-left:24px;
height:20px;
line-height:22px
}
.drib-detail li.comments {
background-position: 0 0;
}
.drib-detail li.views {
background-position: 0 -39px;
}
.drib-detail li.likes {
background-position: 0 -79px;
}
/* new clearfix */
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
* html .clearfix { zoom: 1; } /* IE6 */
*:first-child+html .clearfix { zoom: 1; } /* IE7 */
Javascript
If you read my preview tutorial about twitter API, you should able to understand this section easily as well. Dribbble API documentation is pretty neat and straight forward, it’s still in Beta stage at the moment, but it’s pretty stable and easy to use.
In this tutorial, we will be using:
- http://api.dribbble.com/shots/{list}: Return debuts, everyone, popular shots.
- http://api.dribbble.com/players/{id}/shots: Return a player’s recent shots.
However, we will not retrieve it directly from Javascript, we call it using PHP to solve AJAX cross domain issue. I wrote a simple PHP proxy to retrieve the JSON data from dribbble. It’s not the best PHP script (it’s very rough!), but it will do the job just fine. You can enhance the PHP from here such as adding cache control to reduce number of call to dribbble, and perhaps, make it a little bit more secure.
<?php $player = $_GET['player'];
$type = $_GET['type']; $list = array('popular', 'debuts', 'everyone'); if ($player) { if (in_array(strtolower($player), $list)) {
$data = file_get_contents('http://api.dribbble.com/shots/' . $player);
} else {
$data = file_get_contents('http://api.dribbble.com/players/' . $player . '/shots');
} header('Content-type: application/json');
echo $data;
exit; } echo 0; ?>
Alright, back to Javascript. This is a Javascript plugin, and it’s possible to run multiple instances of this dribbble script. I have added inline comment to describe some of the codes.
(function($){
//Attach this new method to jQuery
$.fn.extend({
dribbble: function(options) {
var defaults = {
player: '', //username, debuts, popular or everyone
total: 3 // 1 - 15, return result, by default dribbble return 15
}
var options = $.extend(defaults, options);
var o = options;
//Iterate over the current set of matched elements
return this.each(function() {
// this is the HTML structure for every single shots, and then will be appended to the HTML.
// you can view this structure better in HTML section of this tutorial.
var struct = '<div class="drib-item"><div class="drib-image"><a href="{url}"><img src="{image}" alt="{title}" /></a></div><div class="drib-detail"><div class="drib-detail-wrapper"><a href="#">{title}</a><ul><li class="views">{views}</li><li class="likes">{likes}</li><li class="comments">{comments}</li></ul></div></div></div>',
html = '',
holder = $(this);
// make a AJAX call to the PHP script we wrote.
$.ajax({
type: "get",
url: "dribbble-call.php",
data: "player=" + o.player,
success: function(data){
// do another test to make sure there is data returned from the service
try {
if (data.shots.length > 0) {
var shots = data.shots;
// loop through the data and apply the HTML code with the data
for (var i=0; i< shots.length; i++) {
if (i < o.total) {
html += struct.replace(/{title}/g, shots[i].title)
.replace(/{image}/g, shots[i].image_teaser_url)
.replace(/{url}/g, shots[i].url)
.replace(/{views}/g, shots[i].views_count)
.replace(/{likes}/g, shots[i].likes_count)
.replace(/{comments}/g, shots[i].comments_count);
}
}
holder.append(html);
} else alert('No data returned from dibbble!');
} catch (e) {
alert(e);
}
}
});
// this is the hover effect
$('.drib-item').live({
mouseenter: function() {
$(this).find('.drib-image').stop().animate({top: ($(this).height() / 2 * -1)}, 300);
},
mouseleave: function() {
$(this).find('.drib-image').stop().animate({top: 0}, 300);
}
}
);
});
}
});
})(jQuery);
Usage
The usage of this plugin is pretty simple, make sure you have jQuery framework 1.6 and above, and link the CSS and JS files properly.
JAVASCRIPT
$(function() {
$('#popular').dribbble({
player: 'popular', //username, debuts, popular or everyone
total: 5
});
});
HTML
<div id="popular">
</div>
Conclusion
It’s not hard to pick up third party API. Take Dribbble API as an example, it’s easy to understand and implement. However, you should always aware of API changes, especially this one because it’s still in beta stage, and normally there will be update to the API in the future. Do subscribe to its developer newsletter or any form of communications so you will know what went wrong if this script stopped working.
I hope you gained some knowledge and skill in learning how to manipulate third party API. If you want to learn more, you can visit my previous Twitter API tutorials:
- Create a dead simple Twitter feed with jQuery
- Create a Twitter feed with attached images from media entities
- Create a Twitter feed with hash tah and cache support
Frome http://www.queness.com/post/11929/how-to-grab-dribbble-feed-with-jquery-and-css3
使用jQuery获取Dribbble的内容的更多相关文章
- 【JavaScript与JQuery获取H2的内容】
撰写日期:2016-7-13 11:05:07 JavaScript与JQuery获取DOM内容是有区别的,接下来看一例子 栗子: Jquery-获取H3中的内容然后Dom转换为Jquery < ...
- jquery 获取 json文件内容后,将其内容显示到 下拉列表框中,再将下拉列表中的内容,显示到文本框中
<script type="text/javascript"> $(function(){ $("#huoqv").click(function() ...
- jquery获取页面iframe内容
//取得整个HTML格式 var f = $(window.frames["ReportIFrame"].document).contents().html(); 或者 $(&qu ...
- js和jquery获取属性的区别
一.获取元素: js获取元素: 根据id获取:document.getElementById("id"); 根据类名获取:document.getElementsByClassNa ...
- jquery获取文本框的内容
使用jquery获取文本框的内容有以下几种: 1.根据ID取值(id属性): // javascript <script type="text/javascript"> ...
- jquery获取内容和属性的方法
通过jquery如何捕获文本内容和属性? text(),html(),val()及attr(). attr()更具有普遍性,元素text属性和表单value属性,可以通过attr()操作. <! ...
- jquery 获取表单的内容以JSON对象形式返回
添加一个serializeJson方法 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&quo ...
- JavaScript or jQuery 获取option value值 以及文本内容的方法
1.html <div class="form-group"> <label>保险公司</label> <select class=&qu ...
- js&jquery 获取select下拉框的值、文本内容、自定义属性
js&jquery 获取select下拉框的值.文本内容.自定义属性 CreationTime--2018年7月2日09点22分 Author:Marydon html <selec ...
随机推荐
- 关于类的成员,public,private修饰符
类的成员要:属性,方法 属性:是它本身所居有的东西,比如人的特征,也可以这样理解属性是静态状态 方法:是这些属性通过方法行为发生改变,也就是方法是动态,可以对属性进行更新 public 公共的,可以被 ...
- 3.3 PXC Strict Mode
摘要: 出处:黑洞中的奇点 的博客 http://www.cnblogs.com/kelvin19840813/ 您的支持是对博主最大的鼓励,感谢您的认真阅读.本文版权归作者所有,欢迎转载,但请保留该 ...
- 2016级算法期末模拟练习赛-C.AlvinZH的青春记忆II
1084 AlvinZH的青春记忆II 思路 中等题,二分. 简化题意,一列数字,每秒会自动-1,特殊操作可以使一个数在1s内-k,问这些数都减至0需要多久. 答案肯定在[1,xMax]之间,采用二分 ...
- java内存的分配策略
1.概述 本文是<深入理解java虚拟机>(周志明著)3.6节的笔记整理,文章结构也与书上相同,讲述的是几条最普遍的内存分配策略. 2.对象优先在Eden分配 ** 大多数情况下,对象在新 ...
- 题解 [ZJOI2010]数字计数
传送门<-洛谷版 电梯<-bzoj版 这份代码是新手友好版,也算是自用版,注释自认为写的很详细. 希望对要学数位dp的人有所帮助 这份题解是记忆化搜索版的数位DP,个人还是比较建议用这种方 ...
- 问题 C: 调酒壶里的酸奶 广搜或深搜+记忆化搜索
问题 C: 调酒壶里的酸奶 时间限制: 1 Sec 内存限制: 128 MB提交: 284 解决: 97[提交] [状态] [命题人:外部导入] 题目描述 最近小w学了一手调酒的技巧,这么帅的操作 ...
- js数字格式化为千分位
方法1: 浏览器自带的一个方法 const num=12345.6789 num.toLocaleString();=>"12,345.679" 方法2: 正则匹配 func ...
- eclipse常用快捷键实践积累
1. [Ctrl + D]:删除一整行 2. 给函数添加注释 [选中函数名]-[Alt + Shift + J].如果需要自定义注释内容可通过[项目]-[属性]-[Java代码样式]-[代码模板]-[ ...
- Javascript框架设计思路图
这个系列的随笔都是关于Javascript框架设计一书的读书笔记(作者是司徒正美),不是本人原创!!! 一.简介: 1.市面上主流的JS框架,大多数是由一个个模块组合而成,模块化是大多数让软件所遵循的 ...
- JS中typeof和instanceof的用法和区别
typeof和instanceof的区别 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的 instanceof的用法 instanceof返回的是一个布尔值 ...