当前位置: 首页 > 图文教程 > 网页制作 > HTML/XHTML教程 > 图片下拉选择器的制作(2)

HTML/XHTML教程
CSS 循序渐进(四)表里春秋
精通 CSS 滤镜(五)
让css使网页图片半透明
实现页面图片阴影特效
发现CSS控件的好处
用CSS缩写给你的网站加速
CSS在IE和Nascape的显示差别
利用CSS,不通过replace替换标引HTML标记
拒绝单调 让网页超链接拥有多姿多彩的下划线
对CSS类及id的规范化命名
利用css里expression来实现界面对象的批量控制
利用CSS控制打印
第一章 CSS的基本认识
第二章 CSS的应用方式
第三章 CSS的应用补充
第四章 颜色背景的CSS
第五章 文字性质的CSS
第六章 区块性质的CSS
HTML之其他标记
HTML之链接标记

HTML/XHTML教程 中的 图片下拉选择器的制作(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-04   浏览: 54 ::
收藏到网摘: n/a

  第三,图片下拉列表框的滚动,要保证自动滚动到相应的图片出现在列表框的顶端:当手动滚动停止时,如果滚动条趋势是向下滚动,则自动继续向下滚动直至最近的图片在列表框的顶端,反之亦然。

  例子中我们将所有供选图片命名为“0.gif”、“1.gif”……“9.gif”,并放在“head”目录下。下面我们以实际程序解决这些问题:

<!--建立表单-->
<form name="myform" method="post" action="">请选择图片:
<div id="imgBox"><!--这里是图片下拉选择器的位置--></div>
<input name="myhead" type="text" id="myface" size="10" value="">
</form>

<script language="JavaScript">
<!--
var imgWidth=64; //列表框中图片的宽度;
var imgHeight=64; //列表框中图片的高度;
var imgsrc="/upload/tech/20091104/20091104154757_e0ec453e28e061cc58ac43f91dc2f3f0.gif"; //供选图片的路径。"数字序号"四字将在程序中替换为0,1,2...,不要手工更改为数字 ;
var selectedNo=7; //默认选定的图片序号;
var selecteSize=2; //下拉列表框中显示的图片数;


/* 以下把图片和层输出在"imgBox"的位置:
我们用变量"isin"记录鼠标是否在该控件上;用CSS定义下拉列表框的滚动条,"overflow-x:hidden;overflow-y:scroll;"指水平方向不滚动,竖直方面滚动;
用for()循环依次把图片输出到下拉列表框。
*/
var myHTML='<SPAN onmouseover="isin=true" onmouseout="isin=false">';
myHTML+='<table width="1" onclick="showlist(this)" title="选择提示框" border="0" cellspacing="0" cellpadding="0"><tr><td><img name="imgselected" border=1 src="'+imgSrc.replace("数字序号",selectedNo)+'" WIDTH='+(imgWidth)+' HEIGHT='+imgHeight+'></td><td valign=top><img src="/upload/tech/20091104/20091104154758_7f5d04d189dfb634e6a85bb9d9adf21e.gif"></td></tr></table>';
myHTML+='<DIV onscroll="scrollud()" id="imgBox" \n';
myHTML+='style="position:absolute;left=-800;top=0;background-color:#FFFFFF;border: 1px solid #000000;overflow-x:hidden;overflow-y:scroll; width:'+(imgWidth+20)+'px; height: '+imgHeight*selecteSize+'px">';
for(i=0;i<10;i++){
myHTML+="<img listID="+i+" src='"+imgSrc.replace("数字序号",i)+"' alt='"+imgSrc.replace("数字序号",i)+"' width="+imgWidth+" height="+imgHeight+" onclick='selectme(this)' onload='if(init)init()'><BR>";
}
myHTML+= "</DIV></SPAN>";
imgBox.outerHTML=myHTML;

/* 以下控制下拉列表框的出现或隐藏 */
function showlist(obj){//这个函数将在选择提示框点击时激活
//如果列表框已经出现,这次点击则隐藏:
if(imgBox.style.pixelLeft!=-800){imgBox.style.pixelLeft=-800; return;}

//读取选择提示框在窗体中的绝对位置:
//在父容器中的相对位置:
var mytop=obj.offsetTop;
var myleft=obj.offsetLeft;
//依次读取父容器在更高一级父容器中的相对位置:
while(obj=obj.offsetParent){
myleft+=obj.offsetLeft;
mytop+=obj.offsetTop;
}
//现在已经得到选择提示框的绝对位置myleft和mytop。
//下拉列表拉就出现在这个绝对位置的正下方:
imgBox.style.left=myleft;
imgBox.style.top=mytop+imgHeight+2;

}

var isin=false;
function selectme(obj){ //这个函数将在窗体点击或选定图片时激活,窗体点击中传递的参数是null。
if(!isin||obj){imgBox.style.pixelLeft=-800;} //隐藏列表框
if(obj){
//改变选择提示框中的图片和"myhead"输入框中的值:
//listID是对象的自定义属性,即在对象的标签中定义了这个属性值,现在就可以读取或改变。
myform.myhead.value=imgSrc.replace("数字序号",obj.listID);
document.images["imgselected"].src=imgSrc.replace("数字序号",obj.listID);
}
}

/* 以下控制下拉列表框的自动滚动 */
var mytime=setTimeout("",0);
var pre_X=0; //这个变量用来记录滚动前滚动条的位置
function scrollud(){ //本函数在下拉列表框滚动时被激活
var current_X=imgBox.scrollTop; //记录函数激活时滚动条的位置
//判断向上还是向下滚动,并自动滚动到"imgHeight"的整数倍。
//我们改变列表框的scrollTop值时,会自动激发其onscroll事件,循环激活本函数。
if(current_X>pre_X && imgBox.scrollTop< Math.ceil(imgBo