写在前面:
这个缩放栏长得很丑,支持你自己用CSS进行美化
调用方法:
<link rel="stylesheet" type="text/css" href="zoombar.css" rel="stylesheet">
<body>
<div style="margin:200px;width:200px;height:200px;" id="text"><h1>正在开发,尽请期待</h1></div>
<script type="text/javascript" src="jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="zoombar.js"></script>
<script type="text/javascript">
$(function(){
$('body').Zoombar({container:$("#text"),
zoomInFunction:function(){
//点击放大的自定义事件
},
zoomOutFunction:function(){
//点击缩小的自定义事件
},
zoomFunction:function(evt,scale){
//在杆上拖拽的自定义事件 evt事件,scale代表放大或者缩小倍数的参数
}});
})
</script>
重点说:
zoomFunction中scale参数的处理方法如下所示:
if(scale/5-4>0){
if(scale/5-4>1){
zoomFunc(Math.pow(0.8,parseInt(scale/5-4)));//0.8一个单位的缩小量,parseInt(scale/5-4)缩小倍数
}else{
zoomFunc(1);
}
}else{
if(4-scale/5>1){
zoomFunc(Math.pow(1.2,parseInt(4-scale/5)));//1.2一个单位的放大量,parseInt(4-scale/5)放大倍数
}else{
zoomFunc(1);
}
}
如何做到元素在杆上的拖拽?
在父元素(中间的杆)的mousemove事件中判断鼠标左键是否是按下状态,然后写按下状态的拖拽事件
$("#gun").mousemove(
function(evt){
if(isPress){
$("#mblock").offset({top:evt.clientY}).addClass("zoombar-mousedown");
$("#gun").addClass("zoombar-mousedown");
zoomThePlace(evt)
}
});
捕获鼠标左键按下的代码,由于div堆叠的情况,和浏览器各种兼容的情况,最终以以下方式获取鼠标左键按下的判断:
var isPress = false;//处理IE9和火狐对鼠标按下状态监听的矫情的兼容
$("body,#mblock,#gun,.zoombar-infor,.zoombar").mouseup(function(evt){
isPress = false;
}).mousedown(function(evt){
isPress = true;
});
注意事项:
缩放边栏要适应浏览器窗口大小改变的情况
var me = this;
$container.resize(function(){
me.location($container);
});
缺点总结:
chrome下拖拽时鼠标不显示手型
通过鼠标按键的抬起事件对isPress的捕获判断不是很准确
鼠标在拖拽滑块时容易造成选中一大片变蓝色的情况,如下图中所示:
最后:
希望大伙儿 给我美化下,并且解决以上提到的bug们
源码:
zoombar.js
$.Zoombar = $.Zoombar||{};
$.extend($.Zoombar,{
init:function($container){
var me = this;
$container.resize(function(){
me.location($container);
});
return $("<div class='zoombar' id='zoombar'/>").appendTo("body");
},
initFunction:function(options){
this.zoomInFunction = options.zoomInFunction;
this.zoomOutFunction = options.zoomOutFunction;
this.zoomFunction = options.zoomFunction;
},
location:function($container){
var xc = $("#mblock").position().top-$("#zoombar").position().top==0?43:$("#mblock").position().top-$("#zoombar").position().top;
$("#zoombar").offset({top: $container.position().top+50,left: $container.position().left+10});
$("#mblock").offset({top: $("#zoombar").position().top+xc,left: $("#zoombar").position().left});
$(".zoombar-infor").offset({top: $container.position().top+45,left: $container.position().left+25});
},
addContent:function($container){
var me = this;
$("<div class='zoombar-inButton'>+</div>").appendTo("#zoombar").click(function(){
if($("#mblock").offset().top>$("#gun").offset().top){
me.zoomInFunction();
$("#mblock").offset({top:$("#mblock").offset().top-5});
}
});
$("<div class='zoombar-gun' id='gun'></div>").appendTo("#zoombar");
$("<div class='zoombar-outButton'>-</div>").appendTo("#zoombar").click(function(){
if($("#mblock").offset().top<($("#gun").offset().top+$("#gun").height())){
me.zoomOutFunction();
$("#mblock").offset({top:$("#mblock").offset().top+5});
}
});
$("<div id='mblock' class='zoombar-mblock'></div>").appendTo("body");
var isPress = false;//处理IE9和火狐对鼠标按下状态监听的矫情的兼容
$("body,#mblock,#gun,.zoombar-infor,.zoombar").mouseup(function(evt){
isPress = false;
}).mousedown(function(evt){
isPress = true;
});
$("#gun").mousedown(function(evt){
$("#mblock").offset({top:evt.clientY});
$("#gun").addClass("zoombar-mousedown");
zoomThePlace(evt);
}).mousemove(function(evt){
if(isPress){
$("#mblock").offset({top:evt.clientY}).addClass("zoombar-mousedown");
$("#gun").addClass("zoombar-mousedown");
zoomThePlace(evt)
}
}).mouseup(function(evt){
isPress = false;
});
$("<div class='zoombar-infor'>-200%<br><br>-100%<br><br>-1%</div>").appendTo("body");
function zoomThePlace(evt){
$("#cellEditToolbar").remove();
if($("#mblock").offset().top<($("#gun").offset().top+$("#gun").height())&&$("#mblock").offset().top>$("#gun").offset().top){
var scale = $("#mblock").offset().top-$("#gun").offset().top;
me.zoomFunction(evt,scale);
}
}
}
});
$.extend($.fn,{
Zoombar : function(options){
$.Zoombar.initFunction(options);
this.$elt = $.Zoombar.init(options.container);
$.Zoombar.addContent(options.container);
$.Zoombar.location(options.container)
return this;
}
});
zoombar.css
.zoombar {
width:9px;
position:absolute!important;
}
.zoombar-inButton {
background-color:rgb(223, 223, 223);
cursor:pointer;
text-align:center;
}
.zoombar-outButton {
background-color:rgb(223, 223, 223);
cursor:pointer;
text-align:center;
}
.zoombar-gun {
background-color:rgb(223, 223, 223);
height:50px;
width:5px;
margin-left:2px;
margin-right:2px;
cursor:pointer;
}
.zoombar-mousedown {
cursor:pointer;
}
.zoombar-mblock {
position:absolute!important;
width:10px;
height:5px;
background-color:gray;
cursor:pointer;
}
.zoombar-infor {
position:absolute!important;
width:50px;
padding-left:3px;
font-size:10px;
line-height: 20px;
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@好久不见的分割线@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
得不到的永远在躁动,被偏爱的却有恃无恐
- 大小: 2.6 KB
- 大小: 2.9 KB
分享到:
相关推荐
4. **jQuery动画**:为了吸引用户的注意力并提供良好的用户体验,侧边栏客服通常会带有各种动画效果,如滑动展开、缩放、旋转等。jQuery的`.animate()`方法可以实现这些动画。 5. **响应式设计**:考虑到不同设备的...
该资源是一个基于CSS3和jQuery实现的左侧边栏3D酷炫导航展开效果的代码库,适用于企业网站或商城网站的界面设计。这个特效能够为用户带来动态且富有视觉冲击力的浏览体验,提升网站的专业性和吸引力。 首先,我们要...
《jQuery实现的倾斜打开侧边栏菜单特效源码解析》 在网页设计中,侧边栏菜单是不可或缺的元素,它能有效地组织和展示网站的内容,提供用户友好的导航体验。而利用jQuery来实现侧边栏菜单的动态效果,更是能够提升...
滑动列表的实现可以借助JavaScript库和框架,如jQuery、React或Vue.js。这些工具提供了丰富的API和组件,可以轻松实现动态加载、无限滚动等功能,提升用户体验。同时,CSS3的transition和transform属性可以用来实现...
这个实例对于构建层级分明的导航系统非常有用,比如网站的侧边栏菜单或者文件管理系统。 首先,`index.html`是这个项目的入口文件,它包含了HTML结构、样式链接和脚本引用。HTML结构通常会包含一个容器元素,用于...
"简洁时尚的jQuery和CSS3侧边栏菜单插件sidenav特效源码.zip"是一个专为网页开发人员提供的资源,它结合了jQuery的动态交互和CSS3的视觉效果,为网站的侧边栏菜单带来了一种新颖且吸引人的体验。本文将详细介绍这个...
例如,侧边栏可能会通过滑动、淡入淡出、缩放或旋转等效果展开或关闭,同时内容页面相应地更新。 此压缩包中的“一组网页边栏过渡动画”可能包含以下内容: 1. HTML模板:基础的HTML结构,包含了侧边栏和内容区域...
这个框架的核心在于一个能够自适应大小的中心面板,而面板的四周可以设置可折叠、可缩放的侧边栏,实现“东南西北中”的经典布局模式。本文将深入探讨jQuery Layout的使用方法和关键特性。 首先,我们需要理解...
9. **jquery基于Bootstrap隐藏侧边栏菜单代码** 结合Bootstrap框架,实现了侧边栏菜单的隐藏和显示,适用于响应式布局,使导航在不同屏幕尺寸下都能优雅地工作。 10. **jQuery弹出窗口图片放大缩小旋转查看代码** ...
"jQuery倾斜打开侧边栏菜单特效代码"是一种创新的交互设计,它通过结合jQuery库和HTML5技术,实现了一种独特的视觉效果:当用户点击左侧按钮时,侧边栏菜单会以倾斜的方式展开。这种特效不仅增加了用户体验的趣味性...
- 打开/关闭侧边栏菜单。 - 展开/收起详细信息。 - 切换图片或内容。 - 在地图应用中缩放。 **六、总结** jQuery-doubleTap插件提供了一种高效、易于集成的方法,使得开发者可以轻松地在网页中添加鼠标双击和触摸...
这些效果通常结合JavaScript或jQuery来实现交互性,比如点击按钮展开或关闭侧边栏,或者检测滚动位置来固定或隐藏侧边栏。但在这个主题中,我们主要关注的是纯CSS3实现的动画效果。 在压缩包中的文件中,你可能会...
7. **页面布局**:仿京东商城的模板通常包含头部(品牌标识、导航栏)、中部(商品展示区)、侧边栏(分类导航)和底部(版权信息、链接)等部分,结构清晰,易于导航。 8. **图片处理**:商品展示通常涉及图片懒...
1. **窗口(Window)**:用于创建弹出式的操作窗口,可以设置大小、位置、标题等属性,支持拖动和缩放。 2. **表单(Form)**:提供数据输入和验证功能,可以与后台进行数据交互。 3. **表格(Grid)**:展示大量...
这个代码资源是基于jQuery和HTML5编写的,旨在帮助开发者创建一个动态的、响应式的侧边栏菜单,适用于手机和其他触摸设备。 首先,HTML5在其中起到了关键的角色,提供了新的语义化标签如, , 等,使得网页结构更加...
5. 菜单(Menu):创建下拉菜单或侧边栏菜单,方便用户导航。 6. 按钮(Button):提供各种类型的按钮,如普通按钮、链接按钮、复选按钮等。 7. 提示(Tip):显示提示信息,可以是简单的文字或包含HTML内容的浮层。...
1. **导航菜单**:如汉堡菜单、侧边栏滑动菜单、下拉菜单等,用于改善网站的导航结构。 2. **滑动和滚动效果**:例如滑块、滚动动画、平滑滚动等,增强页面的动态感。 3. **图像和媒体**:如轮播图、图片预加载、...
7. **JavaScript增强**:虽然描述中提到的是CSS3实现的效果,但有时候为了增加交互性,我们还可以借助JavaScript或jQuery来添加更多的动态功能,例如,点击菜单项后保持卡片的展开状态,或者添加下拉子菜单等。...
此外,`JQuerySiderManger`可能是一个预封装的jQuery插件,专门用于处理侧边栏的滑动效果。使用这样的插件可以简化开发流程,因为它已经包含了所有必要的动画逻辑和事件处理。如果你的项目中包含了这个文件,建议...