Authored by weiqingting

xuesheng yingxiao

**/css/**/*.css
**/dist/**/*.css
**/scss/activity/_aslider.css
... ...
'use strict';
const serviceApi = global.yoho.ServiceAPI;
const api = global.yoho.API;
const helpers = global.yoho.helpers;
const getResource = code => {
return serviceApi.get('operations/api/v5/resource/get', {
content_code: code
});
};
const vip = (limit) => {
return api.get('', {
method: 'app.student.vip',
limit: limit || 60
});
};
const verifiedStudentTotal = () => {
return api.get('', {
method: 'app.student.verifiedStudentTotal'
});
};
const getProvince = () => {
return api.get('', {
method: 'app.studentMarket.getAddressList'
});
};
const getSchool = code => {
return api.get('', {
method: 'app.studentMarket.getSchoolInfoList',
areaCode: code
});
};
const verifyStudent = (uid, collegename, educationdegree, enrollmentyear, token) => {
return api.get('', {
method: 'app.student.verifyStudent',
uid: uid,
client_type: 'h5',
college_name: collegename,
enrollment_year: enrollmentyear,
education_degree: educationdegree,
token: token
});
};
const verifyIdentity = (uid, certno, name, pageurl) => {
return api.get('', {
method: 'app.student.verifyIdentity',
uid: uid,
client_type: 'h5',
cert_no: certno,
name: name,
page_url: pageurl
});
};
const getUser = (uid) => {
if (!uid) {
return {};
}
return api.get('', {
method: 'app.passport.profile',
uid: uid
});
};
exports.index = (req, res, next) => {
let code = req.query.code || 'a83b7d55324fb65f96c1f85a3387ebd8';
let uid = req.user.uid || 8041246;
Promise.all([getResource(code), vip(), getUser(uid)]).then(datas => {
let coupons,
activities,
banner,
icons;
datas[0].data.forEach((item) => {
switch (item.template_name) {
case 'getCoupon':
coupons = item;
break;
case 'image_list':
activities = item;
break;
case 'focus':
banner = item;
break;
case 'recommend_content_five':
icons = item;
break;
default:
icons = item;
break;
}
});
// console.log(JSON.stringify(datas[1].data.product_list,null,4));
datas[1].data.product_list = datas[1].data.product_list.map(function(value) {
value.goodsId = value.goods_list[0].goods_id;
value.url = helpers.urlFormat(`/product/pro_${value.product_id}_
${value.goodsId}/${value.cn_alphabet}.html`);
return value;
});
res.render('student', {
hashead: false,
goods: datas[1].data.product_list,
banner: banner,
icons: icons,
coupons: coupons,
activities: activities,
isLogin: datas[2].data && datas[2].data.vip_info.is_student ? true : false
});
}).catch(next);
};
exports.province = (req, res, next) => {
getProvince().then((result) => {
res.json(result);
}).catch(next);
};
exports.register = (req, res, next) => {
let years = [],
educations = ['专科', '本科', '硕士', '博士'];
for (let i = 0; i < 8; i++) {
years.push((new Date()).getFullYear() - i);
}
Promise.all([verifiedStudentTotal()]).then((arr) => {
res.render('register', {
hashead: false,
count: arr[0].data,
educations: educations,
educationsStr: JSON.stringify(educations),
years: years,
yearsStr: JSON.stringify(years),
module: 'activity',
page: 'register',
});
}).catch(next);
};
exports.school = (req, res, next) => {
let code = req.query.code;
getSchool(code).then((result) => {
res.json(result);
}).catch(next);
};
exports.verifyidentity = (req, res, next) => {
// let uid=req.user.id;
let params = req.body;
let url = 'http://localhost:6001/activity/student/verify?college_name=' + params.college_name + '&education_degree=' + params.education_degree + '&enrollment_year=' + params.enrollment_year;
let uid = req.user.uid || 8041246;
verifyIdentity(uid, params.cert_no, params.name, url).then((result) => {
console.log(result);
res.json(result);
}).catch(next);
};
exports.verifystudent = (req, res, next) => {
let params = req.query;
let uid = req.user.uid || 8041246;
Promise.all([verifiedStudentTotal(), vip(),
verifyStudent(uid, params.college_name, params.education_degree, params.enrollment_year, params.token)])
.then((datas) => {
let isverify = false;
if (datas[2].code === 200) {
isverify = true;
}
datas[1].data.product_list = datas[1].data.product_list.map(function(value) {
value.goodsId = value.goods_list[0].goods_id;
value.url = helpers.urlFormat(`/product/pro_${value.product_id}_
${value.goodsId}/${value.cn_alphabet}.html`);
return value;
});
res.render('verify', {
count: datas[0].data,
goods: datas[1].data.product_list,
isverify: isverify
});
}).catch(next);
};
exports.detail = (req, res) => {
res.render('detail', {
hashead: false
});
};
... ...
... ... @@ -11,6 +11,7 @@ const cRoot = './controllers';
const coupon = require(`${cRoot}/coupon`);
const wechat = require(`${cRoot}/wechat`);
const student = require(`${cRoot}/student`);
// routers
... ... @@ -22,4 +23,17 @@ router.get('/coupon/verify', coupon.verify);
router.get('/wechat/share', wechat.wechatShare);
router.get('/student', student.index);
router.get('/student/register', student.register);
router.get('/student/province', student.province);
router.get('/student/school', student.school);
router.post('/student/join', student.verifyidentity);
router.get('/student/verify', student.verifystudent);
router.get('/student/detail', student.detail);
module.exports = router;
... ...
<header class="yoho-header">
<a href="javascript:history.go(-1);" class="iconfont nav-back close"></a>
<p class="nav-title">认证协议</p>
</header>
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
<section class='s-text'>
<h6>认证资格说明</h6>
<p>1、全日制大学及硕士博士研究生</p>
<p>2、学校在可选范围内,有部分学校可能暂未收录,后期会尽快添加</p>
<p>3、每个学号只能认证一个有货账户</p>
<h6>特权详细说明</h6>
<p>1、学生购买指定商品,可享受9折优惠,与vip折扣不可同时享受,但取低</p>
<p>2、每满¥100 返100有货币</p>
<p>3、学生所在学校购物金额当月累计最高,可获得3个免单名额,每月抽奖</p>
<p>4、不定期学生专享活动</p>
</section>
</div>
</div>
... ...
{{#if hashead}}
<header class="yoho-header">
<a href="javascript:history.go(-1);" class="iconfont nav-back"></a>
<p class="nav-title">认证信息填写</p>
</header>
{{/if}}
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
<section class="s-feild s-marbot">
全国已有<span class="s-red">{{count}}</span>位学生完成认证
</section>
<div class="s-form">
<section class="s-feild">
<label>真实姓名</label><input type="text" name="tb_name" id="tb_name" value="魏青庭">
</section>
<section class="s-feild">
<label>身份证号</label><input type="text" id="tb_cert_no" name="tb_cert_no" value="32012319881006485X">
</section>
<section class="s-feild">
<label>学校省份</label><span id="s-province-tb"></span><span class="s-select iconfont" data-aslider-in="province|fade">&#xe604;</span>
</section>
<section class="s-feild">
<label>学校名称</label><span id="s-school-tb"></span><span id='s-toast-school' class="s-select iconfont" data-aslider-in="school|fade">&#xe604;</span>
</section>
<section class="s-feild">
<label>当前学历</label><span id="s-education-tb"></span><a href='http://172.16.6.159:6001/activity/student/register?openby:yohobuy={"action":"go.picker","type":"1","params":{"title":"选择学历","list":{{educationsStr}} }}'><span class="s-select iconfont">&#xe604;</span></a>
</section>
<section class="s-feild">
<label>入学年份</label><span id="s-year-tb"></span><a href='http://172.16.6.159:6001/activity/student/register?openby:yohobuy={"action":"go.picker","type":"2","params":{"title":"选择入学时间","list":{{yearsStr}} }}'><span class="s-select iconfont">&#xe604;</span></a>
</section>
</div>
<div class="s-footer">
<section class="s-shenming">
<input type="checkbox" name="tb-is-read" id="tb-is-read">
同意<span class="s-blue" data-aslider-in="xieyi|fade">Yoho!Buy有货认证协议</span>
</section>
<a class="s-submit" href="javascript:void(0);">提交认证</a>
</div>
</div>
</div>
<article class="aslider" data-aslider="province">
<section class="asilder_wrapper close">
<header class="yoho-header">
<a href="javascript:void(0);" class="iconfont nav-back close"></a>
<p class="nav-title">选择所在省份</p>
</header>
<div class="slider">
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
<section class='s-search'>
<div class='s-seach-tip'><span class="iconfont search-icon empty">&#xe60f;</span>搜素省份</div>
<input id='s-search-provinces' class='s-input-search'>
</section>
<div class='s-items' id='s-provinces'>
</div>
</div>
</div>
</div>
<div class='s-group-zimu'></div>
</section>
</article>
<article class="aslider" data-aslider="school">
<section class="asilder_wrapper close">
<header class="yoho-header">
<a href="javascript:void(0);" class="iconfont nav-back close"></a>
<p class="nav-title">选择所在学校</p>
</header>
<div class="slider">
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
<section class='s-search'>
<input id='s-search-school' class='s-input-search' placeholder='搜素学校'>
</section>
<div class='s-items' id='s-school'>
</div>
</div>
</div>
</div>
<div class='s-group-zimu'></div>
</section>
</article>
<article class="aslider" data-aslider="education">
<section class="asilder_wrapper close">
<div class="slider">
<header class="yoho-header">
<a href="javascript:void(0);" class="iconfont nav-back close"></a>
<p class="nav-title">选择学历</p>
</header>
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
<div class='s-items' id='s-education'>
{{#each educations}}
<div class='s-item close'>
{{this}}
</div>
{{/each}}
</div>
</div>
</div>
</div>
</section>
</article>
<article class="aslider" data-aslider="year">
<section class="asilder_wrapper close">
<div class="slider">
<header class="yoho-header">
<a href="javascript:void(0);" class="iconfont nav-back close"></a>
<p class="nav-title">选择学历</p>
</header>
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
<div class='s-items' id='s-year'>
{{#each years}}
<div class='s-item close'>
{{this}}
</div>
{{/each}}
</div>
</div>
</div>
</div>
</section>
</article>
<article class="aslider" data-aslider="xieyi">
<section class="asilder_wrapper close">
<div class="slider">
<header class="yoho-header">
<a href="javascript:void(0);" class="iconfont nav-back close"></a>
<p class="nav-title">认证协议</p>
</header>
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
<section class='s-text'>
<h6>认证资格说明</h6>
<p>1、全日制大学及硕士博士研究生</p>
<p>2、学校在可选范围内,有部分学校可能暂未收录,后期会尽快添加</p>
<p>3、每个学号只能认证一个有货账户</p>
</section>
</div>
</div>
</div>
</section>
</article>
... ...
<header class="yoho-header">
<a href="javascript:history.go(-1);" class="iconfont nav-back"></a>
<p class="nav-title">有货学生专享优惠</p>
</header>
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
{{! 头部banner}}
{{#banner}}
{{> resources/banner-top}}
{{/banner}}
{{#icons}}
<section class='s-section clearfix'>
<h1>学生权益<a class='more' href='//m.yohobuy.com/activity/student/detail'>更多权益</a></h1>
<div class='s-content'>
{{#each data.list}}
<div class='s-section'>
<a href="{{url}}">
<img src='{{image src 357 174}}' title="{{title}}">
</a>
</div>
{{/each}}
</div>
</section>
{{/icons}}
{{#coupons}}
<section class='s-section clearfix'>
<h1>领卷中心<a class='more'>...</a></h1>
<div class='s-coupon-contain'>
{{#each data}}
<div class="coupon-floor" coupon-id="{{couponID}}">
<div class="floor-main" style="background-image: url({{image image.src 0 0}});">
<a href="{{url}}" class="main-left"></a>
<div class="main-right-receive">
<span class="on-receive"></span>
</div>
<a href="{{url}}" class="main-right-use" style="display: none">
<span class="received"></span>
</a>
</div>
</div>
{{/each}}
</div>
</section>
{{/coupons}}
{{#activities}}
<section class='s-section clearfix'>
<h1>学生专属活动</h1>
{{#each data.list}}
<a class='s-activity' href="{{url}}">
<img src='{{image src 750 234}}' title='{{title}}'>
</a>
{{/each}}
</section>
{{/activities}}
<section class='s-section clearfix'>
<h1>学生专享专区</h1>
<div class='goods-list clearfix'>
{{#each goods}}
<div class="good-info">
<div class="tag-container clearfix">
{{# tags}}
{{# isNew}}
<p class="good-tag new-tag">NEW</p>
{{/ isNew}}
{{# isAdvance}}
<p class="good-tag renew-tag">再到着</p>
{{/ isAdvance}}
{{# isDiscount}}
<p class="good-tag sale-tag">SALE</p>
{{/ isDiscount}}
{{# isYohoood}}
<p class="good-tag running-man-tag">跑男同款</p>
{{/ isYohoood}}
{{# isLimited}}
<p class="good-tag limit-tag">限量商品</p>
{{/ isLimited}}
{{/ tags}}
</div>
<div class="good-detail-img">
<a class="good-thumb" href="{{url}}">
<img class="lazy" data-original="{{image default_images 235 314}}">
</a>
</div>
<div class="good-detail-text">
<div class="name">
<a href="{{url}}">{{product_name}}</a>
</div>
<div class="price">
<span class="sale-price">¥{{round sales_price}} <i class='s-biaoqian'>学生价</i></span>
<p>
<span class="market-price">¥{{round market_price}}</span>
</p>
</div>
</div>
</div>
{{/each}}
</div>
<a class='s-more' href='//m.yohobuy.com/activity/student/verify'>查看更多</a>
</section>
{{#unless isLogin}}
<div class='s-layout'>
快来认证吧,认证通过即可享受专属优惠!
<a class='s-renzhen' href='//m.yohobuy.com/activity/student/register'>立即认证</a>
</div>
{{/unless}}
</div>
</div>
... ...
<header class="yoho-header">
<a href="javascript:history.go(-1);" class="iconfont nav-back"></a>
<p class="nav-title">学生身份验证</p>
</header>
<div class="mobile-container">
<div class="mobile-wrap yoho-page student">
{{#if isverify}}
<section class='s-section clearfix'>
<div class='s-verify-img s-verify-success'></div>
<p class='s-verify-title'>认证成功!100有货币已放入您的账户</p>
<p class='s-verify-txt'>您是第<i class='red'>{{count}}</i>位认证的学生</p>
</section>
{{else}}
<section class='s-section clearfix'>
<div class='s-verify-img s-verify-fail'></div>
<p class='s-verify-title'>太遗憾了,你的学校信息未通审核</p>
<p class='s-verify-txt'>你可以<a class='red' href='/activity/student/register'>重新验证 ></a></p>
</section>
{{/if}}
<section class='s-section clearfix'>
<h1>学生专享专区</h1>
<div class='goods-list clearfix'>
{{#each goods}}
<div class="good-info">
<div class="tag-container clearfix">
{{# tags}}
{{# isNew}}
<p class="good-tag new-tag">NEW</p>
{{/ isNew}}
{{# isAdvance}}
<p class="good-tag renew-tag">再到着</p>
{{/ isAdvance}}
{{# isDiscount}}
<p class="good-tag sale-tag">SALE</p>
{{/ isDiscount}}
{{# isYohoood}}
<p class="good-tag running-man-tag">跑男同款</p>
{{/ isYohoood}}
{{# isLimited}}
<p class="good-tag limit-tag">限量商品</p>
{{/ isLimited}}
{{/ tags}}
</div>
<div class="good-detail-img">
<a class="good-thumb" href="{{url}}">
<img class="lazy" data-original="{{image default_images 235 314}}">
</a>
</div>
<div class="good-detail-text">
<div class="name">
<a href="{{url}}">{{product_name}}</a>
</div>
<div class="price">
<span class="sale-price">¥{{round sales_price}}</span>
<p>
<span class="market-price">¥{{round market_price}}</span>
</p>
</div>
</div>
</div>
{{/each}}
</div>
<div class='s-more'>查看更多</div>
</section>
</div>
</div>
... ...
... ... @@ -18,8 +18,8 @@ module.exports = {
// api: 'http://devapi.yoho.cn:58078/',
// service: 'http://devservice.yoho.cn:58077/'
api: 'http://testapi.yoho.cn:28078/',
service: 'http://testservice.yoho.cn:28077/'
api: 'http://api.yoho.cn/',
service: 'http://service.yoho.cn/'
},
subDomains: {
host: '.m.yohobuy.com',
... ... @@ -34,9 +34,9 @@ module.exports = {
useOneapm: false,
useCache: false,
memcache: {
master: ['192.168.102.222:12111'],
slave: ['192.168.102.222:12111'],
session: ['192.168.102.222:12111'],
master: ['192.168.102.205:12111'],
slave: ['192.168.102.205:12111'],
session: ['192.168.102.205:12111'],
timeout: 1000,
retries: 0
},
... ...
... ... @@ -18,7 +18,7 @@
(function(d,c){var e=d.documentElement,a="orientationchange" in window?"orientationchange":"resize",b=function(){var f=e.clientWidth;if(!f){return}if(f>=640){e.style.fontSize="40px"}else{e.style.fontSize=40*(f/640)+"px"}};if(!d.addEventListener){return}b();c.addEventListener(a,b,false);d.addEventListener("DOMContentLoaded",b,false)})(document,window);
</script>
{{#if devEnv}}
<link rel="stylesheet" href="//localhost:5001/css/index.css">
<link rel="stylesheet" href="//172.16.6.159:5001/css/index.css">
{{^}}
<link rel="stylesheet" href="//cdn.yoho.cn/m-yohobuy-node/{{version}}/index.css">
{{/if}}
... ... @@ -41,8 +41,8 @@
<script type="text/javascript" src="//res.wx.qq.com/open/js/jweixin-1.1.0.js"></script>
{{/wechatShare}}
{{#if devEnv}}
<script src="//localhost:5001/libs.js"></script>
<script src="//localhost:5001/{{module}}.{{page}}.js"></script>
<script src="//172.16.6.159:5001/libs.js"></script>
<script src="//172.16.6.159:5001/{{module}}.{{page}}.js"></script>
{{^}}
<script src="//cdn.yoho.cn/m-yohobuy-node/{{version}}/libs.js"></script>
<script src="//cdn.yoho.cn/m-yohobuy-node/{{version}}/{{module}}.{{page}}.js"></script>
... ...
... ... @@ -88,7 +88,7 @@
"precss": "^1.4.0",
"rewire": "^2.5.2",
"shelljs": "^0.7.0",
"stylelint": "^6.9.0",
"stylelint": "^7.1.0",
"stylelint-config-yoho": "^1.2.3",
"webpack": "^1.13.1",
"webpack-dev-server": "^1.14.1",
... ...

29.7 KB | W: 0px | H: 0px

37.3 KB | W: 0px | H: 0px

  • 2-up
  • Swipe
  • Onion skin
/*eslint-disable*/
var $ = require('yoho-jquery');
(function ($, undefined) {
var prefix = '', eventPrefix,
vendors = {Webkit: 'webkit', Moz: '', O: 'o'},
testEl = document.createElement('div'),
supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i,
transform,
transitionProperty, transitionDuration, transitionTiming, transitionDelay,
animationName, animationDuration, animationTiming, animationDelay,
cssReset = {};
function dasherize(str) {
return str.replace(/([a-z])([A-Z])/, '$1-$2').toLowerCase();
}
function normalizeEvent(name) {
return eventPrefix ? eventPrefix + name : name.toLowerCase();
}
$.each(vendors, function (vendor, event) {
if (testEl.style[vendor + 'TransitionProperty'] !== undefined) {
prefix = '-' + vendor.toLowerCase() + '-';
eventPrefix = event;
return false;
}
});
transform = prefix + 'transform';
cssReset[transitionProperty = prefix + 'transition-property'] =
cssReset[transitionDuration = prefix + 'transition-duration'] =
cssReset[transitionDelay = prefix + 'transition-delay'] =
cssReset[transitionTiming = prefix + 'transition-timing-function'] =
cssReset[animationName = prefix + 'animation-name'] =
cssReset[animationDuration = prefix + 'animation-duration'] =
cssReset[animationDelay = prefix + 'animation-delay'] =
cssReset[animationTiming = prefix + 'animation-timing-function'] = '';
$.fx = {
off: (eventPrefix === undefined && testEl.style.transitionProperty === undefined),
speeds: {_default: 400, fast: 200, slow: 600},
cssPrefix: prefix,
transitionEnd: normalizeEvent('TransitionEnd'),
animationEnd: normalizeEvent('AnimationEnd')
};
$.fn.animate = function (properties, duration, ease, callback, delay) {
if ($.isFunction(duration))
callback = duration, ease = undefined, duration = undefined;
if ($.isFunction(ease))
callback = ease, ease = undefined;
if ($.isPlainObject(duration))
ease = duration.easing, callback = duration.complete, delay = duration.delay, duration = duration.duration;
if (duration) duration = (typeof duration == 'number' ? duration :
($.fx.speeds[duration] || $.fx.speeds._default)) / 1000;
if (delay) delay = parseFloat(delay) / 1000;
return this.anim(properties, duration, ease, callback, delay);
};
$.fn.anim = function (properties, duration, ease, callback, delay) {
var key, cssValues = {}, cssProperties, transforms = '',
that = this, wrappedCallback, endEvent = $.fx.transitionEnd,
fired = false;
if (duration === undefined) duration = $.fx.speeds._default / 1000;
if (delay === undefined) delay = 0;
if ($.fx.off) duration = 0;
if (typeof properties == 'string') {
// keyframe animation
cssValues[animationName] = properties;
cssValues[animationDuration] = duration + 's';
cssValues[animationDelay] = delay + 's';
cssValues[animationTiming] = (ease || 'linear');
endEvent = $.fx.animationEnd;
} else {
cssProperties = [];
// CSS transitions
for (key in properties)
if (supportedTransforms.test(key)) transforms += key + '(' + properties[key] + ') ';
else cssValues[key] = properties[key], cssProperties.push(dasherize(key));
if (transforms) cssValues[transform] = transforms, cssProperties.push(transform);
if (duration > 0 && typeof properties === 'object') {
cssValues[transitionProperty] = cssProperties.join(', ');
cssValues[transitionDuration] = duration + 's';
cssValues[transitionDelay] = delay + 's';
cssValues[transitionTiming] = (ease || 'linear');
}
}
wrappedCallback = function (event) {
if (typeof event !== 'undefined') {
if (event.target !== event.currentTarget) return; // makes sure the event didn't bubble from "below"
$(event.target).unbind(endEvent, wrappedCallback);
} else
$(this).unbind(endEvent, wrappedCallback); // triggered by setTimeout
fired = true;
$(this).css(cssReset);
callback && callback.call(this);
};
if (duration > 0) {
this.bind(endEvent, wrappedCallback);
// transitionEnd is not always firing on older Android phones
// so make sure it gets fired
setTimeout(function () {
if (fired) return;
wrappedCallback.call(that);
}, ((duration + delay) * 1000) + 25);
}
// trigger page reflow so new elements can animate
this.size() && this.get(0).clientLeft;
this.css(cssValues);
if (duration <= 0) setTimeout(function () {
that.each(function () {
wrappedCallback.call(this);
});
}, 0);
return this;
};
testEl = null;
})($)
;
(function ($, undefined) {
var document = window.document, docElem = document.documentElement,
origShow = $.fn.show, origHide = $.fn.hide, origToggle = $.fn.toggle;
function anim(el, speed, opacity, scale, callback) {
if (typeof speed == 'function' && !callback) callback = speed, speed = undefined;
var props = {opacity: opacity};
if (scale) {
props.scale = scale;
el.css($.fx.cssPrefix + 'transform-origin', '0 0');
}
return el.animate(props, speed, null, callback);
}
function hide(el, speed, scale, callback) {
return anim(el, speed, 0, scale, function () {
origHide.call($(this));
callback && callback.call(this);
});
}
$.fn.show = function (speed, callback) {
origShow.call(this);
if (speed === undefined) speed = 0;
else this.css('opacity', 0);
return anim(this, speed, 1, '1,1', callback);
};
$.fn.hide = function (speed, callback) {
if (speed === undefined) return origHide.call(this);
else return hide(this, speed, '0,0', callback);
};
$.fn.toggle = function (speed, callback) {
if (speed === undefined || typeof speed == 'boolean')
return origToggle.call(this, speed);
else return this.each(function () {
var el = $(this);
el[el.css('display') == 'none' ? 'show' : 'hide'](speed, callback);
});
};
$.fn.fadeTo = function (speed, opacity, callback) {
return anim(this, speed, opacity, null, callback);
};
$.fn.fadeIn = function (speed, callback) {
var target = this.css('opacity');
if (target > 0) this.css('opacity', 0);
else target = 1;
return origShow.call(this).fadeTo(speed, target, callback);
};
$.fn.fadeOut = function (speed, callback) {
return hide(this, speed, null, callback);
};
$.fn.fadeToggle = function (speed, callback) {
return this.each(function () {
var el = $(this);
el[
(el.css('opacity') == 0 || el.css('display') == 'none') ? 'fadeIn' : 'fadeOut'
](speed, callback);
});
};
})($)
;
(function ($, undefined) {
Array.prototype.find = function (item) {
for (var i = 0; i < this.length; i++) {
if (this[i] === item) {
return this[i];
}
}
return null;
};
var uc = false;
if (window.navigator.userAgent.match(/(UCBrowser|UCWeb)/i))
uc = true;
var AsideSlider = function () {
this.visibleStack = [];
this.bindArray = [];
this.lastY = 0;
this.y = 0;
this.bind();
};
AsideSlider.prototype._findEntry = function (item) {
for (var i = 0; i < this.bindArray.length; i++) {
if (this.bindArray[i].initialator === item && $(this.bindArray[i].slider).length > 0) {
return true;
}
}
return false;
};
AsideSlider.prototype.bind = AsideSlider.prototype.rebind = function () {
var asliderEntries = $('[data-aslider-in]');
var _scope = this;
var historyList = [];
$(asliderEntries).each(function (idx, el) {
if (_scope._findEntry(el)) {
return;
}
var array = String($(this).data('aslider-in')).split('|');
var targetSlider = array[0];
_scope.bindArray.push({
initialator: this,
slider: '[data-aslider="' + targetSlider + '"]',
options: {
isFade: (function () {
var isFade = false;
array.forEach(function (value, idx) {
if (value == 'fade') {
isFade = true;
return false;
}
});
return isFade;
})(),
direction: (function () {
var direction = 'right';
array.forEach(function (value, idx) {
if (value == 'right' || value == 'left' || value == 'top' || value == 'bottom') {
direction = value;
return false;
}
});
return direction;
})(),
size: (function () {
var size = '100%';
var direction = 'right';
array.forEach(function (value, idx) {
if (value == 'right' || value == 'left' || value == 'top' || value == 'bottom') {
direction = value;
return false;
}
});
})()
}
});
for (var i in historyList) {
if (historyList[i].entry == $(el).data('aslider-in')) {
return;
}
}
historyList.push(
{
'entry': $(el).data('aslider-in'),
'slider': '[data-aslider="' + targetSlider + '"]',
}
);
var $bg = $('<div class=\'bg close\'></div>');
$(_scope.bindArray[_scope.bindArray.length - 1].slider).prepend($bg);
});
// sliders to be inited
var sliders = historyList.map(function (item) {
return item.slider;
}).join(',');
this.init($(sliders));
};
AsideSlider.prototype.onTransitionEnd = function (e) {
var $el = $(e.currentTarget);
this.y = 0;
this.lastY = 0;
$el.find('.slider').css({
'-moz-transform': 'translate(0,0)',
'-ms-transform': 'translate(0,0)',
'transform': 'translate(0,0)',
'-webkit-transform': 'translate(0,0)',
});
if ($el.find('.slide_out')[0])
$el.css('display', 'none');
};
/**
* 侦听侧边栏的关闭点击事件,调用滑出侧边栏方法
* @param {event}
* @return {null}
*/
AsideSlider.prototype.onClose = function (e) {
if ($(e.target).hasClass('close')) {
var $el = this._findAslider(e.currentTarget);
this.asideSlideOut($el);
}
};
AsideSlider.prototype.init = function () {
var asliders = $('[data-aslider]');
var _scope = this;
var y = this.y;
var lastY = this.lastY;
$(asliders).bind('webkitTransitionEnd', $.proxy(this.onTransitionEnd, this));
$(asliders).bind('transitionEnd', $.proxy(this.onTransitionEnd, this));
$(asliders).on('click', '.close', $.proxy(this.onClose, this));
$(document).on('click', '[data-aslider="' + $(asliders).data('aslider') + '"]', $.proxy(this.onClose, this));
/**
* 侦听触摸事件的div
*/
$(asliders).each(function (idx, aslider) {
if (uc)
$(aslider).find('.asilder_wrapper').addClass('for_uc');
var lastScrollTop = 0;
// 找不到slider,就创建slider
var children = $(aslider).find('.asilder_wrapper').children();
if ($(aslider).find('.slider').length == 0) {
var $slider = $('<div class=\'slider\'></div>');
$slider.append(children);
$(aslider).find('.asilder_wrapper').append($slider);
} else
var $slider = $(aslider).find('.slider');
if ($(aslider).find('.scroll').length == 0) {
var $scroll = $('<div class=\'scroll\'></>');
// 创建scroll
$slider.before($scroll);
// 将slider添加到scroll
$scroll.append($slider);
}
/**
* 每次点击开始时,先重置lastY
*/
$slider.on('touchstart', function (e) {
lastY = e.originalEvent.touches[0].pageY;
});
/**
* 触摸移动事件
* 通过当前的触摸Y值 - 上一次事件的y值
* 得到两次触摸事件的差
* y = y +deltaY使div移动
* 如果y > 0,则div的顶部低于窗口了,所以y>0时,y=0
* 同理y < limit是为了防止div的底部高于窗口
* 最后让当前的触摸y值 = lastY,即对下一次触摸来说,这次的y就是lastY
*/
$slider.on('touchmove', function (e) {
var curY = e.originalEvent.touches[0].pageY;
var deltaY = curY - lastY;
var height = $(this)[0].scrollHeight;
var limit = height - $(this).parent().height();
y = y + deltaY;
if (y < limit * -1) y = limit * -1;
if (y > 0) y = 0;
var translate = 'translate3d(0,' + y + 'px,0)';
$(this).css({
'-moz-transform': translate,
'-ms-transform': translate,
'transform': translate,
'-webkit-transform': translate,
});
lastY = curY;
});
$slider.on('touchend', function (e) {
});
});
this.bindArray.forEach(function (item) {
_scope._bindAsideSlider($(item.initialator), $(item.slider));
if (item.options.isFade)
$(item.slider).data('aslider-fade', item.options.isFade);
else
$(item.slider).find('.bg').css('opacity', '0');
$(item.slider).data('aslider-direction', item.options.direction);
$(item.slider).find('.asilder_wrapper').addClass(item.options.direction);
});
};
/**
* @private
* 绑定页面的侧边栏和侧边栏滑出的发起者的click事件,当点击发起者时,滑出侧边栏
* @param {zepto object} $initialator 发起者
* @param {zepto object} $slider 侧边栏
* @return {null}
*/
AsideSlider.prototype._bindAsideSlider = function ($initialator, $slider) {
if (typeof($initialator) == 'undefined') return;
$initialator.click($.proxy(function (e) {
this.asideSlideIn($slider);
}, this));
};
/**
* @private
* 给定一个侧边栏的子节点,找到这个侧边栏
* @param {Type} 一个html dom node
*/
AsideSlider.prototype._findAslider = function (el) {
var theSlider;
$('[data-aslider]').each(function (idx, aslider) {
if (aslider == el) {
theSlider = aslider;
return false;
}
$(aslider).find('.close').each(function (idx, _el) {
if (el == _el) {
theSlider = aslider;
return false;
} else {
return true;
}
});
});
return $(theSlider);
};
/**
* @public
* 遍历所有侧边栏,滑出隐藏当前显示的那个
* @return {null}
*/
AsideSlider.prototype.asideSlideOut =
AsideSlider.prototype.slideOut = function ($el) {
$el = typeof $el === 'string' ? $($el) : $el;
if ($el.css('display') != 'none') {
var isFade = $el.data('aslider-fade');
if (isFade === '' || isFade || $el.isFade) {
$el.find('.bg').removeClass('fade_in');
$el.find('.bg').addClass('fade_out');
}
$el.find('.asilder_wrapper').removeClass('slide_in');
$el.find('.asilder_wrapper').addClass('slide_out');
}
this.visibleStack.pop();
if (this.visibleStack.length === 0)
$('body').unbind('touchmove');
};
/**
* @public
* 滑入显示一个侧边栏
* @param {zepto object} $el 侧边栏dom对象
* @return {null}
*/
AsideSlider.prototype.asideSlideIn =
AsideSlider.prototype.slideIn = function ($el) {
$el = typeof $el === 'string' ? $($el) : $el;
$el.show();
var isFade = $el.data('aslider-fade');
if (isFade === '' || isFade || $el.isFade) {
$el.find('.bg').removeClass('fade_out');
$el.find('.bg').addClass('fade_in');
}
$el.find('.asilder_wrapper').removeClass('slide_out');
$el.find('.asilder_wrapper').addClass('slide_in');
this.visibleStack.push($el);
$('body').bind('touchmove', function (e) {
e.preventDefault();
});
window.JI_bilibili && window.JI_bilibili($el);
};
$(function () {
$.asideSlider = $.aslider = new AsideSlider();
});
})($);
/*eslint-enable*/
... ...
var $ = require('yoho-jquery');
var tip = require('../plugin/tip');
var top = 0,
province,
school,
ruleMap = {
name: {
name: '姓名',
require: true,
regex: /^[\u2E80-\u9FFF]+$/g,
msg: '请输入中文姓名'
},
cert_no: {
name: '身份证号',
require: true,
regex: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/g,
msg: '身份证号输入错误'
},
college_name: {
name: '学校省份',
require: true
},
education_degree: {
name: '当前学历',
require: true
},
enrollment_year: {
require: true
},
isread: {
name: '入学年份',
is: true,
msg: '请同意有货网学生认证协议'
}
};
require('./aslider');
/*
* 用于对规则验证
*/
function isValidate(rules, datas) {
var message = '',
data,
name,
rule;
for (name in rules) {
if (datas.hasOwnProperty(name)) {
data = datas[name];
rule = rules[name];
if (rule.require && !$.trim(data)) {
message = rule.name + '不可为空';
break;
}
if (rule.regex) {
if (!$.trim(data).match(rule.regex).length) {
message = rule.msg;
break;
}
}
if (rule.is !== void (0) && data !== rule.is) {
message = rule.msg;
}
}
}
return message;
}
/*
* 获取数据
*/
function changeSuccess() {
var data = {
cert_no: $.trim($('#tb_cert_no').val()),
name: $.trim($('#tb_name').val()),
college_name: $.trim($('#s-school-tb').html()),
education_degree: $.trim($('#s-education-tb').html()),
enrollment_year: $.trim($('#s-year-tb').html()),
isread: $('#tb-is-read').prop('checked')
},
msg;
msg = isValidate(ruleMap, data);
if (!msg) {
$('.s-submit').addClass('succ');
} else {
$('.s-submit').removeClass('succ');
}
return {
msg: msg,
data: data
};
}
/*
* 筛选器
*/
function Filter(ele, title, feild, data) {
this.__ele__ = ele;
this.__title__ = title;
this.__data__ = data || null;
this.__select__ = null;
this.__feild__ = feild;
}
Filter.prototype = {
get: function() {
return this.__data__;
},
set: function(data) {
this.__data__ = data;
},
selected: function() {
return this.__select__;
},
init: function(data, key) {
var d,
html;
data = data || this.get();
d = this.adapterData(this.filterData(data, key));
$('.s-items', this.__ele__).html('').html(this.dataToHtml(d));
$('.s-group-zimu', this.__ele__).html('');
if (!key) {
html = '<span class=\'iconfont search-icon empty\'>&#xe60f;</span>';
Object.keys(d).forEach(function(item) {
html += '<a href=\'javascript:;\'>' + item + '</a>';
});
html += '';
$('.s-group-zimu', this.__ele__).html(html);
}
this.bindEvent();
},
filterData: function(data, key) {
var that = this,
regex;
if (!key) {
return data;
}
return data.filter(function(item) {
regex = new RegExp('^' + key, 'i');
return regex.test(item[that.__feild__]);
});
},
adapterData: function(items) {
var result = {},
map = {};
items = items || this.__data__;
items.forEach(function(item) {
if (item.groupBy) {
if (!result.hasOwnProperty(item.groupBy)) {
result[item.groupBy] = [];
}
result[item.groupBy].push(item);
}
});
Object.keys(result).sort().forEach(function(name) {
map[name] = result[name];
});
return map;
},
dataToHtml: function(data) {
var that = this;
var html = [],
name;
if (this.__select__) {
html.push('<h6 class=\'s-title\'>当前地区</h6>');
html.push('<div class=\'s-item close\'>' + this.__select__[this.__feild__] + '</div>');
}
for (name in data) {
if (data.hasOwnProperty(name)) {
html.push('<h6 class=\'s-title\' data-pos=\'' + name + '\'>' + name + '</h6>');
if (data[name].length > 0) {
data[name].forEach(function(item) {
html.push('<div class=\'s-item close\' data-obj=\'' +
JSON.stringify(item) + '\'>' + item[that.__feild__] + '</div>');
});
}
}
}
return html;
},
bindEvent: function() {
var that = this;
$(document).on('click', '' + that.__ele__ + ' .s-item', function() {
var item = $(this).data('obj');
that.__select__ = item;
$('#s-' + that.__ele__.match(/=(\w+)/)[1] + '-tb').html(item[that.__feild__]);
changeSuccess();
});
$(document).on('click', '' + that.__ele__ + ' .s-group-zimu a', function() {
var name = $(this).html();
var y = $('[data-pos=' + name + ']', that.__ele__).data('zpos') - top;
var translate = 'translate3d(0,' + (-y) + 'px,0)';
$('.slider', that.__ele__).css({
'-moz-transform': translate,
'-ms-transform': translate,
transform: translate,
'-webkit-transform': translate,
});
});
}
};
province = new Filter('[data-aslider=province]', '当前地区', 'addresseeName');
$.get('/activity/student/province', function(res) {
province.set(res.data);
province.init();
});
$(document).on('keyup', '#s-search-provinces', function() {
var name = $.trim($(this).val());
province.init(province.get(), name);
});
school = new Filter('[data-aslider=school]', '当前学校', 'schoolName');
window.JI_bilibili = function($el) {
top = $('.slider', $el).offset().top;
if ($el.selector === '[data-aslider="school"]') {
if (province.selected() && province.selected().areaCode) {
$.get('/activity/student/school?code=' + province.selected().areaCode, function(res) {
school.set(res.data);
school.init();
$('[data-pos]', $el).each(function() {
$(this).data('zpos', $(this).offset().top);
});
});
}
} else {
$('[data-pos]', $el).each(function() {
$(this).data('zpos', $(this).offset().top);
});
}
};
window.JI_getselectvalue = function(type, value) {
if (+type === 1) {
$('#s-education-tb').html($.trim(value));
} else {
$('#s-year-tb').html($.trim(value));
}
changeSuccess();
};
$(document).on('keyup', '#s-search-school', function() {
var name = $.trim($(this).val());
school.init(school.get(), name);
});
// data-aslider-in="education|fade"
// $(document).on('click', '#s-education .s-item', function() {
// $('#s-education-tb').html($.trim($(this).html()));
// });
// $(document).on('click', '#app-education', function() {
// $(this).attr('href', location.origin + location.pathname + '
// ?openby:yohobuy={"action":"go.picker","type":"1","params":{"title":"biaoti","list":["1","2"]}}');
// });
// $(document).on('click', '#s-year .s-item', function() {
// $('#s-year-tb').html($.trim($(this).html()));
// });
/*
* 数据提交
*/
$(document).on('click', '.s-submit', function() {
var obj = changeSuccess();
if (!obj.msg) {
$.ajax({
url: '/activity/student/join',
type: 'post',
data: obj.data
}).then(function(data) {
location.href = data.data;
});
} else {
tip.show(obj.msg);
}
});
$('#tb-is-read').change(function() {
changeSuccess();
});
$('.s-input-search').focusin(function() {
$('.s-seach-tip').hide();
}).focusout(function() {
if (!$.trim($(this).val())) {
$('.s-seach-tip').show();
}
});
... ...
var $ = require('yoho-jquery'),
Swiper = require('yoho-swiper'),
lazyLoad = require('yoho-jquery-lazyload'),
fastclick = require('yoho-fastclick'),
tip = require('../plugin/tip');
var _weChatInterface = '//m.yohobuy.com/life/getSignPackage',
wx = window.wx;
fastclick.attach(document.body);
lazyLoad($('img.lazy'));
// 头部banner轮播
if ($('.banner-swiper').find('li').size() > 1) {
new Swiper('.banner-swiper', {
lazyLoading: true,
lazyLoadingInPrevNext: true,
loop: true,
autoplay: 3000,
autoplayDisableOnInteraction: false,
paginationClickable: true,
slideElement: 'li',
pagination: '.banner-top .pagination-inner'
});
}
// 获取url中的参数
function getUrlParam(name) {
// 构造一个含有目标参数的正则表达式对象
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
// 匹配目标参数
var r = window.location.search.substr(1).match(reg);
// 返回参数值
if (r !== null) {
return r[2];
}
return null;
}
$('.main-right-receive').on('click', function() {
var $curDom = $(this),
req = '';
if (getUrlParam('app_version')) {
req += '&app_version=' + getUrlParam('app_version');
}
if (getUrlParam('uid')) {
req += '&uid=' + getUrlParam('uid');
}
$.ajax({
url: '//m.yohobuy.com/coupon/receiveCoupon?code=' + getUrlParam('code') + req,
data: {
couponID: $curDom.parents('.coupon-floor').attr('coupon-id')
},
dataType: 'json',
success: function(data) {
var msg = data.msg,
status = data.status,
newUrl = data.url + '?code=' + getUrlParam('code');
if (data.isApp === true) {
newUrl = data.url;
}
if (data.noLogin === true) {
location.href = newUrl;
} else {
if (status) {
$curDom.hide();
$curDom.next().show();
tip.show('领卷成功');
} else {
tip.show(msg);
}
}
},
error: function() {
tip.show('网络异常!');
}
});
});
/**
* 微信分享
*/
if (typeof wx !== 'undefined') {
$.getJSON(_weChatInterface + '?pageurl=' +
encodeURIComponent(location.href.split('#')[0]) + '&callback=?',
function(json) {
var _appId,
_timestamp,
_nonceStr,
_signature;
if (json) {
_appId = json.appId.toString();
_timestamp = json.timestamp;
_nonceStr = json.nonceStr.toString();
_signature = json.signature.toString();
wx.config({
debug: false,
appId: _appId,
timestamp: _timestamp,
nonceStr: _nonceStr,
signature: _signature,
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'hideMenuItems',
'showMenuItems',
'hideAllNonBaseMenuItem',
'showAllNonBaseMenuItem',
'translateVoice',
'startRecord',
'stopRecord',
'onRecordEnd',
'playVoice',
'pauseVoice',
'stopVoice',
'uploadVoice',
'downloadVoice',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'getNetworkType',
'openLocation',
'getLocation',
'hideOptionMenu',
'showOptionMenu',
'closeWindow',
'scanQRCode',
'chooseWXPay',
'openProductSpecificView',
'addCard',
'chooseCard',
'openCard'
]
});
}
});
wx.ready(function() {
var shareData = {
title: 'YOHO!BUY有货【学生】专享福利大派送!4大特权享不停!',
desc: '全球1000+潮流品牌每日上新!一起来YOHO!玩潮流!',
imgUrl: 'http://img12.static.yhbimg.com/brandCertificate/2016/08/10/14/0204d441c737c687fc418b2372d0aba8be.png',
link: 'https://m.yohobuy.com/activity/student'
};
// 分享给朋友
wx.onMenuShareAppMessage(shareData);
// 分享到朋友圈
wx.onMenuShareTimeline(shareData);
// 分享到QQ
wx.onMenuShareQQ(shareData);
// 分享到微博
wx.onMenuShareWeibo(shareData);
});
}
... ...
/* start aside侧边栏 */
/* @date: 2015/7/8 17:36:24; */
/* @author:jalbaa*/
.aslider {
display: none;
position: fixed;
overflow: hidden;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 100;
}
/*
.aslider .asilder_wrapper>* {
transform: translate3d(0,0,1px);
}*/
.aslider .scroll {
overflow: hidden;
height: 100%;
-webkit-box-flex: 1;
-moz-box-flex: 1;
-ms-box-flex: 1;
box-flex: 1;
}
.aslider .slider {
height: 100%;
}
.aslider .asilder_wrapper {
position: absolute;
display: -webkit-box;
display: -moz-box;
display: -ms-box;
display: box;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-ms-box-orient: vertical;
box-orient: vertical;
overflow: hidden;
width: 100%;
height: 100%;
background-color: #fff;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
.aslider .asilder_wrapper > * {
}
.aslider .asilder_wrapper.left:not(.for_uc) {
-webkit-transform: translate(-100%, 0);
-moz-transform: translate(-100%, 0);
-ms-transform: translate(-100%, 0);
transform: translate(-100%, 0);
left: 0;
}
.aslider .asilder_wrapper.right:not(.for_uc) {
-webkit-transform: translate(100%, 0);
-moz-transform: translate(100%, 0);
-ms-transform: translate(100%, 0);
transform: translate(100%, 0);
right: 0;
}
.aslider .asilder_wrapper.top:not(.for_uc) {
-webkit-transform: translate(0, -100%);
-moz-transform: translate(0, -100%);
-ms-transform: translate(0, -100%);
transform: translate(0, -100%);
top: 0;
}
.aslider .asilder_wrapper.bottom:not(.for_uc) {
-webkit-transform: translate(0, 100%);
-moz-transform: translate(0, 100%);
-ms-transform: translate(0, 100%);
transform: translate(0, 100%);
bottom: 0;
}
.aslider .asilder_wrapper.bottom.for_uc {
bottom: -100%;
}
.aslider .asilder_wrapper.top.for_uc {
top: -100%;
}
.aslider .asilder_wrapper.left.for_uc {
left: -100%;
}
.aslider .asilder_wrapper.right.for_uc {
right: -100%;
}
.aslider .asilder_wrapper.scrolling {
-webkit-transition: none 0s ease-in-out !important;
-moz-transition: none 0s ease-in-out !important;
-ms-transition: none 0s ease-in-out !important;
transition: none 0s ease-in-out !important;
}
.aslider .bg {
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
background-color: #000;
-webkit-transition: all .3s ease-in-out;
-moz-transition: all .3s ease-in-out;
-ms-transition: all .3s ease-in-out;
transition: all .3s ease-in-out;
}
.aslider .fade_out {
opacity: 0;
}
.aslider .fade_in {
opacity: .4;
}
.aslider .asilder_wrapper.slide_out.right {
-webkit-transform: translate(100%, 0);
-moz-transform: translate(100%, 0);
-ms-transform: translate(100%, 0);
transform: translate(100%, 0);
}
.aslider .asilder_wrapper.slide_out.left {
-webkit-transform: translate(-100%, 0);
-moz-transform: translate(-100%, 0);
-ms-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}
.aslider .asilder_wrapper.slide_out.top {
-webkit-transform: translate(0, -100%);
-moz-transform: translate(0, -100%);
-ms-transform: translate(0, -100%);
transform: translate(0, -100%);
}
.aslider .asilder_wrapper.slide_out.bottom:not(.for_uc) {
-webkit-transform: translate(0, 100%);
-moz-transform: translate(0, 100%);
-ms-transform: translate(0, 100%);
transform: translate(0, 100%);
}
.aslider .asilder_wrapper.slide_out.bottom.for_uc {
bottom: -100%;
}
.aslider .asilder_wrapper.slide_out.top.for_uc {
top: -100%;
}
.aslider .asilder_wrapper.slide_out.left.for_uc {
left: -100%;
}
.aslider .asilder_wrapper.slide_out.right.for_uc {
right: -100%;
}
.aslider .asilder_wrapper.slide_in:not(.for_uc) {
-webkit-transform: translate(0, 0);
-moz-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
}
.aslider .asilder_wrapper.slide_in.bottom.for_uc {
bottom: 0;
}
.aslider .asilder_wrapper.slide_in.top.for_uc {
top: 0;
}
.aslider .asilder_wrapper.slide_in.left.for_uc {
left: 0;
}
.aslider .asilder_wrapper.slide_in.right.for_uc {
right: 0;
}
... ...
... ... @@ -331,4 +331,4 @@
}
}
}
@import "student";
... ...
.student {
background-color: #fff;
.s-section {
h1 {
height: 80px;
line-height: 80px;
font-size: 30px;
background-color: #f0f0f0;
text-align: center;
position: relative;
.more {
float: right;
font-size: 24px;
color: #b0b0b0;
position: absolute;
display: block;
top: 0;
right: 30px;
}
}
.s-title {
padding: 30px 0;
}
.s-section {
border-left: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
width: 50%;
/* padding:30px 0px 30px 40px; */
height: 174px;
background-color: #ffffff;
display: table;
float: left;
&:nth-child(2n+1) {
border-left-color: #fff;
}
}
.s-activity {
height: 234px;
width: 100%;
margin-bottom: 30px;
display: block;
&:last-child {
margin-bottom: 0px;
}
img {
width: 100%;
height: 100%;
display: block;
}
}
.goods-list {
background-color: #fff;
padding-left: 15px;
}
.s-more {
height: 80px;
line-height: 80px;
text-align: center;
font-size: 28px;
color: #b0b0b0;
display: block;
}
.s-verify-img {
width: 120px;
height: 120px;
margin: 0 auto;
margin-top: 54px;
margin-bottom: 30px;
text-align: center;
}
.s-verify-success {
width: 120px;
height: 120px;
background-image: url("/channel/student/success.png");
background-repeat: no-repeat;
background-size: contain;
}
.s-verify-fail {
width: 120px;
height: 120px;
background-image: url("/channel/student/fail.png");
background-repeat: no-repeat;
background-size: contain;
}
.s-verify-title {
text-align: center;
color: #d0021b;
font-size: 28px;
}
.s-verify-txt {
text-align: center;
color: #b0b0b0;
font-size: 20px;
margin: 16px auto 50px auto;
.red {
color: #d0021b;
margin: 0 8px;
}
}
}
.s-layout {
position: fixed;
padding: 0 30px;
color: #fff;
font-size: 20px;
background-color: #555555;
height: 80px;
line-height: 80px;
bottom: 0;
width: 100%;
width: 640px;
.s-renzhen {
/* background-image: url('/channel/student/renzheng.png');
background-repeat: no-repeat;
background-size: 120px 20px; */
background-color: #d10922;
border-radius: 20px;
font-size: 22px;
width: 140px;
height: 50px;
line-height: 50px;
color: #fff;
text-align: center;
display: block;
position: absolute;
right: 30px;
top: 15px;
}
}
.sale-price {
position: relative;
}
.s-biaoqian {
background-image: url("/channel/student/studentjia.png");
background-repeat: no-repeat;
background-size: contain;
width: 77px;
height: 26px;
line-height: 26px;
position: absolute;
right: -87px;
color: #fff;
text-align: center;
font-size: 18px;
}
.s-form {
background-color: #fff;
padding: 0 30px;
border-bottom: 1px solid #e0e0e0;
border-top: 1px solid #e0e0e0;
}
.s-feild {
height: 88px;
line-height: 88px;
font-size: 28px;
border-bottom: 1px solid #e0e0e0;
position: relative;
label {
width: 174px;
display: inline-block;
}
input {
border: 0 none;
}
.s-red {
color: #d0021b;
}
&:last-child {
border-bottom: 0 none;
}
.s-select {
position: absolute;
right: 0;
}
}
.s-marbot {
margin-bottom: 30px;
background-color: #fff;
padding: 0 30px;
}
.s-footer {
padding: 0 30px;
.s-shenming {
font-size: 28px;
height: 88px;
line-height: 88px;
text-align: center;
.s-blue {
color: #4a90e2;
}
}
.s-submit {
color: #fefefe;
font-size: 28px;
/* background-color:#444444; */
background-color: rgb(176, 176, 176);
height: 88px;
line-height: 88px;
display: block;
text-align: center;
border-radius: 8px;
}
.s-submit.succ {
background-color: #444444;
}
}
.s-search {
height: 55px;
line-height: 55px;
background-color: #f0f0f0;
border-radius: 8px;
margin: 16px 30px 16px 16px;
text-align: center;
position: relative;
input {
border: 0 none;
height: 100%;
width: 100%;
background-color: transparent;
position: absolute;
z-index: 1;
top: 0;
left: 0;
padding-left: 30px;
}
.s-seach-tip {
/* position: absolute;
z-index: 0; */
width: 100%;
height: 100%;
text-align: center;
color: #b0b0b0;
}
}
h6.s-title {
height: 50px;
line-height: 50px;
font-size: 28px;
background-color: #f0f0f0;
color: #b0b0b0;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
padding: 0 30px;
}
.s-items {
padding-right: 30px;
/* background-color: #fff; */
}
.s-item {
height: 88px;
line-height: 88px;
font-size: 28px;
margin-left: 30px;
/* padding: 0 30px; */
font-size: 34px;
border-bottom: 1px solid #e0e0e0;
background-color: #fff;
}
.s-text {
padding: 0 30px;
h6 {
font-size: 34px;
margin-top: 60px;
margin-bottom: 30px;
}
}
}
.s-group-zimu {
position: fixed;
right: -20px;
z-index: 1000;
top: 50%;
width: 30px;
transform: translate(-50%, 0%);
-webkit-transform: translate(-50%, -50%);
  -ms-transform: translate(-50%, -50%);
a {
display: block;
}
}
@import "aslider";
... ...