基于jQuery的模仿新浪微博时间的组件

首先,说下有些人说这是重复造轮子,但我觉得不是,做项目,总不能老是拿别人的东西来吧,拿来主义并不是神马好玩意,当然如果你想轻松,也没话说,至少说我自己做得,我改起来或者扩展比较方便
效果以及代码如下,,预览效果自己放在html里面把,搞在这个页面上麻烦得很


代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Page</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<style type="text/css">
*{margin:0;padding:0;}
/*日期控件*/
.pc_caldr { background-color: #FFFFFF; border: 1px solid #CCCCCC; color: #000000; height: auto; padding: 5px; position: absolute; width: 161px; z-index: 10; }
.pc_caldr .selector { height: 24px; padding: 2px 0 0; }
.pc_caldr .selector .month, .pc_caldr .selector .year { border: 1px solid #CCCCCC; float: left; font-size: 12px; height: 19px; width: 73px; }
.pc_caldr .selector .year { margin-left: 10px; width: 78px; }
.pc_caldr .weeks, .pc_caldr .days { list-style: none outside none; margin: 0; padding: 0; width: 100% !important; }
.pc_caldr .weeks { background: none repeat scroll 0 0 #B6D1F9; color: #FFFFFF; font-size: 12px; height: 18px; margin-bottom: 2px; }
.pc_caldr .days { font-family: Arial; font-size: 12px; height: auto; }
.pc_caldr .weeks li, .pc_caldr .days li { float: left; height: 18px; line-height: 18px; text-align: center; width: 23px; }
.pc_caldr .weeks li { text-align: center; }
.pc_caldr table { width: 100%; }
.pc_caldr table td{text-align:center;}
.pc_caldr table td.before { color: #43609C; cursor: pointer; }
.pc_caldr table td.day { background-color: #5D94E6; color: #FFFFFF; }
/*文本框*/
.tiemin{width:120px;border:1px solid #f00;}
.inline-block {display :inline-block; zoom:1 ; *display: inline; vertical-align:middle ;}
</style>
</head>
<body>
<div style="height: 200px;">
</div>
<input type="text" class="tiemin" readonly="readonly" />
<div style="height: 200px;">
</div>
<span style="width: 200px;" class="inline-block"></span>
<input type="text" class="tiemin" readonly="readonly" />
<script type="text/javascript">
//全部包裹
var sookerTime = (function ($) {
var OBJ;
function isLeap(year) { return (year % 100 == 0 ? (year % 400 == 0 ? 1 : 0) : (year % 4 == 0 ? 1 : 0)); }
function isValid(d) { return (d.getTime() - (new Date()).getTime() < 0) ? true : false; } //是否在今天以后
function setDate(year, month) { //建立日期table
var n1 = new Date(year, month, 1),
firstday = n1.getDay(),
mdays = new Array(31, 28 + isLeap(year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
rows = Math.ceil((mdays[month] + firstday) / 7),
table = $("<table>", { "class": "days" }),
tbody = $("<tbody>");
$("#calendar").find(".days").remove();
for (var i = 0; i < rows; i++) {
var tr = $("<tr>");
for (j = 0; j < 7; j++) {
var idx = i * 7 + j,
d = idx - firstday + 1;
if (d <= 0 || d > mdays[month]) { //无效日期
d = " "
}
var td = $("<td>", { html: d }).appendTo(tr);
if (isValid(new Date(year, month, d))) { //今天以后的时间都不绑定时间
td.addClass("before");
td.hover(function () {
$(this).addClass("day");
}, function () { $(this).removeClass("day"); }).click(function () {
OBJ.attr("value", $("#calendar .year").attr("value") + "-" + (parseInt($("#calendar .month").attr("value")) + 1) + "-" + $(this).text());
$("#calendar").css("display", "none");
});
}
}
tr.appendTo(tbody);
}
tbody.appendTo(table);
$("#calendar").append(table);
}
function createTime() {
var calendar = $("<div>", { "class": "pc_caldr", id: "calendar" }),
td = new Date(),
of = OBJ.offset();
if (document.getElementById("calendar")) {
calendar = $("#calendar").css({ left: of.left, top: of.top + 18, display: "block" });
setDate(td.getFullYear(), td.getMonth());
$("#calendar .year").attr("value", td.getFullYear());
$("#calendar .month").attr("value", td.getMonth());
} else {
var se = "<div class='selector'><select class='month'><option value='0'>一月</option><option value='1'>二月</option><option value='2'>三月</option><option value='3'>四月</option><option value='4'>五月</option><option value='5'>六月</option><option value='6'>七月</option><option value='7'>八月</option><option value='8'>九月</option><option value='9'>十月</option><option value='10'>十一月</option><option value='11'>十二月</option></select><select class='year'><option value='2009'>2009</option><option value='2010'>2010</option><option value='2011'>2011</option></select></div><ul class='weeks'><li>日</li><li>一</li><li>二</li><li>三</li><li>四</li><li>五</li><li>六</li></ul>";
calendar.css({ left: of.left, top: of.top + 18 }).html(se).appendTo($("body"));
setDate(td.getFullYear(), td.getMonth());
$("#calendar .year").attr("value", td.getFullYear());
$("#calendar .month").attr("value", td.getMonth());
bindClick();
}
}
function bindClick() { //给下拉列表绑定时间
var a = $("#calendar .month"),
b = $("#calendar .year");
a.change(function () {
setDate(b.attr("value"), $(this).attr("value"));
});
b.change(function () {
setDate($(this).attr("value"), a.attr("value"));
});
}
return {
init: function (obj) { //返回调用的接口
OBJ = obj;
createTime();
}
}
})(jQuery);
//使用方法
$(".tiemin").focus(function(){
sookerTime.init($(this));
});
</script>
</body>
</html>

(0)

相关推荐

  • 简单易用的基于jQuery版仿新浪微博向下滚动效果(附DEMO)

    简单易用的jQuery 写的仿新浪微博 向下滚动效果 $(function(){ var scrtime; $("#con").hover(function(){ clearInterval(scrtime); },function(){ scrtime = setInterval(function(){ var $ul = $("#con ul"); var liHeight = $ul.find("li:last").height(); $u

  • Jquery与JS两种方法仿twitter/新浪微博 高度自适应无缝滚动实现代码

    首先是Jquery 无标题文档 $(function(){ var scrtime; $("#con").hover(function(){ clearInterval(scrtime); },function(){ scrtime = setInterval(function(){ var $ul = $("#con ul"); var liHeight = $ul.find("li:last").height(); $ul.animate({

  • jQuery实现仿新浪微博浮动的消息提示框(可智能定位)

    本文实例讲述了jQuery实现仿新浪微博浮动的消息提示框.分享给大家供大家参考.具体如下: 这是一款jQuery实现的仿新浪微博新消息提示框效果,支持智能浮动定位框,新浪微博用来提示消息时候的智能定位框,可以适时关闭窗口,你完全可以将其应用到你网页的其它地方. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-f-sina-weibo-info-dlg-demo/ 具体代码如下: <!DOCTYPE html PUBLIC "-//W3

  • jQuery实现鼠标选文字发新浪微博的方法

    本文实例讲述了jQuery实现鼠标选文字发新浪微博的方法.分享给大家供大家参考,具体如下: 最近注意到新浪博客有个小功能,就是当鼠标选中一段文字时会浮现一个小图片,点击这个图片可以把选中内容发送到新浪微博,一时兴起昨晚就写了一个Demo玩了一下,代码超简单,没优化,有兴趣的朋友可以自己改进. 原理很简单,先获得鼠标选中文字,然后调用新浪博客中提供的页面,把文字作为参数传过去就OK了. 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"

  • 仿新浪微博返回顶部的jquery实现代码

    一.引言 在web页面中,如果页面较高,为了方便用户快速地返回顶部,都会添加一个返回顶部按钮. 其中淘宝网的是要滚动条的滚动距离大于某一段距离才显示返回顶部按钮:人人网的返回顶部直接在底部的工具条上:新浪微博的返回顶部在滚动高度大于0的时候显示,且返回顶部的效果是平滑动画效果.本文的实现就是类似于新浪微博的这种效果. 二.jQuery下的返回顶部功能 您可以狠狠地点击这里:jQuery下的返回顶部demo 可以看到,如果页面有滚动高度,右下角就会有一个含有"返回顶部"字样的黑色背景半透

  • jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)

    本文实例讲述了jquery实现仿新浪微博带动画效果弹出层代码.分享给大家供大家参考.具体如下: 这是一款jquery实现带动画的弹出层,最开始是模拟新浪微博中的弹出层,后来引入了jQuery,又想了想,加入点动画效果不知怎么样,后来就写出了这么一个弹出的网页层效果,你点击按钮后就可以看到一个渐出的可关闭的弹出层,点击关闭后,当然也是渐渐的消失的,移动时根据鼠标位置计算控件左上角的绝对位置,松开鼠标后停止移动并恢复成不透明. 运行效果截图如下: 在线演示地址如下: http://demo.jb51

  • jQuery实现鼠标单击网页文字后在文本框显示的方法

    本文实例讲述了jQuery实现鼠标单击网页文字后在文本框显示的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&qu

  • jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码

    复制代码 代码如下: <input value="请输入用户名" type="text"> <input value="请输入密码" type="text"> <input value="提交" type="submit"> <script> $(function(){ //输入框中文字颜色控制 $("input:not(:las

  • jQuery模拟新浪微博首页滚动效果的方法

    本文实例讲述了jQuery模拟新浪微博首页滚动效果的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xh

  • 基于JQuery的类似新浪微博展示信息效果的代码

    复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled

  • jquery实现仿新浪微博评论滚动效果

    本文实例讲述了jquery实现仿新浪微博评论滚动效果.分享给大家供大家参考.具体如下: 这里使用jquery实现评论滚动效果,仿新浪微博大厅文字滚动效果,以前有不少人膜拜的效果,现在被模仿的到处都是啦,呵呵,今天这个仍是模仿的,评论和头像一起向下滚动,最新的一条带渐变淡入淡出,无缝循环向下滚动,觉得不错的就顶下. 点击此处预览效果: http://demo.jb51.net/js/2015/jquery-sina-scroll-pl-codes/ 运行效果如下图所示: 具体代码如下: <!DOC

  • jQuery实现鼠标经过时出现隐藏层文字链接的方法

    本文实例讲述了jQuery实现鼠标经过时出现隐藏层文字链接的方法.分享给大家供大家参考.具体如下: 这里演示Jquery显示隐藏层的方法,鼠标经过时出现文字链接,模拟评分效果,这里没有加动作,仅显示了前台效果的实现. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-mouse-over-show-txt-demo/ 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra

  • 基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)

    从需求上来说,这个功能需要实时调用最新的微博数据,单就前端开发来说,其需求可以拆分如下: 1 内容持续滚动: 2 新微博将下面的微博先推下去,然后淡入进来: 3 鼠标经过内容暂停滚动: 4 容器底部渐变消失在背景色下. 上述4个需求之中,需求1-3为js技术实现,需求4为css技术实现,下面逐个需求来讲. 需求1和需求2:内容持续滚动的需求有些类似前一篇文章<小模块:公告滚动并暂停>中介绍的功能,在那篇文章中,此功能使用css的position定位来控制整个ul列表的移动动画.结合需求2,我们

随机推荐