|
|
/**
|
|
|
* 星潮教室首页
|
|
|
* @author: wsl<shuiling.wang@yoho.cn>
|
|
|
* @date: 2016/5/31
|
|
|
*/
|
|
|
|
|
|
var $ = require('yoho-jquery'),
|
|
|
Swiper = require('yoho-swiper'),
|
|
|
tip = require('../plugin/tip'),
|
|
|
lazyLoad = require('yoho-jquery-lazyload'),
|
|
|
ellipsis = require('yoho-mlellipsis'),
|
|
|
loading = require('../plugin/loading'),
|
|
|
PullRefresh = require('../plugin/pull-refresh');
|
|
|
|
|
|
var $window = $(window),
|
|
|
$starArticle = $('.star-article'),
|
|
|
$headTab = $('.head-tab'),
|
|
|
stopLoading = false,
|
|
|
avatarSwiper,
|
|
|
avatarSwiperClone,
|
|
|
getIndexHtml;
|
|
|
|
|
|
/*
|
|
|
$swiperView = $('.swiper-view'),
|
|
|
$viewImg = $('.view-img'),
|
|
|
$body = $('body'),
|
|
|
imgs = [],
|
|
|
allImgs = {};
|
|
|
|
|
|
var mySwiper;
|
|
|
*/
|
|
|
|
|
|
var avatarKey, bannerLen;
|
|
|
|
|
|
require('../common');
|
|
|
|
|
|
lazyLoad($('img.lazy'));
|
|
|
ellipsis.init();
|
|
|
|
|
|
$window.on('mousewheel', false);
|
|
|
|
|
|
// 限制标题字数
|
|
|
function txtLimit(dom, item1, item2) {
|
|
|
var $title = dom.find(item1),
|
|
|
$cont = dom.find(item2);
|
|
|
|
|
|
$title[0].mlellipsis(2);
|
|
|
$cont[0].mlellipsis(3);
|
|
|
}
|
|
|
|
|
|
// 设置默认头像
|
|
|
function setAvatar($userAvatar) {
|
|
|
var myImage = new Image(),
|
|
|
avatar = '';
|
|
|
|
|
|
// 部分老用户没有头像,显示默认头像
|
|
|
avatar = $userAvatar.data('avatar');
|
|
|
|
|
|
if (avatar) {
|
|
|
myImage.src = avatar;
|
|
|
}
|
|
|
|
|
|
myImage.onload = function() {
|
|
|
$userAvatar.css('background-image', 'url(' + avatar + ')');
|
|
|
};
|
|
|
}
|
|
|
|
|
|
function setIndexAction() {
|
|
|
var starIScroll;
|
|
|
|
|
|
var commonHeaderTop = $('#yoho-header').outerHeight(),
|
|
|
$loadingTip = $('.loading-tip'),
|
|
|
$avatarWrap = $('.avatar-wrap'),
|
|
|
avatarHeight = $('.avatar').height(),
|
|
|
infoTop = $('.star-info').css('margin-top');
|
|
|
|
|
|
// 下拉刷新,上拉加载
|
|
|
starIScroll = new PullRefresh('.star-wrap', {
|
|
|
height: $(window).height() - commonHeaderTop - avatarHeight - parseInt(infoTop) * 2,
|
|
|
pullDown: function() {
|
|
|
if (!stopLoading) {
|
|
|
stopLoading = true;
|
|
|
|
|
|
if (avatarSwiperClone) {
|
|
|
avatarSwiperClone.destroy(true, true);
|
|
|
avatarSwiperClone = '';
|
|
|
}
|
|
|
getIndexHtml();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
starIScroll.iScroll.on('scrollStart', function() {
|
|
|
// 下拉
|
|
|
if (this.directionY === -1) {
|
|
|
$headTab.slideDown();
|
|
|
$loadingTip.slideDown();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
starIScroll.iScroll.on('scroll', function() {
|
|
|
if (commonHeaderTop > $avatarWrap.offset().top) {
|
|
|
$('.avatar-clone').show();
|
|
|
|
|
|
if (!avatarSwiperClone) {
|
|
|
avatarSwiperClone = new Swiper('.avatar-0', {
|
|
|
loop: true,
|
|
|
initialSlide: $('.avatar-1').find('.swiper-slide-active').index(),
|
|
|
centeredSlides: true,
|
|
|
slidesPerView: 'auto',
|
|
|
loopedSlides: bannerLen,
|
|
|
spaceBetween: 10,
|
|
|
slidesOffsetBefore: -($('.swiper-num').width()),
|
|
|
watchSlidesProgress: true,
|
|
|
watchSlidesVisibility: true
|
|
|
});
|
|
|
|
|
|
avatarSwiperClone.params.control = avatarSwiper;
|
|
|
avatarSwiper.params.control = avatarSwiperClone;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (Math.abs(this.startY) < $('.banner-top').height() + avatarHeight + $('.head-tab').height()) {
|
|
|
$('.avatar-clone').hide();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
starIScroll.iScroll.on('scrollEnd', function() {
|
|
|
// 上滑
|
|
|
if (this.directionY === 1) {
|
|
|
$headTab.slideUp(1000);
|
|
|
}
|
|
|
|
|
|
$loadingTip.slideUp();
|
|
|
});
|
|
|
|
|
|
// 明星动态文章图片相关操作
|
|
|
/*
|
|
|
function articleImgAction(dom, key) {
|
|
|
var $articeImgs = dom.find('.artice-imgs'),
|
|
|
$li = $articeImgs.find('li'),
|
|
|
imgLen = $articeImgs.find('img').length,
|
|
|
addFlagDom = $li.eq(2);
|
|
|
|
|
|
var i;
|
|
|
|
|
|
imgs = [];
|
|
|
|
|
|
$li.each(function() {
|
|
|
imgs.push($(this).find('img').attr('src'));
|
|
|
});
|
|
|
|
|
|
allImgs[key] = imgs;
|
|
|
|
|
|
$li.on('click', function() {
|
|
|
for (i = 0; i < imgLen; i++) {
|
|
|
$swiperView.find('ul').append('<li class="swiper-slide">' +
|
|
|
'<img class="swiper-lazy" data-src="' + allImgs[key][i] + '">' +
|
|
|
'<div class="swiper-lazy-preloader"></div></li>');
|
|
|
}
|
|
|
setTimeout(function() {
|
|
|
mySwiper = new Swiper('.swiper-view', {
|
|
|
lazyLoading: true,
|
|
|
lazyLoadingInPrevNext: true,
|
|
|
slideElement: 'li'
|
|
|
});
|
|
|
|
|
|
$('.swiper-view li').on('click', function(e) {
|
|
|
if (e.target.nodeName === 'IMG') {
|
|
|
return;
|
|
|
}
|
|
|
$viewImg.hide();
|
|
|
$body.css({
|
|
|
overflow: 'auto'
|
|
|
});
|
|
|
$viewImg.find('li').remove();
|
|
|
mySwiper.destroy(false);
|
|
|
});
|
|
|
}, 100);
|
|
|
|
|
|
$viewImg.show();
|
|
|
|
|
|
$body.css({
|
|
|
overflow: 'hidden'
|
|
|
});
|
|
|
});
|
|
|
|
|
|
if (imgLen > 3 && addFlagDom.find('.img-size').length < 1) {
|
|
|
addFlagDom.append('<div class="img-size"><i class="pic-icon"></i>' + imgLen + '</div>');
|
|
|
}
|
|
|
}
|
|
|
*/
|
|
|
|
|
|
$('.avatar').each(function(key, item) {
|
|
|
$(item).addClass('avatar-' + key);
|
|
|
});
|
|
|
|
|
|
// banner swiper 初始化
|
|
|
if ($('.banner-swiper').find('li').length > 1) {
|
|
|
new Swiper('.banner-swiper', {
|
|
|
lazyLoading: true,
|
|
|
lazyLoadingInPrevNext: true,
|
|
|
loop: true,
|
|
|
autoplay: 3000,
|
|
|
autoplayDisableOnInteraction: false,
|
|
|
paginationClickable: true,
|
|
|
slideElement: 'li',
|
|
|
pagination: '.banner-top .pagination-inner'
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 明星头像 swiper 初始化
|
|
|
if (bannerLen > 1) {
|
|
|
avatarSwiper = new Swiper('.avatar-1', {
|
|
|
loop: true,
|
|
|
centeredSlides: true,
|
|
|
slidesPerView: 'auto',
|
|
|
loopedSlides: bannerLen,
|
|
|
spaceBetween: 10,
|
|
|
slidesOffsetBefore: -($('.swiper-num').width()),
|
|
|
watchSlidesProgress: true,
|
|
|
watchSlidesVisibility: true
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 明星动态头像左右滑动
|
|
|
if ($('.article-avatar-swiper').find('li').length > 1) {
|
|
|
new Swiper('.article-avatar-swiper', {
|
|
|
initialSlide: 0,
|
|
|
lazyLoading: true,
|
|
|
lazyLoadingInPrevNext: true,
|
|
|
loop: true,
|
|
|
autoplay: 5000
|
|
|
});
|
|
|
}
|
|
|
|
|
|
|
|
|
if ($('.star-info').find('li').length > 0) {
|
|
|
$starArticle.each(function(key, item) {
|
|
|
txtLimit($(item), '.article-title', 'p');
|
|
|
|
|
|
// articleImgAction($(item), key);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// 明星头像点击居中显示或跳转
|
|
|
$('.avatar-swiper li').on('click', function() {
|
|
|
if ($(this).hasClass('swiper-slide-active')) {
|
|
|
location.href = $(this).find('span').data('url');
|
|
|
} else {
|
|
|
avatarKey = $(this).index();
|
|
|
|
|
|
if (avatarKey >= (2 * bannerLen + 1)) {
|
|
|
avatarSwiperClone && avatarSwiperClone.slideTo(bannerLen + 1, 0);
|
|
|
avatarSwiper.slideTo(bannerLen + 1, 0);
|
|
|
} else if (avatarKey <= (bannerLen - 1)) {
|
|
|
avatarSwiperClone && avatarSwiperClone.slideTo(2 * bannerLen - 1, 0);
|
|
|
avatarSwiper.slideTo(2 * bannerLen - 1, 0);
|
|
|
} else {
|
|
|
avatarSwiperClone && avatarSwiperClone.slideTo(avatarKey, 0);
|
|
|
avatarSwiper.slideTo(avatarKey, 0);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
|
|
|
$('.rank-avatar').each(function(key, item) {
|
|
|
if ($(item).attr('data-avatar') !== '') {
|
|
|
setAvatar($(item));
|
|
|
}
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
getIndexHtml = function() {
|
|
|
var $starMain = $('.star-main');
|
|
|
|
|
|
loading.showLoadingMask();
|
|
|
$.ajax({
|
|
|
url: '/guang/star/getIndexHtml',
|
|
|
dataType: 'html',
|
|
|
success: function(data) {
|
|
|
stopLoading = false;
|
|
|
|
|
|
if (!data) {
|
|
|
stopLoading = true;
|
|
|
tip.show('没有更多内容了');
|
|
|
}
|
|
|
|
|
|
$starMain.html(data);
|
|
|
bannerLen = $('.avatar .swiper-slide').length;
|
|
|
|
|
|
if ($('.avatar-clone')) {
|
|
|
$('.avatar-clone').remove();
|
|
|
}
|
|
|
|
|
|
$('.avatar li').each(function() {
|
|
|
setAvatar($(this).find('span'));
|
|
|
});
|
|
|
|
|
|
$starMain.before($('.avatar-swiper').clone().addClass('avatar-clone').hide());
|
|
|
|
|
|
// 限制标题字数
|
|
|
$('.cont-area').each(function() {
|
|
|
txtLimit($(this), '.title', '.cont-txt');
|
|
|
});
|
|
|
|
|
|
loading.hideLoadingMask();
|
|
|
lazyLoad($('img.lazy'));
|
|
|
|
|
|
setTimeout(function() {
|
|
|
setIndexAction();
|
|
|
}, 100);
|
|
|
|
|
|
},
|
|
|
error: function() {
|
|
|
tip.show('网络断开连接了~');
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
|
|
|
getIndexHtml(); |
...
|
...
|
|