Authored by ccbikai

Merge branch 'master' into develop

@@ -22,7 +22,6 @@ const memcached = require('yoho-connect-memcached'); @@ -22,7 +22,6 @@ const memcached = require('yoho-connect-memcached');
22 const uuid = require('uuid'); 22 const uuid = require('uuid');
23 const _ = require('lodash'); 23 const _ = require('lodash');
24 const pkg = require('./package.json'); 24 const pkg = require('./package.json');
25 -const sign = require('./library/sign');  
26 const cookie = require('./library/cookie'); 25 const cookie = require('./library/cookie');
27 26
28 const app = express(); 27 const app = express();
@@ -77,14 +76,8 @@ app.use((req, res, next) => { @@ -77,14 +76,8 @@ app.use((req, res, next) => {
77 76
78 // session 没有读取到的时候,从 cookie 读取 UID 77 // session 没有读取到的时候,从 cookie 读取 UID
79 if (!req.user.uid && req.cookies._UID) { 78 if (!req.user.uid && req.cookies._UID) {
80 - let uid = cookie.getUid(req);  
81 -  
82 - // 校验 cookie 的 uid 有没有被修改  
83 - if (req.cookies._TOKEN === sign.makeToken(uid)) {  
84 - req.user.uid = uid;  
85 - } 79 + req.user.uid = cookie.getUid(req);
86 } 80 }
87 -  
88 next(); 81 next();
89 }); 82 });
90 83
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 6
7 'use strict'; 7 'use strict';
8 const passport = require('passport'); 8 const passport = require('passport');
9 -const WeixinStrategy = require('passport-weixin-plus'); 9 +const WeixinStrategy = require('passport-weixin');
10 10
11 const config = require('../../config/common'); 11 const config = require('../../config/common');
12 12
@@ -15,14 +15,14 @@ let siteUrl = config.siteUrl.indexOf('//') === 0 ? 'http:' + config.siteUrl : co @@ -15,14 +15,14 @@ let siteUrl = config.siteUrl.indexOf('//') === 0 ? 'http:' + config.siteUrl : co
15 /** 15 /**
16 * wechat登录 16 * wechat登录
17 */ 17 */
18 -passport.use(new WeixinStrategy({  
19 - authorizationURL: 'https://open.weixin.qq.com/connect/oauth2/authorize',  
20 - tokenURL: 'https://api.weixin.qq.com/sns/oauth2/access_token', 18 +
  19 +passport.use('weixin', new WeixinStrategy({
21 clientID: config.thirdLogin.wechat.appID, 20 clientID: config.thirdLogin.wechat.appID,
22 clientSecret: config.thirdLogin.wechat.appSecret, 21 clientSecret: config.thirdLogin.wechat.appSecret,
23 callbackURL: `${siteUrl}/passport/login/wechat/callback`, 22 callbackURL: `${siteUrl}/passport/login/wechat/callback`,
24 - requireState: false, 23 + requireState: true,
  24 + authorizationURL: 'https://open.weixin.qq.com/connect/oauth2/authorize',
25 scope: 'snsapi_userinfo' 25 scope: 'snsapi_userinfo'
26 -}, (accessToken, refreshToken, profile, done) => { 26 +}, function(accessToken, refreshToken, profile, done) {
27 done(null, profile); 27 done(null, profile);
28 })); 28 }));
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 7
8 const library = '../../../library'; 8 const library = '../../../library';
9 const passport = require('passport'); 9 const passport = require('passport');
  10 +const uuid = require('uuid');
10 const cookie = require(`${library}/cookie`); 11 const cookie = require(`${library}/cookie`);
11 const helpers = require(`${library}/helpers`); 12 const helpers = require(`${library}/helpers`);
12 const log = require(`${library}/logger`); 13 const log = require(`${library}/logger`);
@@ -42,7 +43,6 @@ function doPassportCallback(openId, nickname, sourceType, req, res) { @@ -42,7 +43,6 @@ function doPassportCallback(openId, nickname, sourceType, req, res) {
42 }); 43 });
43 } 44 }
44 }).then((redirectTo) => { 45 }).then((redirectTo) => {
45 - console.log('redirectTo=', redirectTo);  
46 return res.redirect(redirectTo); 46 return res.redirect(redirectTo);
47 }).catch((e) => { 47 }).catch((e) => {
48 log.error('频道页面渲染错误:' + JSON.stringify(e)); 48 log.error('频道页面渲染错误:' + JSON.stringify(e));
@@ -64,7 +64,9 @@ const wechat = { @@ -64,7 +64,9 @@ const wechat = {
64 next(); 64 next();
65 }, 65 },
66 login: (req, res, next) => { 66 login: (req, res, next) => {
67 - return passport.authenticate('weixin')(req, res, next); 67 + return passport.authenticate('weixin', {
  68 + state: uuid.v4()
  69 + })(req, res, next);
68 }, 70 },
69 callback: (req, res, next) => { 71 callback: (req, res, next) => {
70 passport.authenticate('weixin', (err, user) => { 72 passport.authenticate('weixin', (err, user) => {
@@ -72,8 +74,8 @@ const wechat = { @@ -72,8 +74,8 @@ const wechat = {
72 log.error(`wechat authenticate error : ${JSON.stringify(err)}`); 74 log.error(`wechat authenticate error : ${JSON.stringify(err)}`);
73 return res.redirect(loginPage); 75 return res.redirect(loginPage);
74 } 76 }
75 - let nickname = user.displayName || user._json.nickname;  
76 - let openId = user.id || user._json.unionid; 77 + let nickname = user._json.nickname || user.displayName;
  78 + let openId = user._json.unionid || user.id;
77 79
78 doPassportCallback(openId, nickname, 'wechat', req, res); 80 doPassportCallback(openId, nickname, 'wechat', req, res);
79 })(req, res, next); 81 })(req, res, next);
@@ -13,8 +13,8 @@ module.exports = { @@ -13,8 +13,8 @@ module.exports = {
13 port: 6001, 13 port: 6001,
14 siteUrl: '//m.yohobuy.com', 14 siteUrl: '//m.yohobuy.com',
15 domains: { 15 domains: {
16 - api: 'http://devapi.yoho.cn:58078/',  
17 - service: 'http://devservice.yoho.cn:58077/', 16 + api: 'http://testapi.yoho.cn:28078/',
  17 + service: 'http://testservice.yoho.cn:28077/',
18 search: 'http://192.168.10.64:8080/yohosearch/' 18 search: 'http://192.168.10.64:8080/yohosearch/'
19 }, 19 },
20 useOneapm: false, 20 useOneapm: false,
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
4 * @return {[string]} 4 * @return {[string]}
5 */ 5 */
6 'use strict'; 6 'use strict';
  7 +const sign = require('./sign');
7 8
8 exports.getUid = (req) => { 9 exports.getUid = (req) => {
9 const cookie = req.cookies._UID; 10 const cookie = req.cookies._UID;
@@ -21,6 +22,11 @@ exports.getUid = (req) => { @@ -21,6 +22,11 @@ exports.getUid = (req) => {
21 } 22 }
22 } 23 }
23 24
  25 + // 校验 cookie 的 uid 有没有被修改
  26 + if (req.cookies._TOKEN !== sign.makeToken(_uid)) {
  27 + _uid = 0;
  28 + }
  29 +
24 return _uid; 30 return _uid;
25 }; 31 };
26 32
@@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
44 "morgan": "^1.7.0", 44 "morgan": "^1.7.0",
45 "oneapm": "^1.2.20", 45 "oneapm": "^1.2.20",
46 "passport": "^0.3.2", 46 "passport": "^0.3.2",
47 - "passport-weixin-plus": "0.0.4", 47 + "passport-weixin": "^0.1.0",
48 "request-promise": "^3.0.0", 48 "request-promise": "^3.0.0",
49 "serve-favicon": "^2.3.0", 49 "serve-favicon": "^2.3.0",
50 "uuid": "^2.0.2", 50 "uuid": "^2.0.2",
@@ -90,7 +90,7 @@ a{ @@ -90,7 +90,7 @@ a{
90 .iconfont{ 90 .iconfont{
91 text-decoration: none; 91 text-decoration: none;
92 font-style: normal; 92 font-style: normal;
93 - font-size: 0.8rem; 93 + font-size: 0.6rem;
94 font-family: "iconfont" !important; 94 font-family: "iconfont" !important;
95 -webkit-font-smoothing: antialiased; 95 -webkit-font-smoothing: antialiased;
96 -webkit-text-stroke-width: 0.4px; 96 -webkit-text-stroke-width: 0.4px;
@@ -126,29 +126,29 @@ a{ @@ -126,29 +126,29 @@ a{
126 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 126 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
127 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; 127 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
128 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 128 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
  129 + position: fixed;
  130 + top: 0;
  131 + right: 0;
  132 + bottom: 0;
  133 + left: 0;
  134 + background: rgba(0, 0, 0, 0.1);
129 @keyframes scale{ 135 @keyframes scale{
130 0%{ 136 0%{
  137 + transform: scale(1);
131 opacity: 1; 138 opacity: 1;
132 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 139 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
133 - transform: scale(1);  
134 } 140 }
135 45%{ 141 45%{
  142 + transform: scale(0.1);
136 opacity: 0.7; 143 opacity: 0.7;
137 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; 144 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
138 - transform: scale(0.1);  
139 } 145 }
140 80%{ 146 80%{
  147 + transform: scale(1);
141 opacity: 1; 148 opacity: 1;
142 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; 149 -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
143 - transform: scale(1);  
144 } 150 }
145 } 151 }
146 - position: fixed;  
147 - top: 0;  
148 - right: 0;  
149 - bottom: 0;  
150 - left: 0;  
151 - background: rgba(0, 0, 0, 0.1);  
152 } 152 }
153 .loading-mask .loading{ 153 .loading-mask .loading{
154 position: absolute; 154 position: absolute;
@@ -168,13 +168,13 @@ a{ @@ -168,13 +168,13 @@ a{
168 background: #fff; 168 background: #fff;
169 } 169 }
170 .loading-mask .loading > div:nth-child(1){ 170 .loading-mask .loading > div:nth-child(1){
171 - animation: scale 0.75s (1 + 1) * 0.12s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08); 171 + animation: scale 0.75s 0.12s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
172 } 172 }
173 .loading-mask .loading > div:nth-child(2){ 173 .loading-mask .loading > div:nth-child(2){
174 - animation: scale 0.75s (2 + 1) * 0.12s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08); 174 + animation: scale 0.75s 0.24s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
175 } 175 }
176 .loading-mask .loading > div:nth-child(3){ 176 .loading-mask .loading > div:nth-child(3){
177 - animation: scale 0.75s (3 + 1) * 0.12s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08); 177 + animation: scale 0.75s 0.36s infinite cubic-bezier(0.2, 0.68, 0.18, 1.08);
178 } 178 }
179 /* stylelint-disable */ 179 /* stylelint-disable */
180 /** 180 /**
@@ -730,6 +730,7 @@ a{ @@ -730,6 +730,7 @@ a{
730 height: auto; 730 height: auto;
731 color: #fff; 731 color: #fff;
732 line-height: 1rem; 732 line-height: 1rem;
  733 + font-size: 0.35rem;
733 } 734 }
734 .homebuttom.boys{ 735 .homebuttom.boys{
735 background-image: linear-gradient(#323232, #414141); 736 background-image: linear-gradient(#323232, #414141);
@@ -2478,10 +2479,10 @@ a{ @@ -2478,10 +2479,10 @@ a{
2478 height: 100%; 2479 height: 100%;
2479 } 2480 }
2480 .break-code-page .banner-swiper{ 2481 .break-code-page .banner-swiper{
2481 - height: 5rem; 2482 + height: auto;
2482 } 2483 }
2483 .break-code-page .banner-swiper ul{ 2484 .break-code-page .banner-swiper ul{
2484 - height: 5rem; 2485 + height: auto;
2485 } 2486 }
2486 .break-code-page .swiper-size{ 2487 .break-code-page .swiper-size{
2487 display: none; 2488 display: none;
@@ -2601,10 +2602,10 @@ a{ @@ -2601,10 +2602,10 @@ a{
2601 background-color: #fff; 2602 background-color: #fff;
2602 } 2603 }
2603 .sale-page .banner-top .swiper-container{ 2604 .sale-page .banner-top .swiper-container{
2604 - height: 5rem; 2605 + height: auto;
2605 } 2606 }
2606 .sale-page .banner-top .swiper-container ul{ 2607 .sale-page .banner-top .swiper-container ul{
2607 - height: 5rem; 2608 + height: auto;
2608 } 2609 }
2609 .sale-page #thumb-row{ 2610 .sale-page #thumb-row{
2610 overflow: hidden; 2611 overflow: hidden;
@@ -2635,10 +2636,10 @@ a{ @@ -2635,10 +2636,10 @@ a{
2635 white-space: nowrap; 2636 white-space: nowrap;
2636 } 2637 }
2637 .sale-vip-page .banner-swiper{ 2638 .sale-vip-page .banner-swiper{
2638 - height: 5rem; 2639 + height: auto;
2639 } 2640 }
2640 .sale-vip-page .banner-swiper ul{ 2641 .sale-vip-page .banner-swiper ul{
2641 - height: 5rem; 2642 + height: auto;
2642 } 2643 }
2643 .discount-page{ 2644 .discount-page{
2644 overflow: hidden; 2645 overflow: hidden;
@@ -5438,5 +5439,451 @@ a{ @@ -5438,5 +5439,451 @@ a{
5438 color: #fff; 5439 color: #fff;
5439 background: #000; 5440 background: #000;
5440 } 5441 }
  5442 +.star-page{
  5443 + background: #333;
  5444 +}
  5445 +.star-page a{
  5446 + text-decoration: none;
  5447 + outline: none;
  5448 + color: #000;
  5449 +}
  5450 +.star-page a:link, .star-page a:visited, .star-page a:hover, .star-page a:actived{
  5451 + color: #000;
  5452 +}
  5453 +.star-page *:focus{
  5454 + outline: none;
  5455 +}
  5456 +.star-page .font-bold{
  5457 + font-weight: bold;
  5458 +}
  5459 +.star-page .head-tab{
  5460 + position: relative;
  5461 + width: 100%;
  5462 + height: 2.2rem;
  5463 + background: #000;
  5464 + z-index: 1;
  5465 + transform-origin: top;
  5466 + transform: scale(1, 1);
  5467 + transition: transform 400ms;
  5468 +}
  5469 +.star-page .head-tab li{
  5470 + width: 33.3%;
  5471 + text-align: center;
  5472 + float: left;
  5473 + line-height: 2.2rem;
  5474 + font-size: 0.75rem;
  5475 +}
  5476 +.star-page .head-tab li a{
  5477 + color: #b0b0b0;
  5478 + display: inline-block;
  5479 +}
  5480 +.star-page .head-tab li.cur a{
  5481 + color: #fff;
  5482 +}
  5483 +.star-page .head-tab.hide-tab{
  5484 + transform: scale(1, 0);
  5485 +}
  5486 +.star-page .banner-top{
  5487 + width: 100%;
  5488 + height: auto;
  5489 + position: relative;
  5490 +}
  5491 +.star-page .banner-top .banner-swiper{
  5492 + width: 100%;
  5493 + height: auto;
  5494 + overflow: hidden;
  5495 + position: relative;
  5496 +}
  5497 +.star-page .banner-top .banner-swiper ul{
  5498 + position: relative;
  5499 + height: auto;
  5500 +}
  5501 +.star-page .banner-top .banner-swiper ul li{
  5502 + float: left;
  5503 + width: 100%;
  5504 + height: auto;
  5505 +}
  5506 +.star-page .banner-top .banner-swiper ul img{
  5507 + width: 100%;
  5508 + height: 100%;
  5509 +}
  5510 +.star-page .banner-top .swiper-pagination{
  5511 + position: absolute;
  5512 + left: 0;
  5513 + right: 0;
  5514 + bottom: 0.5rem;
  5515 + text-align: center;
  5516 + z-index: 1;
  5517 +}
  5518 +.star-page .banner-top .swiper-pagination .pagination-inner{
  5519 + display: inline-block;
  5520 +}
  5521 +.star-page .banner-top .swiper-pagination span{
  5522 + display: inline-block;
  5523 + width: 0.35rem;
  5524 + height: 0.35rem;
  5525 + background: #fff;
  5526 + opacity: 0.5;
  5527 + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
  5528 + margin: 0 0.25rem;
  5529 + border-radius: 50%;
  5530 +}
  5531 +.star-page .banner-top .swiper-pagination .swiper-pagination-bullet-active{
  5532 + background: #fff;
  5533 + opacity: 1;
  5534 + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
  5535 +}
  5536 +.star-page .avatar-swiper{
  5537 + overflow: hidden;
  5538 + margin-top: 0.75rem;
  5539 + background: #000;
  5540 +}
  5541 +.star-page .avatar-swiper li{
  5542 + float: left;
  5543 + width: auto;
  5544 + width: 2.75rem;
  5545 + height: 2.75rem;
  5546 + margin-top: 0.85rem;
  5547 + background: #282828;
  5548 +}
  5549 +.star-page .avatar-swiper li span{
  5550 + display: block;
  5551 + width: 100%;
  5552 + height: 100%;
  5553 +}
  5554 +.star-page .avatar-swiper .swiper-slide-active{
  5555 + width: 4.5rem;
  5556 + height: 4.5rem;
  5557 + margin-top: 0;
  5558 +}
  5559 +.star-page .avatar-swiper .swiper-slide-prev, .star-page .avatar-swiper .swiper-slide-next{
  5560 + width: 3.25rem;
  5561 + height: 3.25rem;
  5562 + margin-top: 0.675rem;
  5563 +}
  5564 +.star-page .avatar-swiper.avatar-clone{
  5565 + margin-top: 0;
  5566 + position: relative;
  5567 + padding: 0.125rem 0;
  5568 + z-index: 9;
  5569 + background: #000;
  5570 +}
  5571 +.star-page .star-info{
  5572 + margin-top: 0.75rem;
  5573 + background: #000;
  5574 +}
  5575 +.star-page .star-info li{
  5576 + float: left;
  5577 + margin-bottom: 0.75rem;
  5578 +}
  5579 +.star-page .star-avatar{
  5580 + width: 3.35rem;
  5581 + padding-left: 0.75rem;
  5582 + box-sizing: border-box;
  5583 + float: left;
  5584 + overflow: hidden;
  5585 +}
  5586 +.star-page .star-avatar .article-avatar-swiper{
  5587 + width: 2.6rem;
  5588 + overflow: hidden;
  5589 +}
  5590 +.star-page .star-avatar .rank-avatar{
  5591 + width: 2.6rem;
  5592 + height: 2.6rem;
  5593 + border-radius: 50%;
  5594 + float: left;
  5595 +}
  5596 +.star-page .star-avatar .name{
  5597 + font-size: 0.6rem;
  5598 + width: 100%;
  5599 + text-overflow: ellipsis;
  5600 + overflow: hidden;
  5601 + white-space: nowrap;
  5602 + color: #fff;
  5603 + margin-top: 0.2rem;
  5604 + float: left;
  5605 + text-align: center;
  5606 +}
  5607 +.star-page .star-article{
  5608 + width: 11.8rem;
  5609 + position: relative;
  5610 + border-radius: 0.2rem;
  5611 + background: #282828;
  5612 + float: left;
  5613 + padding: 0.5rem 0.75rem;
  5614 + box-sizing: border-box;
  5615 + margin-left: 0.45rem;
  5616 +}
  5617 +.star-page .star-article .article-arrow{
  5618 + position: absolute;
  5619 + left: -0.325rem;
  5620 + width: 0;
  5621 + height: 0;
  5622 + border-top: 0.25rem solid transparent;
  5623 + border-bottom: 0.25rem solid transparent;
  5624 + border-right: 0.325rem solid #282828;
  5625 +}
  5626 +.star-page .star-article .article-title{
  5627 + font-size: 0.7rem;
  5628 + line-height: 0.95rem;
  5629 + color: #fff;
  5630 +}
  5631 +.star-page .star-article .artice-cont{
  5632 + margin-top: 0.25rem;
  5633 +}
  5634 +.star-page .star-article .artice-cont p{
  5635 + font-size: 0.45rem;
  5636 + line-height: 0.725rem;
  5637 + color: #969696;
  5638 +}
  5639 +.star-page .star-article .artice-imgs-area{
  5640 + width: 100%;
  5641 + overflow: hidden;
  5642 +}
  5643 +.star-page .star-article .artice-imgs-area img{
  5644 + width: 6.65rem;
  5645 + float: left;
  5646 + margin: 0.625rem 0;
  5647 +}
  5648 +.star-page .star-article .artice-imgs{
  5649 + margin: 0.625rem 0 0;
  5650 + width: 62.5rem;
  5651 + float: left;
  5652 + overflow: hidden;
  5653 +}
  5654 +.star-page .star-article .artice-imgs li{
  5655 + display: inline-block;
  5656 + margin-left: 0.15rem;
  5657 + position: relative;
  5658 +}
  5659 +.star-page .star-article .artice-imgs li:first{
  5660 + margin-left: 0;
  5661 +}
  5662 +.star-page .star-article .artice-imgs img{
  5663 + width: 3.25rem;
  5664 + border-radius: 0.1rem;
  5665 +}
  5666 +.star-page .star-article .artice-imgs .img-size{
  5667 + width: 1.25rem;
  5668 + height: 0.65rem;
  5669 + line-height: 0.7rem;
  5670 + border-radius: 0.325rem;
  5671 + background-color: rgba(0, 0, 0, 0.4);
  5672 + color: #fff;
  5673 + position: absolute;
  5674 + right: 0.25rem;
  5675 + bottom: 0.25rem;
  5676 + font-size: 0.45rem;
  5677 +}
  5678 +.star-page .star-article .artice-imgs .pic-icon{
  5679 + width: 0.475rem;
  5680 + height: 0.375rem;
  5681 + background-image: url(../img/sprite.guang.png);
  5682 + background-position: 0px 0px;
  5683 + background-size: 0.475rem 0.375rem;
  5684 + display: inline-block;
  5685 + margin: 0.15rem 0.1rem 0 0.2rem;
  5686 + vertical-align: top;
  5687 +}
  5688 +.star-page .star-article .artice-o{
  5689 + width: 100%;
  5690 + float: left;
  5691 + border-top: 1px solid #b0b0b0;
  5692 + padding-top: 0.5rem;
  5693 +}
  5694 +.star-page .star-article .artice-o span{
  5695 + font-size: 0.45rem;
  5696 + color: #b0b0b0;
  5697 + height: 0.55rem;
  5698 + line-height: 0.55rem;
  5699 +}
  5700 +.star-page .star-article .artice-o span i{
  5701 + display: inline-block;
  5702 + margin-right: 0.125rem;
  5703 + font-size: 0.55rem;
  5704 + vertical-align: text-bottom;
  5705 +}
  5706 +.star-page .star-article .artice-o .time{
  5707 + float: left;
  5708 +}
  5709 +.star-page .star-article .artice-o .see{
  5710 + float: left;
  5711 + margin-left: 0.75rem;
  5712 +}
  5713 +.star-page .star-article .artice-o .time-ico{
  5714 + width: 0.6rem;
  5715 + height: 0.6rem;
  5716 +}
  5717 +.star-page .star-article .artice-o .see-ico{
  5718 + width: 0.775rem;
  5719 + height: 0.6rem;
  5720 +}
  5721 +.star-page .view-area{
  5722 + height: 100%;
  5723 + position: relative;
  5724 +}
  5725 +.star-page .swiper-view{
  5726 + height: 100%;
  5727 + background: rgba(0, 0, 0, 0.5);
  5728 +}
  5729 +.star-page .view-img{
  5730 + position: fixed;
  5731 + left: 0;
  5732 + right: 0;
  5733 + top: 0;
  5734 + bottom: 0;
  5735 + display: none;
  5736 + z-index: 9;
  5737 +}
  5738 +.star-page .view-img li{
  5739 + float: left;
  5740 +}
  5741 +.star-page .view-img li img{
  5742 + width: 90%;
  5743 + transform: translate(-50%, -50%);
  5744 + position: absolute;
  5745 + top: 50%;
  5746 + left: 50%;
  5747 +}
  5748 +.star-page .rank-avatar{
  5749 + background-image: url('../img/guang/star/user-avatar.png');
  5750 + background-repeat: no-repeat;
  5751 + background-size: contain;
  5752 +}
  5753 +.star-page .loading-tip{
  5754 + display: none;
  5755 + text-align: center;
  5756 + color: #ccc;
  5757 + font-size: 0.3rem;
  5758 + margin: 0.75rem 0;
  5759 +}
  5760 +.star-page .swiper-num{
  5761 + width: 1.375rem;
  5762 + display: none;
  5763 +}
  5764 +.star-index-bg{
  5765 + background: #000;
  5766 +}
  5767 +.star-index-bg .star-page{
  5768 + background: #000;
  5769 +}
  5770 +.star-page .special-list{
  5771 + width: 100%;
  5772 + height: auto;
  5773 + overflow: hidden;
  5774 +}
  5775 +.star-page .special-list li{
  5776 + width: 100%;
  5777 + float: left;
  5778 + background: #000;
  5779 + margin-top: 0.75rem;
  5780 +}
  5781 +.star-page .special-list li img{
  5782 + width: 100%;
  5783 +}
  5784 +.star-page .special-list li p{
  5785 + width: 100%;
  5786 + height: 2.2rem;
  5787 + box-sizing: border-box;
  5788 + overflow: hidden;
  5789 + white-space: nowrap;
  5790 + text-overflow: ellipsis;
  5791 + padding: 0 0.85rem;
  5792 + font-size: 0.85rem;
  5793 + line-height: 2.2rem;
  5794 +}
  5795 +.star-page .special-list li a{
  5796 + color: #fff;
  5797 +}
  5798 +.star-page .collocation-list, .star-page .detail-list{
  5799 + width: 100%;
  5800 + float: left;
  5801 +}
  5802 +.star-page .collocation-list li, .star-page .detail-list li{
  5803 + float: left;
  5804 + width: 100%;
  5805 + margin-top: 0.75rem;
  5806 + background: #000;
  5807 +}
  5808 +.star-page .collocation-list li .cont-area, .star-page .detail-list li .cont-area{
  5809 + width: 100%;
  5810 + box-sizing: border-box;
  5811 + padding: 0.75rem;
  5812 +}
  5813 +.star-page .collocation-list li .cont-txt, .star-page .detail-list li .cont-txt{
  5814 + font-size: 0.7rem;
  5815 + line-height: 1.15rem;
  5816 + color: #b0b0b0;
  5817 + margin-top: 0.25rem;
  5818 +}
  5819 +.star-page .collocation-list li img, .star-page .detail-list li img{
  5820 + width: 100%;
  5821 +}
  5822 +.star-page .collocation-list li .title, .star-page .detail-list li .title{
  5823 + font-size: 1rem;
  5824 + line-height: 1.2rem;
  5825 + color: #fff;
  5826 + width: 100%;
  5827 +}
  5828 +.star-page .count-area{
  5829 + position: relative;
  5830 + width: 100%;
  5831 + height: 0.8rem;
  5832 +}
  5833 +.star-page .count-area span{
  5834 + font-size: 0.6rem;
  5835 + color: #b0b0b0;
  5836 + height: 0.8rem;
  5837 + line-height: 0.8rem;
  5838 +}
  5839 +.star-page .count-area span i{
  5840 + display: inline-block;
  5841 + margin-right: 0.125rem;
  5842 + font-size: 0.6rem;
  5843 + position: relative;
  5844 + top: -0.05rem;
  5845 +}
  5846 +.star-page .count-area .time{
  5847 + float: left;
  5848 +}
  5849 +.star-page .count-area .see{
  5850 + float: left;
  5851 + margin-left: 0.5rem;
  5852 +}
  5853 +.star-page .count-area .time-ico{
  5854 + width: 0.6rem;
  5855 + height: 0.6rem;
  5856 +}
  5857 +.star-page .count-area .see-ico{
  5858 + width: 0.775rem;
  5859 + height: 0.6rem;
  5860 +}
  5861 +.star-page .count-area .collection{
  5862 + float: right;
  5863 +}
  5864 +.star-page .count-area .collected-ico{
  5865 + width: 0.85rem;
  5866 + height: 0.8rem;
  5867 + vertical-align: text-bottom;
  5868 +}
  5869 +.star-page .count-area .collected{
  5870 + color: #d62927;
  5871 +}
  5872 +.star-page .count-area .forward{
  5873 + width: 1rem;
  5874 + height: 0.7rem;
  5875 + float: right;
  5876 + margin-left: 1.125rem;
  5877 + font-size: 0.6rem;
  5878 + color: #b0b0b0;
  5879 + height: 0.8rem;
  5880 + line-height: 0.8rem;
  5881 +}
  5882 +.star-class-body{
  5883 + background: #333;
  5884 + width: 100%;
  5885 + font: 0.3rem/1.5 Arial, '黑体';
  5886 + float: left;
  5887 +}
5441 5888
5442 /*# sourceMappingURL=index.css.map */ 5889 /*# sourceMappingURL=index.css.map */
This diff could not be displayed because it is too large.