<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自定义滚动条</title>
<style type="text/css">
body,div,ul,li,p{margin:0;padding:0;}
body{background:#3e3e3e;font:14px/1.5 \5fae\8f6f\96c5\9ed1;}
#box{width:600px;margin:20px auto;}
.list{position:relative;width:600px;height:144px;margin-bottom:10px;overflow:hidden;border-radius:8px;}
.list ul{position:absolute;top:0;left:0;height:144px;}
.list li{display:inline;float:left;width:144px;height:144px;list-style:none;background:#000;margin-right:8px;border-radius:8px;}
.list li img{float:left;width:124px;height:100px;border-radius:5px;margin:10px 0 0 10px;}
.list li p{float:left;color:#fff;width:100%;text-align:center;line-height:34px;}
.scrollBar{position:relative;height:19px;background:#0a0a0a;overflow:hidden;}
.scrollBar .barL,.scrollBar .barR,.scrollBar .barLStop,.scrollBar .barRStop{position:absolute;top:0;width:28px;height:19px;cursor:pointer;background:url(http://www.codefans.net/jscss/demoimg/201107/03.gif) no-repeat;}
.scrollBar .barL{left:0;}
.scrollBar .barR{right:0;background-position:right 0;}
.scrollBar .barLStop{left:0;background-position:0 -19px;cursor:default;}
.scrollBar .barRStop{right:0;background-position:right -19px;cursor:default;}
.scrollBar .barM{position:relative;height:15px;border:1px solid #545454;border-width:1px 0;margin:0 28px;padding:1px 0;z-index:1;cursor:pointer;}
.scrollBar .bar{position:absolute;top:1px;left:0;width:150px;height:15px;cursor:e-resize;background:url(http://www.codefans.net/jscss/demoimg/201107/01.gif) repeat-x;}
.scrollBar .bar .l,.scrollBar .bar .r{position:absolute;top:0;width:6px;height:15px;background:url(http://www.codefans.net/jscss/demoimg/201107/02.gif) no-repeat;}
.scrollBar .bar .l{left:-6px;}
.scrollBar .bar .r{right:-6px;background-position:right 0;}
#desc{color:#ccc;width:578px;padding:10px;margin:0 auto;line-height:2;border:1px dashed #666;}
#desc dd{margin-left:2em;}
.ta-r{text-align:right;}
</style>
<script type="text/javascript">
/*-------------------------- +
获取id, class, tagName
+-------------------------- */
var get = {
byId: function(id) {
return typeof id === "string" ? document.getElementById(id) : id
},
byClass: function(sClass, oParent) {
var aClass = [];
var reClass = new RegExp("(^| )" + sClass + "( |$)");
var aElem = this.byTagName("*", oParent);
for (var i = 0; i < aElem.length; i++) reClass.test(aElem[i].className) && aClass.push(aElem[i]);
return aClass
},
byTagName: function(elem, obj) {
return (obj || document).getElementsByTagName(elem)
}
};
/*-------------------------- +
获取最终样式
+-------------------------- */
function getStyle(obj, attr)
{
return parseFloat(obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, null)[attr])
}
window.onload = function ()
{
var oBox = get.byId("box");
var oScrollBar = get.byClass("scrollBar", oBox)[0];
var oList = get.byClass("list", oBox)[0];
var oUl = get.byTagName("ul", oBox)[0];
var aLi = get.byTagName("li", oBox);
var oBarL = get.byClass("barL", oScrollBar)[0];
var oBarM = get.byClass("barM", oScrollBar)[0];
var oBarR = get.byClass("barR", oScrollBar)[0];
var oBar = get.byClass("bar", oBarM)[0];
var maxL = oBarM.offsetWidth - oBar.offsetWidth;
var iMarginRight = getStyle(aLi[0], "marginRight");
var timer = null;
var iScale = 0;
var disX = 0;
var i = 0;
//图片列表容器动态设置宽度
oUl.style.width = (aLi[0].offsetWidth + iMarginRight) * aLi.length + "px";
//拖动流动条
oBar.onmousedown = function (event)
{
var event = event || window.event;
disX = event.clientX - oBar.offsetLeft;
document.onmousemove = function (event)
{
var event = event || window.event;
var iL = event.clientX - disX;
iL <= 0 && (iL = 0);
iL >= maxL && (iL = maxL);
oBar.style.left = iL + "px";
iScale = iL / maxL;
startMove(oUl, parseInt((oList.offsetWidth + iMarginRight - oUl.offsetWidth) * iScale));
isStop();
return false
};
document.onmouseup = function ()
{
document.onmousemove = null;
document.onmouseup = null
};
return false
};
//阻止滚动条点击事件冒泡
oBar.onclick = function (event)
{
(event || window.event).cancelBubble = true
};
//滚动条左右按钮鼠标移入及键盘左右键按下事件
oBarL.onmouseover = oBarR.onmouseover = document.onkeydown = function (event)
{
clearInterval(timer);
var event = event || window.event;
var iSpeed = 0;
if (this == oBarR || event.keyCode == 39)
{
iSpeed = 5
}
else if(this == oBarL || event.keyCode == 37)
{
iSpeed = -5
}
timer = setInterval(function ()
{
togetherMove(getStyle(oBar, "left") + iSpeed, 1)
}, 30)
};
//滚动条左右按钮鼠标移开及键盘左右键抬起事件
oBarL.onmouseout = oBarR.onmouseout = document.onkeyup = function ()
{
clearInterval(timer)
};
//滚动条可移动区域点击事件
oBarM.onclick = function (event)
{
var iTarget = (event || window.event).clientX - oBox.offsetLeft - this.offsetLeft - oBar.offsetWidth / 2;
togetherMove(iTarget)
};
//图片列表和流动条同时移动
function togetherMove(iTarget, buffer)
{
if (iTarget <= 0)
{
timer && clearInterval(timer);
iTarget = 0
}
else if (iTarget >= maxL)
{
timer && clearInterval(timer);
iTarget = maxL
}
iScale = iTarget / maxL;
startMove(oUl, parseInt((oList.offsetWidth + iMarginRight - oUl.offsetWidth) * iScale), function () {isStop()}, buffer);
startMove(oBar, iTarget, function () {isStop()}, buffer)
}
//判断滚动条是否到达边界
function isStop()
{
oBarL.className = "barL";
oBarR.className = "barR";
switch (oBar.offsetLeft)
{
case 0:
/(^|\s)barLStop(\s|$)/.test(oBarL.className) || (oBarL.className += " barLStop");
break;
case maxL:
/(^|\s)barRStop(\s|$)/.test(oBarR.className) || (oBarR.className += " barRStop");
break;
}
}
isStop()
};
function startMove(obj, iTarget, fnEnd, buffer)
{
clearInterval(obj.timer);
obj.timer = setInterval(function ()
{
doMove(obj, iTarget, fnEnd, buffer)
}, 25)
}
function doMove(obj, iTarget, fnEnd, buffer)
{
var iLeft = getStyle(obj, "left");
var iSpeed = (iTarget - iLeft) / (buffer || 5);
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
iLeft == iTarget ? (clearInterval(obj.timer), fnEnd && fnEnd()) : obj.style.left = iLeft + iSpeed + "px"
}
</script>
</head>
<body>
<div id="box">
<div class="list">
<ul>
<li><img src="/jscss/demoimg/wall_s1.jpg" /><p>iPhone 4</p></li>
<li><img src="/jscss/demoimg/wall_s2.jpg" /><p>iPad 2</p></li>
<li><img src="/jscss/demoimg/wall_s3.jpg" /><p>iPod touch</p></li>
<li><img src="/jscss/demoimg/wall_s4.jpg" /><p>iPod classic</p></li>
<li><img src="/jscss/demoimg/wall_s5.jpg" /><p>iPod shuffle</p></li>
<li><img src="/jscss/demoimg/wall_s6.jpg" /><p>iPod nano</p></li>
<li><img src="/jscss/demoimg/wall_s7.jpg" /><p>MacBook Air</p></li>
<li><img src="/jscss/demoimg/wall_s8.jpg" /><p>MacBook Pro</p></li>
<li><img src="/jscss/demoimg/wall_s9.jpg" /><p>Mac mini</p></li>
<li><img src="/jscss/demoimg/wall_s10.jpg" /><p>Mac Pro</p></li>
</ul>
</div>
<!--/list-->
<div class="scrollBar">
<div class="barL"></div>
<div class="barM">
<div class="bar">
<div class="l"></div>
<div class="r"></div>
</div>
</div>
<div class="barR"></div>
</div>
<!--/scrollBar-->
</div>
<!--/box-->
<dl id="desc">
<dt>功能说明:</dt>
<dd>① 拖动滚动条,图片列表缓冲滑动至目标点;</dd>
<dd>② 滚动条两端鼠标移入自动滑动;</dd>
<dd>③ 滚动条滑动到两端自动更换为停止标识;</dd>
<dd>④ 点击滚动条黑色背景区,滚动条及图片列表缓冲滑动至目标点;</dd>
<dd>⑤ 支持键盘左右键;</dd>
<dd>⑥ 鼠标滚轮功能待续...</dd>
<dd class="ta-r">QQ:21314130, By — Ferris</dd>
</dl>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自定义滚动条</title>
<style type="text/css">
body,div,ul,li,p{margin:0;padding:0;}
body{background:#3e3e3e;font:14px/1.5 \5fae\8f6f\96c5\9ed1;}
#box{width:600px;margin:20px auto;}
.list{position:relative;width:600px;height:144px;margin-bottom:10px;overflow:hidden;border-radius:8px;}
.list ul{position:absolute;top:0;left:0;height:144px;}
.list li{display:inline;float:left;width:144px;height:144px;list-style:none;background:#000;margin-right:8px;border-radius:8px;}
.list li img{float:left;width:124px;height:100px;border-radius:5px;margin:10px 0 0 10px;}
.list li p{float:left;color:#fff;width:100%;text-align:center;line-height:34px;}
.scrollBar{position:relative;height:19px;background:#0a0a0a;overflow:hidden;}
.scrollBar .barL,.scrollBar .barR,.scrollBar .barLStop,.scrollBar .barRStop{position:absolute;top:0;width:28px;height:19px;cursor:pointer;background:url(http://www.codefans.net/jscss/demoimg/201107/03.gif) no-repeat;}
.scrollBar .barL{left:0;}
.scrollBar .barR{right:0;background-position:right 0;}
.scrollBar .barLStop{left:0;background-position:0 -19px;cursor:default;}
.scrollBar .barRStop{right:0;background-position:right -19px;cursor:default;}
.scrollBar .barM{position:relative;height:15px;border:1px solid #545454;border-width:1px 0;margin:0 28px;padding:1px 0;z-index:1;cursor:pointer;}
.scrollBar .bar{position:absolute;top:1px;left:0;width:150px;height:15px;cursor:e-resize;background:url(http://www.codefans.net/jscss/demoimg/201107/01.gif) repeat-x;}
.scrollBar .bar .l,.scrollBar .bar .r{position:absolute;top:0;width:6px;height:15px;background:url(http://www.codefans.net/jscss/demoimg/201107/02.gif) no-repeat;}
.scrollBar .bar .l{left:-6px;}
.scrollBar .bar .r{right:-6px;background-position:right 0;}
#desc{color:#ccc;width:578px;padding:10px;margin:0 auto;line-height:2;border:1px dashed #666;}
#desc dd{margin-left:2em;}
.ta-r{text-align:right;}
</style>
<script type="text/javascript">
/*-------------------------- +
获取id, class, tagName
+-------------------------- */
var get = {
byId: function(id) {
return typeof id === "string" ? document.getElementById(id) : id
},
byClass: function(sClass, oParent) {
var aClass = [];
var reClass = new RegExp("(^| )" + sClass + "( |$)");
var aElem = this.byTagName("*", oParent);
for (var i = 0; i < aElem.length; i++) reClass.test(aElem[i].className) && aClass.push(aElem[i]);
return aClass
},
byTagName: function(elem, obj) {
return (obj || document).getElementsByTagName(elem)
}
};
/*-------------------------- +
获取最终样式
+-------------------------- */
function getStyle(obj, attr)
{
return parseFloat(obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, null)[attr])
}
window.onload = function ()
{
var oBox = get.byId("box");
var oScrollBar = get.byClass("scrollBar", oBox)[0];
var oList = get.byClass("list", oBox)[0];
var oUl = get.byTagName("ul", oBox)[0];
var aLi = get.byTagName("li", oBox);
var oBarL = get.byClass("barL", oScrollBar)[0];
var oBarM = get.byClass("barM", oScrollBar)[0];
var oBarR = get.byClass("barR", oScrollBar)[0];
var oBar = get.byClass("bar", oBarM)[0];
var maxL = oBarM.offsetWidth - oBar.offsetWidth;
var iMarginRight = getStyle(aLi[0], "marginRight");
var timer = null;
var iScale = 0;
var disX = 0;
var i = 0;
//图片列表容器动态设置宽度
oUl.style.width = (aLi[0].offsetWidth + iMarginRight) * aLi.length + "px";
//拖动流动条
oBar.onmousedown = function (event)
{
var event = event || window.event;
disX = event.clientX - oBar.offsetLeft;
document.onmousemove = function (event)
{
var event = event || window.event;
var iL = event.clientX - disX;
iL <= 0 && (iL = 0);
iL >= maxL && (iL = maxL);
oBar.style.left = iL + "px";
iScale = iL / maxL;
startMove(oUl, parseInt((oList.offsetWidth + iMarginRight - oUl.offsetWidth) * iScale));
isStop();
return false
};
document.onmouseup = function ()
{
document.onmousemove = null;
document.onmouseup = null
};
return false
};
//阻止滚动条点击事件冒泡
oBar.onclick = function (event)
{
(event || window.event).cancelBubble = true
};
//滚动条左右按钮鼠标移入及键盘左右键按下事件
oBarL.onmouseover = oBarR.onmouseover = document.onkeydown = function (event)
{
clearInterval(timer);
var event = event || window.event;
var iSpeed = 0;
if (this == oBarR || event.keyCode == 39)
{
iSpeed = 5
}
else if(this == oBarL || event.keyCode == 37)
{
iSpeed = -5
}
timer = setInterval(function ()
{
togetherMove(getStyle(oBar, "left") + iSpeed, 1)
}, 30)
};
//滚动条左右按钮鼠标移开及键盘左右键抬起事件
oBarL.onmouseout = oBarR.onmouseout = document.onkeyup = function ()
{
clearInterval(timer)
};
//滚动条可移动区域点击事件
oBarM.onclick = function (event)
{
var iTarget = (event || window.event).clientX - oBox.offsetLeft - this.offsetLeft - oBar.offsetWidth / 2;
togetherMove(iTarget)
};
//图片列表和流动条同时移动
function togetherMove(iTarget, buffer)
{
if (iTarget <= 0)
{
timer && clearInterval(timer);
iTarget = 0
}
else if (iTarget >= maxL)
{
timer && clearInterval(timer);
iTarget = maxL
}
iScale = iTarget / maxL;
startMove(oUl, parseInt((oList.offsetWidth + iMarginRight - oUl.offsetWidth) * iScale), function () {isStop()}, buffer);
startMove(oBar, iTarget, function () {isStop()}, buffer)
}
//判断滚动条是否到达边界
function isStop()
{
oBarL.className = "barL";
oBarR.className = "barR";
switch (oBar.offsetLeft)
{
case 0:
/(^|\s)barLStop(\s|$)/.test(oBarL.className) || (oBarL.className += " barLStop");
break;
case maxL:
/(^|\s)barRStop(\s|$)/.test(oBarR.className) || (oBarR.className += " barRStop");
break;
}
}
isStop()
};
function startMove(obj, iTarget, fnEnd, buffer)
{
clearInterval(obj.timer);
obj.timer = setInterval(function ()
{
doMove(obj, iTarget, fnEnd, buffer)
}, 25)
}
function doMove(obj, iTarget, fnEnd, buffer)
{
var iLeft = getStyle(obj, "left");
var iSpeed = (iTarget - iLeft) / (buffer || 5);
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
iLeft == iTarget ? (clearInterval(obj.timer), fnEnd && fnEnd()) : obj.style.left = iLeft + iSpeed + "px"
}
</script>
</head>
<body>
<div id="box">
<div class="list">
<ul>
<li><img src="/jscss/demoimg/wall_s1.jpg" /><p>iPhone 4</p></li>
<li><img src="/jscss/demoimg/wall_s2.jpg" /><p>iPad 2</p></li>
<li><img src="/jscss/demoimg/wall_s3.jpg" /><p>iPod touch</p></li>
<li><img src="/jscss/demoimg/wall_s4.jpg" /><p>iPod classic</p></li>
<li><img src="/jscss/demoimg/wall_s5.jpg" /><p>iPod shuffle</p></li>
<li><img src="/jscss/demoimg/wall_s6.jpg" /><p>iPod nano</p></li>
<li><img src="/jscss/demoimg/wall_s7.jpg" /><p>MacBook Air</p></li>
<li><img src="/jscss/demoimg/wall_s8.jpg" /><p>MacBook Pro</p></li>
<li><img src="/jscss/demoimg/wall_s9.jpg" /><p>Mac mini</p></li>
<li><img src="/jscss/demoimg/wall_s10.jpg" /><p>Mac Pro</p></li>
</ul>
</div>
<!--/list-->
<div class="scrollBar">
<div class="barL"></div>
<div class="barM">
<div class="bar">
<div class="l"></div>
<div class="r"></div>
</div>
</div>
<div class="barR"></div>
</div>
<!--/scrollBar-->
</div>
<!--/box-->
<dl id="desc">
<dt>功能说明:</dt>
<dd>① 拖动滚动条,图片列表缓冲滑动至目标点;</dd>
<dd>② 滚动条两端鼠标移入自动滑动;</dd>
<dd>③ 滚动条滑动到两端自动更换为停止标识;</dd>
<dd>④ 点击滚动条黑色背景区,滚动条及图片列表缓冲滑动至目标点;</dd>
<dd>⑤ 支持键盘左右键;</dd>
<dd>⑥ 鼠标滚轮功能待续...</dd>
<dd class="ta-r">QQ:21314130, By — Ferris</dd>
</dl>
</body>
</html>
发表评论
-
UML类图关系大全
2013-09-04 22:42 683本文转载自http://www.cnblogs.com/ri ... -
js判断一个图片是否已经存在于缓存
2013-05-31 15:15 7241【解决】js判断一个图片是否已经存在于缓存(兼容IE各版本及 ... -
java 加密解密算法总结(转)
2013-03-19 11:28 837package tianya.cn.main; im ... -
深入了解Struts2返回JSON数据的原理及具体应用范例
2013-03-18 09:40 1197转载自: http://yshjava.iteye.com/ ... -
ICE:slice语言常识整理
2013-01-28 10:53 1751============================== ... -
ICE实例
2013-01-25 17:46 879本文将结合实际项目,做一个基于ice的实际项目实例应用,该实例 ... -
ICE转摘学习
2013-01-25 17:44 796Ice 出自ZeroC名门之 ... -
Google 浏览器css hack 写法
2013-01-16 11:09 749针对Chrome和Safari等Webkit核心浏览器的CS ... -
图片预加载做法
2012-12-18 17:34 798/** * 图片头数据加载就 ... -
广告 如何计费
2012-11-22 12:57 753无论何种商品的售卖, ... -
js 事件冒泡
2012-11-19 14:40 883JavaScript事件冒泡简介及应用 一、什么是事 ... -
jQuery获取tagName的方法
2012-09-29 16:52 716在javascript中要取得tagName十分简单,但在jQ ... -
test
2012-09-06 00:16 0<!DOCTYPE html PUBLIC " ... -
java 访问url获取别人的接口服务
2012-08-09 21:51 0** * 程序中访问http数据接口 ... -
Java IO系统之IO系统类层次关系
2012-08-08 09:13 0流是字节序列的抽象概念。 文件是数据的静态存储形式,而流 ... -
java缓存
2012-08-06 12:47 0JAVA缓存技术 JavaJNICacheL ... -
hibernate 使用二级缓存 配置
2012-05-26 23:57 1006配置二级缓存主要有两个步骤。 选择需要使用第三方二级缓存 ... -
jQuery.extend函数详解
2012-05-25 17:37 737jQuery.extend 函数详解 JQuery的exten ... -
spring新的jar包名称,搭建框架列表
2012-04-28 13:12 901For a typical web application y ... -
浅谈Java中的几种随机数
2012-04-20 23:51 528众所周知,随机数是任何一种编程语言最基本的特征之一。而生成随机 ...
相关推荐
在编程领域,尤其是在GUI(图形用户界面)设计中,为大图片添加滚动条是一个常见的需求。易语言,作为中国本土开发的一种简单易学的编程语言,提供了丰富的库和功能来帮助开发者实现这样的功能。本篇将详细介绍如何...
**jQuery 带滚动条图片滚动详解** 在网页设计中,动态效果往往能提升用户体验,其中图片滚动就是一种常见的交互方式。jQuery,一个强大的JavaScript库,提供了丰富的API和方法,使得实现图片滚动变得简单易行。本文...
"JS自定义图片滚动条"就是这样一个技术点,它利用JavaScript语言来实现对滚动条外观和行为的个性化定制。下面我们将详细探讨这个主题,包括如何使用JavaScript和CSS来实现这一功能,以及可能遇到的关键问题和解决...
详细展示如何在VC对话框中使用picture control显示图片,并带有滚动条完美控制。 并详细展示在单文档中显示图片,并带有滚动条完美控制。 可以处理的图片格式:bmp,jpg,png,gif 非常经典,请大家下载后收藏。
"控制图片左右滚动并带滚动条图片展示特效"是一种常见且实用的技术,它结合了jQuery库和CSS样式,使得图片展示更加动态且具有交互性。下面将详细解析这一特效的实现原理和关键知识点。 首先,jQuery是一个轻量级的...
这个源码实现了将滚动条与画板联动,当用户滚动滚动条时,图片在画板上的显示位置也会相应改变,从而实现图片的平滑滚动。 在实现这个功能时,开发者可能使用了易语言的“画布”组件来创建画板,并结合“滚动条”...
标题提到的"MFC应用CStatic派生带滚动条的图片控件类"是一种自定义控件,它是从`CStatic`类派生出来的,并添加了滚动条功能,以便用户能够查看超过控件可视区域的图片内容。这个自定义控件不仅允许用户浏览大图,还...
3. **处理滚动消息**:我们需要重写`OnHScroll`和`OnVScroll`消息处理函数,以便在用户滚动滚动条时更新图片的位置。这些函数将根据滚动条的滑块位置改变窗口的客户区坐标映射模式,从而移动显示的图片部分。 4. **...
"MFC带滚动条显示JPG图片"这个主题涉及的是如何在MFC应用中创建一个具有滚动条功能的窗口,以便能够查看和浏览大尺寸的JPG图片。下面我们将详细探讨实现这一功能的关键步骤和知识点。 首先,我们需要理解MFC框架。...
jquery带水平滚动条图片滚动是一款点击图片放大缩小图片左右滚动,设置水平滚动条拖动图片滚动,点击左右按钮图片滚动展示。 jquery带水平滚动条图片滚动特效图:
总的来说,WPF的自定义能力使得滚动条可以根据设计需求进行高度定制,无论是颜色调整还是图片应用,都能实现独特的视觉效果。只要理解了样式和模板的工作原理,就能创造出极具个性化的用户界面。在实际开发中,确保...
为了能够有效地展示这些大图,我们可以使用带有滚动条的图片控件。这个技术允许用户通过滚动条来查看图片的不同部分,而无需缩放图像,从而提供了一个良好的用户体验。接下来,我们将深入探讨如何在VC++中实现这一...
4. **滚动条事件处理**:当用户滚动滚动条时,我们需要监听滚动条的“改变”事件。在事件处理程序中,根据滚动条的位置调整画板的“视区左”和“视区顶”属性,这两个属性决定了画板当前显示的区域。通过调整这两个...
"带滚动条拖动图片特效"是一个专为ASP.NET平台设计的功能,它旨在提升用户体验,让用户可以方便地通过滚动条浏览和拖动图片,营造出动态、交互式的视觉效果。这个特效特别适用于那些拥有大量图片资源,需要在一个...
完成以上步骤后,便能实现一个可显示大图且带有滚动条控制的MFC Picture控件,用户可以通过滚动条轻松浏览大图的各个部分。 综上所述,MFC中利用Picture控件显示大图并添加滚动条控制涉及的主要知识点有:CStatic...
购物网站带横向滚动条的图片展示代码 购物网站带横向滚动条的图片展示代码 购物网站带横向滚动条的图片展示代码 购物网站带横向滚动条的图片展示代码 购物网站带横向滚动条的图片展示代码 购物网站带横向滚动条的...
工程是在VS2010中的基于对话框的MFC,结合OPENCV2.3,因此请大家先设置好OPENCV。大家也可去我的新浪博客查看,http://blog.sina.com.cn/u/2169813830。感谢http://blog.csdn.net/ixzf2009/article/details/6564456 ...
在实际项目中,自定义滚动条可以用于实现更复杂的数据浏览场景,比如图片浏览器、长表格或文档阅读器。通过结合提供的资源,开发者可以学习如何在C# WinForms环境中创建和使用自定义滚动条,提升应用程序的用户体验...
要创建“JQuery滚动条式左右图片滚动展示特效”,我们需要以下几个步骤: 1. **HTML结构**:创建基本的HTML布局,包括一个容器元素(如`div`)用于放置图片,以及一个滚动条元素。每个图片应该是一个独立的`img`...