选项卡
<div class="wrapper">
<div class="search">
<input type="text"> Male:
<input type="radio" class="btn mBtn" name="sex"></button>
Female:<input type="radio" class="btn fBtn" name="sex"></button>
All:<input type="radio" checked='checked' class='btn aBtn' name="sex"></input>
</div>
<div class="friendList">
<ul>
<!-- <li>
<img src="./src/img/1.png">
<p class="name">王港</p>
<p class="des">颈椎不好</p>
</li>
<li>
<img src="./src/img/2.png">
<p class="name">刘金雷</p>
<p class="des">你没有见过陌生的脸</p>
</li> -->
</ul>
var personArr = [{name: '王港', src: './src/img/1.png',des: '颈椎不好',sex: 'm'},
{name: '刘莹',src: './src/img/5.png',des: '我是谁',sex: 'f'},
{name: '王秀莹',src: './src/img/4.png',des: '我很好看',sex: 'f'},
{name: '刘飞翔',src: './src/img/2.png',des: '瓜皮刘',sex: 'm'},
{name: '刘金雷',src: './src/img/3.png',des: '你没有见过陌生的脸',sex: 'm'}];
var oUl = document.getElementsByTagName('ul')[0];
var store = {
text: '',
sex: 'btn aBtn'
}
function renderList(arr) {
var htmlStr = '';
arr.forEach(function(ele, index) {
htmlStr +=
'<li><img src="' + ele.src + '"/><p class="name">'
+ ele.name + '</p><p class="des">' + ele.des + '</p></li>';
});
oUl.innerHTML = htmlStr;
}
renderList(personArr);
var oInp = document.getElementsByTagName('input')[0];
oInp.oninput = function() { // 注册键入事件
store.text = this.value;
renderList(lastFilter(personArr));
}
function filterByText(filterText, arr) { // 参数:键入文本,信息数组
if (!filterText) {
return arr;
} else {
return arr.filter(function(ele, index) {
return ele.name.indexOf(filterText) != -1;
});}}
var oRadioArr = Array.prototype.slice.call(document.getElementsByClassName('btn'), 0);
console.log(oRadioArr);
oRadioArr.forEach(function(ele, index) {
ele.onclick = function() {
store.sex = this.className;
renderList(lastFilter(personArr));
}
});
function filterBySex(sexStr, arr) {
if (sexStr == 'btn aBtn') {
return arr;
} else {
return arr.filter(function(ele, index) {
if (sexStr.indexOf(ele.sex) != -1) {
return true;
}})}};
function combineFilterFunc(obj) {
var filterFuncObj = obj;
console.log(filterFuncObj);
return function(arr) {
var lastArr = arr;
console.log(lastArr);
for (var prop in filterFuncObj) {
lastArr = filterFuncObj[prop](store[prop], lastArr);
}
return lastArr;
};}
var lastFilter = combineFilterFunc({
text: filterByText,
sex: filterBySex
});
选项卡
<style>
* {
padding: 0px;
margin: 0px;
text-decoration: none;
}
.wrapper {
padding: 10px 15px;
border: 2px solid #ccc;
width: 500px;
border-radius: 6px;
margin: 100px auto 0px auto;
}
.wrapper .part {
padding-bottom: 10px;
margin-bottom: 20px;
border-bottom: 1px solid #ccc;
}
.wrapper .part span {
color: #bbbbbb;
margin-right: 10px;
}
.wrapper .part a {
padding: 4px 6px;
margin-right: 2px;
}
.wrapper .part .active {
color: #fff;
background-color: #f40;
}
.wrapper .content .box {
height: 200px;
display: none;
text-align: center;
font-size: 25px;
font-weight: 700;
color: orange;
}
.wrapper .content .active {
display: block;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="part">
<span>地区:</span>
<a href="#" class="active">大陆</a>
<a href="#">日韩</a>
<a href="#">香港</a>
<a href="#">欧美</a>
</div>
<div class="content">
<div class="box active">
胡歌
</div>
<div class="box">
小栗旬
</div>
<div class="box">
邓紫棋
</div>
<div class="box">
杰森斯坦森
</div>
</div>
</div>
<script>
var oBtnArray = document.getElementsByTagName('a');
var oDivArray = document.getElementsByClassName('box');
var lastActiveBtn = oBtnArray[0];
var lastActiveDiv = oDivArray[0];
for (var i = 0; i < oBtnArray.length; i++) {
(function(_Index) {
oBtnArray[_Index].onclick = function() {
changeBtnStatus(_Index);
changeDivStatus(_Index);
}
})(i)
}
function changeBtnStatus(index) {
lastActiveBtn.className = '';
oBtnArray[index].className = 'active';
lastActiveBtn = oBtnArray[index];
}
function changeDivStatus(index) {
lastActiveDiv.className = 'box';
oDivArray[index].className = 'box active';
lastActiveDiv = oDivArray[index];
}
</script>
轮播图
//
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="./index.css">
</head>
<body>
<div class="wrapper">
<ul>
<li><img src="./img/cat_furry_gray_120328_3840x2400.jpg" alt=""></li>
<li><img src="./img/dog_muzzle_eyes_lie_95312_3840x2400.jpg" alt=""></li>
<li><img src="./img/flamingos_birds_colorful_feathers_120420_3840x2400.jpg" alt="./img/flamingos_birds_colorful_feathers_120420_3840x2400.jpg"></li>
<li><img src="./img/pug_dog_muzzle_look_scarf_120435_3840x2400.jpg" alt="./img/pug_dog_muzzle_look_scarf_120435_3840x2400.jpg"></li>
<li><img src="./img/cat_furry_gray_120328_3840x2400.jpg" alt="./img/cat_furry_gray_120328_3840x2400.jpg"></li>
</ul>
<div class="btn leftBtn"><</div>
<div class="btn rightBtn">></div>
<div class="sliderIndex">
<span class="active"></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
<script src="move.js"></script>
<script src="./index.js"></script>
</body>
</html>
//
//
var oUl = document.getElementsByTagName("ul")[0],
oLeftBtn = document.getElementsByClassName("leftBtn")[0],
oRightBtn = document.getElementsByClassName("rightBtn")[0],
oSpanArray = document.getElementsByClassName('sliderIndex')[0].getElementsByTagName('span'),
timer = null,
moveDis = oUl.children[0].offsetWidth,
num = oUl.children.length - 1,
index = 0,
locked = true;
for(var i = 0; i < oSpanArray.length; i++){
(function(_index){
oSpanArray[_index].onclick = function (){
locked = false;
clearTimeout(timer);
index = _index;
startMove(oUl, {left: - (_index * moveDis) },function (){
changeIndex(index);
locked = true;
timer = setInterval(function(){
autoMove('->');
},1500);
});
}
})(i);
}
oLeftBtn.onclick = function(){
autoMove('<-');
}
oRightBtn.onclick = function(){
autoMove('->');
}
function autoMove(direction){
if(locked){
locked = false;
clearTimeout(timer);
if(direction === '->'){
index++;
startMove(oUl, {left: oUl.offsetLeft - moveDis}, function(){
if(oUl.offsetLeft === -moveDis * num){
oUl.style.left = '0px';
index = 0;
}
locked = true;
changeIndex(index);
timer = setTimeout(function(){
autoMove('->');
},1500);
});
}else{
if(oUl.offsetLeft === 0){
oUl.style.left = -moveDis * num + 'px';
index = 4;
}
index
startMove(oUl,{left:oUl.offsetLeft + moveDis}, function(){
locked = true;
changeIndex(index);
timer = setTimeout(function(){
autoMove('->');
},1500);
})
}
}
}
function changeIndex(index){
for(var i = 0; i < oSpanArray.length; i++){
oSpanArray[i].className = '';
}
oSpanArray[index].className = 'active';
}
timer = setInterval(function(){
autoMove('->');
},1500);
//
*{
padding:0px;
margin:0px;
}
.wrapper{
position: relative;
width: 960px;
height: 600px;
margin: 100px auto 0px;
/* border: 1px solid black; */
overflow: hidden;
}
.wrapper ul{
position: absolute;
width: 4800px;
left: 0px;
list-style: none;
}
.wrapper ul::after{
content:'';
clear: both;
display: block;
}
.wrapper ul li{
width:960px;
height:600px;
float: left;
}
.wrapper ul li img{
width:100%;
height: 100%;
}
.wrapper .btn{
position: absolute;
top: 50%;
margin-top: -55px;
width: 80px;
height: 120px;
background-color: #000;
color: beige;
font-size: 80px;
line-height: 120px;
text-align: center;
opacity: 0.2;
cursor: pointer;
}
.wrapper .btn:hover{
opacity: 0.5;
}
.wrapper .leftBtn{
left: 10px;
}
.wrapper .rightBtn{
right:10px;
}
.wrapper .sliderIndex{
position: absolute;
bottom: 0px;
width: 100%;
}
.wrapper .sliderIndex{
position: absolute;
bottom: 17px;
width: 100%;
text-align: center;
}
.wrapper .sliderIndex span{
display: inline-block;
width: 15px;
height: 15px;
border-radius: 50%;
background-color: #ccc;
margin-right: 30px;
}
.wrapper .sliderIndex span.active{
background-color: rgb(72, 137, 223);
}
//
function startMove(obj, targetObj, cb) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var bStop = true;
for (var attr in targetObj) {
if (attr != 'opacity') {
iCur = parseInt(getStyle(obj, attr));
} else {
iCur = parseFloat(getStyle(obj, attr)) * 100;
}
iSpeed = (targetObj[attr] - iCur) / 8;
iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
if (attr == 'opacity') {
obj.style.opacity = (iCur + iSpeed) / 100;
} else {
obj.style[attr] = iCur + iSpeed + 'px';
}
if (targetObj[attr] !== iCur) {
bStop = false;
}
}
if (bStop) {
clearInterval(obj.timer);
(typeof cb) === 'function' && cb.apply(obj);
}
}, 30);
}
function getStyle(obj, attr) {
if (window.getComputedStyle) {
return window.getComputedStyle(obj, null)[attr];
} else {
return obj.currentStyle[attr];
}
}