• javascript-电话薄小功能


    上代码:

    <style>
    	*{ margin:0 ; padding: 0;}
    	.phrase_wrap,
    	.phrase_list{ 
    		 200px;
    		height: 200px;		
    	}
    	.phrase_wrap{
    		position:relative;
    		overflow: hidden;
    		margin: 20px auto;
    	}
    	.phrase_list{
    		overflow:auto;		
    	}
    	.phrase_panel,
    	.phrase_list dt{
    		padding: 0 4px;
    		height: 24px;
    		background:#066;
    		color: #fff;
    		font: bold 14px/24px SimSun;
    	}
    	.phrase_panel{
    		 175px;
    		position:absolute;
    		
    		
    		display: none;
    	}
    </style>
    </head>
    
    <body>
    
    <div class="phrase_wrap" id="phrase_wrap">
    	<div class="phrase_panel" id="phrase_panel"></div>
    	<dl id="phrase_list" class="phrase_list">
        	<dt>A</dt>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dt>B</dt>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dt>C</dt>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dt>D</dt>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dt>A</dt>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dd>a1</dd>
            <dt>B</dt>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dd>b2</dd>
            <dt>C</dt>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dd>c3</dd>
            <dt>D</dt>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
            <dd>d4</dd>
        </dl>   
    </div>
    
    <script>
    	/**
    		实现滚动下面条码的时候,对应的导航标题,在顶端显示。
    		分析:
    			1、首先要得到所有标题列表的坐标。
    			2、设置显示面板的内容。
    		步骤:
    			1、获取标题列表集合,并获取对应的坐标值。
    			2、设置显示面板内容并记录当前列表集合的索引。
    	*/
    	
    	/**
    		实现滚动下面条码的时候,对应的导航标题,在顶端显示。
    		分析:
    			1、首先要得到所有标题列表的坐标。
    			2、设置显示面板的内容。
    		步骤:
    			1、获取标题列表集合,并获取对应的坐标值。
    			
    			var phraseHeadList=[]
    			var phraseHead={title:'',x:0,y:0}//标题,坐标
    			
    			2、设置显示面板内容并记录当前列表集合的索引。
    			var phrasePanel={title:'',curHeadIndex:0};
    	*/
    	
    	/**
    		实现滚动下面条码的时候,对应的导航标题,在顶端显示。
    		分析:
    			1、首先要得到所有标题列表的坐标。
    			2、设置显示面板的内容。
    		步骤:
    			1、获取标题列表集合,并获取对应的坐标值。
    			
    			var phraseHeadList=[]
    			var phraseHead={title:'',x:0,y:0}//标题,坐标
    			
    			2、设置显示面板内容并记录当前列表集合的索引。
    			var phrasePanel={title:'',curHeadIndex:0};
    			
    			3、定位显示面板,并显示当前的标题
    			setPanel(index);
    	*/
    	//获取标题列表集合,并获取对应的坐标值。
    	var phraseList=document.getElementById("phrase_list");
    	var phraseListTop=phraseList.offsetTop;
    	var dts=phraseList.getElementsByTagName('dt');
    	var phraseHeadList=[];
    	var phraseHead={title:'',x:0,y:0}//标题,坐标
    	
    	for(var i=0,len=dts.length;i<len;i++){
    		phraseHead={
    			title:dts[i].innerHTML,
    			x:dts[i].offsetLeft,
    			y:dts[i].offsetTop-phraseListTop
    		}	
    		phraseHeadList.push(phraseHead);
    	}
    	
    	//设置显示面板内容并记录当前列表集合的索引。
    	var phrasePanel=document.getElementById('phrase_panel')
    
    	//监听
    	var phraseWrap=document.getElementById("phrase_wrap");
    	phraseList.onscroll=function(e){
    		var scrollTop=this.scrollTop;
    
    		var idx=getPhraseHeadIndex(scrollTop);
    		var nextIdx=idx+1;
    		var len=phraseHeadList.length;
    		//后一个的值和探测值比较
    		var probeH=dts[0].offsetHeight;		
    		var diffTop=phraseHeadList[nextIdx].y-scrollTop;
    		if(diffTop<probeH){
    			phrasePanel.style.top=diffTop-probeH+'px';			
    		}
    		setPanel(idx);
    		//纠错
    
    		
    	}
    	//搜索获取当前索引
    	function getPhraseHeadIndex(top){
    		var idx=0;		
    		for(var i=0,len=phraseHeadList.length;i<len;i++){			
    			if(phraseHeadList[i].y<top){
    				idx=i;
    			}
    			if(phraseHeadList[i].y>top){
    				break;
    			}
    		}
    		return idx;
    	}
    	//设置浮动条
    	function setPanel(index){
    		if(phrasePanel.index==index)return;
    		phrasePanel.index=index;
    		phrasePanel.style.display='block';
    		phrasePanel.style.top=0;				
    		phrasePanel.innerHTML=phraseHeadList[index].title	
    	}
    	
    	//初始化
    	setPanel(0)
    	
    </script>
    

     效果:

  • 相关阅读:
    有向图中的环DAG
    pyltp安装闭坑指南
    pip安装包到不同的python解释器
    WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connec
    词向量
    基于规则的关系抽取
    NLP(十三)中文分词工具的使用尝试
    NLP(十二)依存句法分析的可视化及图分析
    NLP入门(十一)从文本中提取时间
    NLP入门(十)使用LSTM进行文本情感分析
  • 原文地址:https://www.cnblogs.com/wengxuesong/p/3990235.html
Copyright © 2020-2023  润新知