1. 程式人生 > >html5仿手機通訊錄按字母排序及搜尋功能

html5仿手機通訊錄按字母排序及搜尋功能

1.實現聯絡人字母排序,點選字母跳轉顯示聯絡人組目錄;

2.實現聯絡搜尋,動態顯示符合查詢的聯絡人;

詳情見資源:https://download.csdn.net/download/huicaipa1943/10304104

效果圖如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <META name="viewport"
	content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
	  <style>
	  * {
    margin: 0;
    padding: 0;
}
  body{
  	font-size:16px;
  }
  .header{
  
    position: fixed;
    left: 0;
    top: 0;
    z-index: 99;
    width: 100%;
    height: 45px;
    background: #21a4f4;
    
    
  }
  .header p{
  	margin-left:20px;
  	height: 45px;
    line-height: 45px;
    color: #fff;
    font-size: 18px;
    display:inline-block;
  }
  .header span{
  	color:#fff;
  	margin-right: 20px;
    float: right;
    line-height: 45px;
  }
  .content{
  	margin-top:45px;
  }
  .nav{
  background-color: #fff;
  }
  .header-two{
  
    position: fixed;
    left: 0;
    top: 0;
    z-index: 99;
    width: 100%;
    height: 45px;
    background: #21a4f4;
    
    
  }
  .header-two p{
  	margin-left:20px;
  	height: 45px;
    line-height: 45px;
    color: #fff;
    font-size: 18px;
    display:inline-block;
  }
  .header-two span{
  	color:#fff;
  	margin-left:6px;
    line-height: 45px;
  }
  .header-two i{
  	color:#fff;
  	margin-left: 20px;
    line-height: 45px;
  }
  .header-two input{
  	border:none;
  	
  	width:80%;
  	background-color:transparent;
  }
  .sort_box-two{
  	display:block;
  }
  .input{
  	border-bottom: 2px #fff solid;
    display: inline-block;
    height: 42px;
    width: calc(100% - 50px);
  }
  ul li{list-style: none;}
a{text-decoration: none;cursor: pointer;}
html{height: 100%;}
a,input,img,textarea,span,div{outline: 0;-webkit-tap-highlight-color:rgba(255,0,0,0);}

#letter{
    width: 100px;
    height: 100px;
    border-radius: 5px;
    font-size: 75px;
    color: #555;
    text-align: center;
    line-height: 100px;
    background: rgba(145,145,145,0.6);
    position: fixed;
    left: 50%;
    top: 50%;
    margin:-50px 0px 0px -50px;
    z-index: 99;
    display: none;
}
#letter img{
    width: 50px;
    height: 50px;
    float: left;
    margin:25px 0px 0px 25px;
}
[class^="sort_box"]{
    width: 100%;
    padding-top: 45px;
    overflow: hidden;
    
}
[class^="sort_list"]{
    padding:10px 60px 10px 80px;
    position: relative;
    line-height: 50px;
    border-bottom:1px solid #ddd;
}

[class^="sort_list"] .num_logo{
    width: 50px;
    height: 50px;
    border-radius: 10px;
    overflow: hidden;
    position: absolute;
    left: 20px;
}
[class^="sort_list"] .num_logo img{
    width: 50px;
    height: 50px;
}
[class^="sort_list"] .num_name{
    color: #000;
}

.sort_letter{
    height: 30px;
    line-height: 30px;
    padding-left: 20px;
    color:#787878;
    font-size: 14px;
    border-bottom:1px solid #ddd;
}
.initials{
    position: fixed;
    top: 47px;
    right: 0px;
    height: 100%;
    width: 15px;
    padding-right: 10px;
    text-align: center;
    font-size: 12px;
    z-index: 99;
    background: rgba(145,145,145,0);
}
.initials li img{
    width: 14px;
}
  </style>
  <!-- Fonts -->
<link
	href='http://fonts.googleapis.com/css?family=Roboto+Condensed:300,400'
	rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Lato:300,400,700,900'
	rel='stylesheet' type='text/css'>
<!-- CSS Libs -->
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css"
	href="css/bootstrap-switch.min.css">

	<script src="js/jquery.1.9.1.min.js"></script>
	<script type="text/javascript" src="js/jquery.charfirst.pinyin.js"></script>
	<script type="text/javascript" src="js/circle.js"></script>

 </HEAD>

 <BODY>
	<div class="header-two">
  	 <div>
  		<i class="glyphicon glyphicon-chevron-left" onclick="back()"><a href="javascript:back()"></a> </i>
			<div class="input">
				<span class="glyphicon glyphicon-search"></span> 
				<input id="search" type="text" />
			</div>
		</div>
  	</div>
  	
  	<div class="header">
  	 <div>
  		<p>通訊錄</p>
  		<span class="glyphicon glyphicon-plus"></span>
  		<span id="gosearch" class="glyphicon glyphicon-search"></span>
  	</div>
  	</div>
  	<div id="letter" ></div>
  	<div class="sort_box-two">
		
	</div>
	<div class="sort_box">
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">張三</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">李四</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">王五</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">劉六</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">馬七</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">黃八</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">莫九</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">陳十</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">陳十</div>
		</div><div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">陳十</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">a九</div>
		</div>
		<div class="sort_list">
			<div class="num_logo">
				<img src="images/avator.png" alt="">
			</div>
			<div class="num_name">1十</div>
		</div>
	</div>
	<div class="initials">
		<ul>
		</ul>
	</div>
 </BODY>
</HTML>

circle.js

function back(){
			$('[class*="-two"]').css('display','none');
			$('.sort_box').css('display','block');
			$('.initials').css('display','block');
			$('.header').css('display','block');
		}
$(function(){
		
		window.onresize=function(){
			if($(window).height()<400){
				$('.nav').hide();
			}else{
				$('.nav').show();
			}
			 
		}
		$('[class*="-two"]').css('display','none'); 
		$('#gosearch').click(function(){
			
			$('[class*="-two"]').css('display','block');
			$('.sort_box').css('display','none');
			$('.header').css('display','none');
			$('.initials').css('display','none');
			$('#search').focus();
			
		});
		
		$('#search').bind('input propertychange', function() { 
			$('.sort_box-two').html('');
			 //進行相關操作 
			var val=$(this).val();
			if(val==""){
				return;
			}
			var str="";
			//去查詢原字串及其拼音首字母是否包含此字元,若包含就把它加進去
			$(".sort_list").each(function() {
				var name=$(this).find('.num_name').text();
				if(name.toLowerCase().indexOf(val.toLowerCase()) != -1){//包含
					str+="<div class='sort_list-two' id='"+$(this).attr('id')+"'> "+$(this).html()+"</div>";
				}else{
					var PYarr = makePy(name);
					for(var i=0;i<PYarr.length;i++){
						
						if(PYarr[i].toLowerCase().indexOf(val.toLowerCase()) != -1){//包含
							str+="<div class='sort_list-two' id='"+$(this).attr('id')+"'> "+$(this).html()+"</div>";
						}else{//不包含
							
						}
					}
				}
		        
		    });
			$('.sort_box-two').html(str);
			
		});
        var Initials=$('.initials');
        var LetterBox=$('#letter');
        Initials.find('ul').append('<li>A</li><li>B</li><li>C</li><li>D</li><li>E</li><li>F</li><li>G</li><li>H</li><li>I</li><li>J</li><li>K</li><li>L</li><li>M</li><li>N</li><li>O</li><li>P</li><li>Q</li><li>R</li><li>S</li><li>T</li><li>U</li><li>V</li><li>W</li><li>X</li><li>Y</li><li>Z</li><li>#</li>');
        initials();

        $(".initials ul li").click(function(){
            var _this=$(this);
            var LetterHtml=_this.html();
            LetterBox.html(LetterHtml).fadeIn();

            Initials.css('background','rgba(145,145,145,0.6)');
            
            setTimeout(function(){
                Initials.css('background','rgba(145,145,145,0)');
                LetterBox.fadeOut();
            },1000);

            var _index = _this.index()
            if(_index==0){
                $('html,body').animate({scrollTop: '0px'}, 300);//點選第一個滾到頂部
            }else if(_index==27){
                var DefaultTop=$('#default').position().top;
                $('html,body').animate({scrollTop: DefaultTop+'px'}, 300);//點選最後一個滾到#號
            }else{
                var letter = _this.text();
                if($('#'+letter).length>0){
                    var LetterTop = $('#'+letter).position().top;
                    $('html,body').animate({scrollTop: LetterTop-45+'px'}, 300);
                }
            }
        })

        var windowHeight=$(window).height();
        var InitHeight=windowHeight-45;
        Initials.height(InitHeight);
        var LiHeight=InitHeight/28;
        Initials.find('li').height(LiHeight);
})

function initials() {//公眾號排序
    var SortList=$(".sort_list");
    var SortBox=$(".sort_box");
    SortList.sort(asc_sort).appendTo('.sort_box');//按首字母排序
    function asc_sort(a, b) {
        return makePy($(b).find('.num_name').text().charAt(0))[0].toUpperCase() < makePy($(a).find('.num_name').text().charAt(0))[0].toUpperCase() ? 1 : -1;
    }

    var initials = [];
    var num=0;
    SortList.each(function(i) {
        var initial = makePy($(this).find('.num_name').text().charAt(0))[0].toUpperCase();
        if(initial>='A'&&initial<='Z'){
            if (initials.indexOf(initial) === -1)
                initials.push(initial);
        }else{
            num++;
        }
        
    });

    $.each(initials, function(index, value) {//新增首字母標籤
        SortBox.append('<div class="sort_letter" id="'+ value +'">' + value + '</div>');
    });
    if(num!=0){SortBox.append('<div class="sort_letter" id="default">#</div>');}

    for (var i =0;i<SortList.length;i++) {//插入到對應的首字母后面
        var letter=makePy(SortList.eq(i).find('.num_name').text().charAt(0))[0].toUpperCase();
        switch(letter){
            case "A":
                $('#A').after(SortList.eq(i));
                break;
            case "B":
                $('#B').after(SortList.eq(i));
                break;
            case "C":
                $('#C').after(SortList.eq(i));
                break;
            case "D":
                $('#D').after(SortList.eq(i));
                break;
            case "E":
                $('#E').after(SortList.eq(i));
                break;
            case "F":
                $('#F').after(SortList.eq(i));
                break;
            case "G":
                $('#G').after(SortList.eq(i));
                break;
            case "H":
                $('#H').after(SortList.eq(i));
                break;
            case "I":
                $('#I').after(SortList.eq(i));
                break;
            case "J":
                $('#J').after(SortList.eq(i));
                break;
            case "K":
                $('#K').after(SortList.eq(i));
                break;
            case "L":
                $('#L').after(SortList.eq(i));
                break;
            case "M":
                $('#M').after(SortList.eq(i));
                break;
            case "O":
                $('#O').after(SortList.eq(i));
                break;
            case "P":
                $('#P').after(SortList.eq(i));
                break;
            case "Q":
                $('#Q').after(SortList.eq(i));
                break;
            case "R":
                $('#R').after(SortList.eq(i));
                break;
            case "S":
                $('#S').after(SortList.eq(i));
                break;
            case "T":
                $('#T').after(SortList.eq(i));
                break;
            case "U":
                $('#U').after(SortList.eq(i));
                break;
            case "V":
                $('#V').after(SortList.eq(i));
                break;
            case "W":
                $('#W').after(SortList.eq(i));
                break;
            case "X":
                $('#X').after(SortList.eq(i));
                break;
            case "Y":
                $('#Y').after(SortList.eq(i));
                break;
            case "Z":
                $('#Z').after(SortList.eq(i));
                break;
            default:
                $('#default').after(SortList.eq(i));
                break;
        }
    };
}

其他引的一些包,可以自行百度下載


css


fonts


js