Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
yoho-blk
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
1
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
biao
9 years ago
Commit
f69b82108d247b3261b649e0e46c9e8fc6417a41
1 parent
fe2b0069
add slider.js
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
173 additions
and
0 deletions
public/js/plugins/slider.js
public/js/plugins/slider.js
0 → 100644
View file @
f69b821
/**
* 首页banner轮播
* @author: liuyue(yue.liu@yoho.cn)
* @date: 2015/12/04
*/
var
$
=
require
(
'yoho-jquery'
),
lazyLoad
=
require
(
'yoho-jquery-lazyload'
);
(
function
()
{
var
Slider
=
function
(
element
,
options
)
{
this
.
$element
=
$
(
element
);
this
.
options
=
$
.
extend
({},
$
.
fn
.
slider
.
defaults
,
options
);
this
.
bigItem
=
this
.
$element
.
find
(
'.slide-wrapper'
).
find
(
'li'
);
this
.
smallItem
=
null
;
this
.
len
=
this
.
bigItem
.
size
();
this
.
index
=
0
;
this
.
timer
=
null
;
this
.
init
();
};
Slider
.
prototype
=
{
init
:
function
()
{
if
(
!
this
.
$element
)
{
return
;
}
if
(
this
.
len
<=
1
)
{
lazyLoad
(
this
.
$element
.
find
(
'img.lazy'
));
return
;
}
if
(
this
.
options
.
pagination
)
{
this
.
smallItem
=
$
(
this
.
options
.
pagination
).
find
(
'li'
);
}
else
{
this
.
_createPage
();
}
if
(
this
.
options
.
orient
)
{
this
.
_createOrient
();
}
this
.
_slideShow
();
this
.
_bindEvent
();
this
.
_autoplay
();
},
_createOrient
:
function
()
{
var
orientHtml
=
'<div class="slide-switch">'
+
'<a class="prev" href="javascript:;"><span class="iconfont"></span></a>'
+
'<a class="next" href="javascript:;"><span class="iconfont"></span></a>'
+
'</div>'
;
if
(
this
.
$element
.
find
(
'.slide-switch'
).
length
>
0
)
{
return
;
}
this
.
$element
.
append
(
orientHtml
);
},
_createPage
:
function
()
{
var
pageHtml
=
'<div class="slide-pagination"><div class="slide-pagination-inner">'
+
'<div class="slide-shade"></div><div class="slide-pagination-last">'
,
i
=
0
;
if
(
this
.
len
<=
1
)
{
return
;
}
for
(
i
=
0
;
i
<
this
.
len
;
i
++
)
{
pageHtml
+=
'<span></span>'
;
}
pageHtml
+=
'</div></div></div>'
;
this
.
$element
.
append
(
$
(
pageHtml
));
this
.
smallItem
=
this
.
$element
.
find
(
'.slide-pagination-inner span'
);
},
_bindEvent
:
function
()
{
var
that
=
this
;
this
.
$element
.
find
(
'.slide-switch'
).
on
(
'click'
,
'.next'
,
function
()
{
that
.
_nextSlide
();
clearInterval
(
that
.
timer
);
that
.
timer
=
setInterval
(
function
()
{
that
.
_nextSlide
();
},
that
.
options
.
time
);
}).
on
(
'click'
,
'.prev'
,
function
()
{
that
.
_prevSlide
();
clearInterval
(
that
.
timer
);
that
.
timer
=
setInterval
(
function
()
{
that
.
_nextSlide
();
},
that
.
options
.
time
);
});
this
.
smallItem
.
on
(
'mouseenter'
,
function
()
{
that
.
index
=
$
(
this
).
index
();
clearInterval
(
that
.
timer
);
that
.
_slideShow
();
}).
on
(
'mouseleave'
,
function
()
{
that
.
_autoplay
();
});
this
.
$element
.
on
(
'mouseenter'
,
function
()
{
$
(
this
).
find
(
'.slide-switch'
).
addClass
(
'show'
);
}).
on
(
'mouseleave'
,
function
()
{
$
(
this
).
find
(
'.slide-switch'
).
removeClass
(
'show'
);
});
},
_nextSlide
:
function
()
{
if
(
this
.
index
===
this
.
len
-
1
)
{
this
.
index
=
0
;
}
else
{
this
.
index
++
;
}
this
.
_slideShow
();
},
_prevSlide
:
function
()
{
if
(
this
.
index
===
0
)
{
this
.
index
=
this
.
len
-
1
;
}
else
{
this
.
index
--
;
}
this
.
_slideShow
();
},
_slideShow
:
function
()
{
var
$img
=
this
.
bigItem
.
eq
(
this
.
index
).
find
(
'img.lazy'
);
// 未加载图片的及时显示
if
(
$img
.
attr
(
'src'
)
!==
$img
.
data
(
'original'
))
{
lazyLoad
(
$img
,
{
event
:
'sporty'
});
$img
.
trigger
(
'sporty'
);
}
this
.
smallItem
.
eq
(
this
.
index
).
addClass
(
'focus'
).
siblings
().
removeClass
(
'focus'
);
this
.
bigItem
.
eq
(
this
.
index
).
show
().
stop
().
animate
({
opacity
:
1
},
function
()
{
// 修正IE下切换时文字会重叠的问题
$
(
this
).
find
(
'.slide-tips > p'
).
removeClass
(
'hide'
);
}).
siblings
().
stop
().
animate
({
opacity
:
0
},
function
()
{
$
(
this
).
hide
().
find
(
'.slide-tips > p'
).
addClass
(
'hide'
);
});
},
_autoplay
:
function
()
{
var
that
=
this
;
clearInterval
(
this
.
timer
);
this
.
timer
=
setInterval
(
function
()
{
that
.
_nextSlide
();
},
this
.
options
.
time
);
}
};
$
.
fn
.
slider
=
function
(
option
)
{
return
this
.
each
(
function
()
{
var
$this
=
$
(
this
),
data
=
$this
.
data
(
'Slider'
),
options
=
typeof
option
===
'object'
&&
option
;
if
(
!
data
)
{
$this
.
data
(
'Slider'
,
(
data
=
new
Slider
(
this
,
options
)));
}
if
(
typeof
option
===
'string'
)
{
data
[
option
]();
}
});
};
$
.
fn
.
slider
.
Constructor
=
Slider
;
$
.
fn
.
slider
.
defaults
=
{
time
:
5000
,
orient
:
true
,
// 左右切换箭头的显示
pagination
:
null
};
}(
$
));
...
...
Please
register
or
login
to post a comment