commit
88c7018537
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,20 @@
|
||||
#coding=utf-8
|
||||
#
|
||||
require 'socket'
|
||||
|
||||
class ResponseIp
|
||||
def initialize(app)
|
||||
@app = app
|
||||
end
|
||||
|
||||
def ip
|
||||
addr = Socket.ip_address_list.detect{|intf| intf.ipv4_private?}.ip_address rescue
|
||||
addr || ''
|
||||
end
|
||||
|
||||
def call(env)
|
||||
status, headers, body = @app.call(env)
|
||||
headers["X-response-ip"] = ip
|
||||
[status, headers, body]
|
||||
end
|
||||
end
|
@ -0,0 +1,28 @@
|
||||
<div class="post-container">
|
||||
<div loading-spinner></div>
|
||||
<div class="post-container" style="padding-bottom:50px;">
|
||||
<div class="blue-title">欢迎加入班级</div>
|
||||
<div class="course-list-row f13 c-grey3 mt30"><span class="fl ml15 c-grey3">班级邀请码</span><input class="new-class-input ml25" ng-model="invite_code" required placeholder="请输入5位邀请码" /></div>
|
||||
<div class="course-list-row f13 c-grey3 mt10"><span class="fl ml15">角色</span></div>
|
||||
<ul class="class-list f13 c-grey3">
|
||||
<li><span class="fl ml10 class-list-name hidden">教师</span><span ng-click="selectRole(9)" ng-class="['login-box', 'fr', 'mr10', 'mt12', {'bg-grey':assistant,'checked': teacher}]"></span></li>
|
||||
<li><span class="fl ml10 class-list-name hidden">助教</span><span ng-click="selectRole(7)" ng-class="['login-box', 'fr', 'mr10', 'mt12', {'bg-grey':teacher, 'checked': assistant}]"></span></li>
|
||||
<li class="border-bottom-none"><span class="fl ml10 class-list-name hidden">学生</span><span ng-click="selectRole(10)" ng-class="['login-box', 'fr', 'mr10', 'mt12', {'checked': student}]"></span></li>
|
||||
</ul>
|
||||
|
||||
<div class="f12 c-grey6 mt10 ml15">
|
||||
<span class="f13 fb c-grey3">提示</span>
|
||||
<ul class="mb15 mt5 ml10 new-tip">
|
||||
<li><span class="project-intro-dot">•</span>教师、助教角色需要班级管理员审批</li>
|
||||
<li><span class="project-intro-dot">•</span>学生角色无需管理员审批</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="bottom-tab-wrap mt10">
|
||||
<a href="javascript:void(0);" ng-click="cancel()" class="weixin-tab c-grey border-top">取消</a>
|
||||
<a href="javascript:void(0);" ng-click="joinClass()" class="weixin-tab link-blue2 border-top">确定</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
|
||||
</div>
|
@ -0,0 +1,20 @@
|
||||
<div class="post-container">
|
||||
<div loading-spinner></div>
|
||||
<div class="post-container" style="padding-bottom:50px;">
|
||||
<div class="blue-title">欢迎加入项目</div>
|
||||
<div class="course-list-row f13 c-grey3 mt30"><span class="fl ml15 c-grey3">项目邀请码</span><input class="new-class-input ml25" ng-model="invite_code" required placeholder="请输入6位邀请码" /></div>
|
||||
<div class="course-list-row f13 c-grey3 mt10"><span class="fl ml15">角色</span></div>
|
||||
<ul class="class-list f13 c-grey3">
|
||||
<li><span class="fl ml10 class-list-name hidden">管理人员</span><span ng-click="selectRole(3)" ng-class="['login-box', 'fr', 'mr10', 'mt12','img-circle', {'checked': role_id == 3}]"></span></li>
|
||||
<li><span class="fl ml10 class-list-name hidden">开发人员</span><span ng-click="selectRole(4)" ng-class="['login-box', 'fr', 'mr10', 'mt12','img-circle', {'checked': role_id == 4}]"></span></li>
|
||||
<li class="border-bottom-none"><span class="fl ml10 class-list-name hidden">报告人员</span><span ng-click="selectRole(5)" ng-class="['login-box', 'fr', 'mr10', 'mt12','img-circle', {'checked': role_id == 5}]"></span></li>
|
||||
</ul>
|
||||
<div class="bottom-tab-wrap mt10">
|
||||
<a href="javascript:void(0);" ng-click="cancel()" class="weixin-tab c-grey border-top">取消</a>
|
||||
<a href="javascript:void(0);" ng-click="join_project()" class="weixin-tab link-blue2 border-top">确定</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
|
||||
</div>
|
@ -1,26 +1,26 @@
|
||||
<div class="post-container">
|
||||
<div loading-spinner></div>
|
||||
|
||||
<div class="blue-title">新建项目</div>
|
||||
<form novalidate name="classForm">
|
||||
<div class="course-list-row f13 c-grey3 mt30"><span class="fl ml15 c-grey3">项目名称</span><input class="new-class-input ml25" ng-model="project.name" required placeholder="如:团队协作方法与机制研究" /></div>
|
||||
<a ng-click="newProject(classForm, project)" ng-class="['finish-btn', {'btn-disabled':!classForm.$valid} ]" >完成</a>
|
||||
<div class="post-container">
|
||||
<div loading-spinner></div>
|
||||
|
||||
<div class="blue-title">新建项目</div>
|
||||
<form novalidate name="classForm">
|
||||
<div class="course-list-row f13 c-grey3 mt30"><span class="fl ml15 c-grey3">项目名称</span><input class="new-class-input ml25" ng-model="project.name" required placeholder="如:团队协作方法与机制研究" /></div>
|
||||
<a ng-click="newProject(classForm, project)" ng-class="['finish-btn', {'btn-disabled':!classForm.$valid} ]" >完成</a>
|
||||
<div class="f12 c-grey6 tac">
|
||||
<span class="f13 fb c-grey3">项目功能特性(微信版)</span>
|
||||
<ul class="project-intro mb15 mt5">
|
||||
<li>创建项目、加入项目</li>
|
||||
<li>邀请成员、修改角色</li>
|
||||
<li>浏览、回复项目动态</li>
|
||||
<li>点赞、分享项目动态</li>
|
||||
</ul>
|
||||
<span class="f13 fb c-grey3">更多项目特性(浏览器版)</span>
|
||||
<ul class="project-intro mt5">
|
||||
<li>发布任务、问题跟踪</li>
|
||||
<li>代码托管、质量分析</li>
|
||||
<li>资源分享、交流研讨</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
|
||||
</div>
|
||||
<span class="f13 fb c-grey3">项目功能特性(微信版)</span>
|
||||
<ul class="project-intro mb15 mt5">
|
||||
<li><span class="project-intro-dot">•</span>创建项目、加入项目</li>
|
||||
<li><span class="project-intro-dot">•</span>邀请成员、修改角色</li>
|
||||
<li><span class="project-intro-dot">•</span>浏览、回复项目动态</li>
|
||||
<li><span class="project-intro-dot">•</span>点赞、分享项目动态</li>
|
||||
</ul>
|
||||
<span class="f13 fb c-grey3">更多项目特性(浏览器版)</span>
|
||||
<ul class="project-intro mt5">
|
||||
<li><span class="project-intro-dot">•</span>发布任务、问题跟踪</li>
|
||||
<li><span class="project-intro-dot">•</span>代码托管、质量分析</li>
|
||||
<li><span class="project-intro-dot">•</span>资源分享、交流研讨</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
|
||||
</div>
|
||||
|
@ -0,0 +1,18 @@
|
||||
<div class="post-container">
|
||||
<div loading-spinner></div>
|
||||
<div ng-show="current_course && current_review_member " class="post-container" style="padding-bottom:50px;">
|
||||
<div class="blue-title">{{current_course.name}}</div>
|
||||
<div class="class-detail-row f13 c-grey3"><img ng-src="/images/wechat/{{current_review_member.gender==0 ? 'male' : 'female'}}.jpg" width="30" class="fl ml10 img-circle mt4" /><span class="fl mt10 ml10">{{current_review_member.realname == "" ? current_review_member.name : current_review_member.realname}}</span><img ng-src="/images/wechat/{{current_review_member.gender==0 ? 'male' : 'female'}}.png" width="15" class="fl ml10 mt10" /><div class="cl"></div> </div>
|
||||
<div class="course-list-row f13 c-grey3 mt10"><span class="fl ml10">角色</span></div>
|
||||
<ul class="class-list f13 c-grey3">
|
||||
<li><span class="fl ml10 class-list-name hidden">教师</span><span ng-class="['login-box', 'fr', 'mr10', 'mt12', {'bg-grey':current_review_member.roles_id == 7,'checked': current_review_member.roles_id == 9}]"></span></li>
|
||||
<li class="border-bottom-none"><span class="fl ml10 class-list-name hidden">助教</span><span ng-class="['login-box', 'fr', 'mr10', 'mt12', {'bg-grey':current_review_member.roles_id == 9, 'checked': current_review_member.roles_id == 7}]"></span></li>
|
||||
</ul>
|
||||
<div class="bottom-tab-wrap mt10">
|
||||
<a href="javascript:void(0);" ng-click="deal(1)" class="weixin-tab c-grey border-top">拒绝</a>
|
||||
<a href="javascript:void(0);" ng-click="deal(0)" class="weixin-tab link-blue2 border-top">同意</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
|
||||
</div>
|
@ -0,0 +1,19 @@
|
||||
<div class="post-container">
|
||||
<div loading-spinner></div>
|
||||
<div ng-show="current_review_member" class="post-container" style="padding-bottom:50px;">
|
||||
<div class="blue-title">{{project.name}}</div>
|
||||
<div class="class-detail-row f13 c-grey3"><img ng-src="/images/wechat/{{current_review_member.gender==0 ? 'male' : 'female'}}.jpg" width="30" class="fl ml10 img-circle mt4" /><span class="fl mt10 ml10">{{current_review_member.realname == "" ? current_review_member.name : current_review_member.realname}}</span><img ng-src="/images/wechat/{{current_review_member.gender==0 ? 'male' : 'female'}}.png" width="15" class="fl ml10 mt10" /><div class="cl"></div> </div>
|
||||
<div class="course-list-row f13 c-grey3 mt10"><span class="fl ml10">角色</span></div>
|
||||
<ul class="class-list f13 c-grey3">
|
||||
<li><span class="fl ml10 class-list-name hidden">管理人员</span><span ng-class="['login-box', 'fr', 'mr10', 'mt12','img-circle',{'bg-grey':current_review_member.roles_id == 4,'checked': current_review_member.roles_id == 3}]"></span></li>
|
||||
<li class="border-bottom-none"><span class="fl ml10 class-list-name hidden">开发人员</span><span ng-class="['login-box', 'fr', 'mr10', 'mt12','img-circle',{'bg-grey':current_review_member.roles_id == 3,'checked': current_review_member.roles_id == 4}]"></span></li>
|
||||
</ul>
|
||||
<div class="bottom-tab-wrap mt10">
|
||||
<a href="javascript:void(0);" ng-click="deal(1)" class="weixin-tab c-grey border-top">拒绝</a>
|
||||
<a href="javascript:void(0);" ng-click="deal(0)" class="weixin-tab link-blue2 border-top">同意</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<my-alert message="alertService.message" title="alertService.title" visible="alertService.visible" cb="alertService.cb"></my-alert>
|
||||
</div>
|
After Width: | Height: | Size: 126 KiB |
@ -0,0 +1,80 @@
|
||||
|
||||
|
||||
app.controller('JoinClassController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','wx', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,wx){
|
||||
var vm = $scope;
|
||||
|
||||
// vm.current_edit_member = rms.get('current_edit_member');
|
||||
vm.current_edit_member = null;
|
||||
var tag = $routeParams.tag;
|
||||
|
||||
vm.alertService = alertService.create();
|
||||
|
||||
vm.invite_code = "";
|
||||
vm.teacher = false; //教师
|
||||
vm.assistant = false; //教辅
|
||||
vm.student = false; //学生.
|
||||
|
||||
vm.cancel = function(){
|
||||
// vm.alertService.showMessage('提示', '您确定不对角色进行变更吗?', function(){
|
||||
// window.history.back();
|
||||
// });
|
||||
if(tag){
|
||||
window.history.back();
|
||||
}
|
||||
else{
|
||||
wx.closeWindow();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
vm.joinClass = function(){
|
||||
if((vm.teacher == false)&& (vm.assistant == false)&&(vm.student == false)){
|
||||
vm.alertService.showMessage('提示', "请至少选择一个角色");
|
||||
return;
|
||||
}
|
||||
|
||||
if(vm.invite_code.length == 0)
|
||||
{
|
||||
vm.alertService.showMessage('提示', '请输入5位邀请码');
|
||||
return;
|
||||
}
|
||||
if(vm.invite_code.length != 5)
|
||||
{
|
||||
vm.alertService.showMessage('提示', '邀请码格式不正确');
|
||||
return;
|
||||
}
|
||||
|
||||
$http.post(config.apiUrl+'courses/join_class', {
|
||||
token: auth.token(),
|
||||
invite_code: vm.invite_code,
|
||||
teacher_flag:vm.teacher,
|
||||
assistant_flag:vm.assistant,
|
||||
student_flag:vm.student
|
||||
}).then(function(response){
|
||||
if(response.data.status == 0){
|
||||
vm.alertService.showMessage('提示', response.data.message,function(){
|
||||
$location.path("/class_list");
|
||||
});
|
||||
} else {
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
vm.selectRole = function(role_id){
|
||||
if (role_id == 7){
|
||||
if(!vm.teacher){
|
||||
vm.assistant = !vm.assistant;
|
||||
}
|
||||
}
|
||||
else if (role_id == 9){
|
||||
if(!vm.assistant){
|
||||
vm.teacher = !vm.teacher;
|
||||
}
|
||||
}
|
||||
else if (role_id == 10){
|
||||
vm.student = !vm.student;
|
||||
}
|
||||
}
|
||||
|
||||
}] );
|
@ -0,0 +1,60 @@
|
||||
|
||||
|
||||
app.controller('JoinProjectController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms','wx', function($scope, $http, auth, config, alertService, $location,$routeParams, rms,wx){
|
||||
var vm = $scope;
|
||||
|
||||
// vm.current_edit_member = rms.get('current_edit_member');
|
||||
|
||||
|
||||
vm.role_id = 0;
|
||||
vm.alertService = alertService.create();
|
||||
vm.invite_code = "";
|
||||
var tag = $routeParams.tag;
|
||||
|
||||
vm.cancel = function(){
|
||||
if(tag){
|
||||
window.history.back();
|
||||
}
|
||||
else{
|
||||
wx.closeWindow();
|
||||
}
|
||||
};
|
||||
|
||||
vm.join_project = function(){
|
||||
if(vm.role_id == 0){
|
||||
vm.alertService.showMessage('提示', "请至少选择一个角色");
|
||||
return;
|
||||
}
|
||||
|
||||
if(vm.invite_code.length == 0)
|
||||
{
|
||||
vm.alertService.showMessage('提示', '请输入6位邀请码');
|
||||
return;
|
||||
}
|
||||
if(vm.invite_code.length != 6)
|
||||
{
|
||||
vm.alertService.showMessage('提示', '邀请码格式不正确');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
$http.post(config.apiUrl+'projects/join_project', {
|
||||
token: auth.token(),
|
||||
invite_code: vm.invite_code,
|
||||
role_id:vm.role_id
|
||||
}).then(function(response){
|
||||
if(response.data.status == 0){
|
||||
vm.alertService.showMessage('提示', response.data.message,function(){
|
||||
$location.path("/project_list");
|
||||
});
|
||||
} else {
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
vm.selectRole = function(role_id){
|
||||
vm.role_id = role_id;
|
||||
}
|
||||
|
||||
}] );
|
@ -0,0 +1,68 @@
|
||||
|
||||
|
||||
app.controller('ReviewClassMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
|
||||
var vm = $scope;
|
||||
|
||||
// vm.current_edit_member = rms.get('current_edit_member');
|
||||
|
||||
vm.current_review_member = rms.get('current_review_member');
|
||||
vm.current_course = rms.get('current_course');
|
||||
|
||||
vm.alertService = alertService.create();
|
||||
|
||||
var course_id = $routeParams.id;
|
||||
var user_id = $routeParams.user_id;
|
||||
|
||||
if(!vm.current_course){
|
||||
$http.get(config.apiUrl+ 'courses/'+course_id+"?token="+auth.token()).then(
|
||||
function(response) {
|
||||
console.log(response.data);
|
||||
if (response.data.status == 0){
|
||||
vm.current_course = response.data.data;
|
||||
console.log("courses");
|
||||
console.log(response.data.data);
|
||||
}
|
||||
else{
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if(!vm.current_review_member){
|
||||
$http.post(config.apiUrl+'courses/review_member_info', {
|
||||
token: auth.token(),
|
||||
course_id: course_id,
|
||||
user_id:user_id
|
||||
}).then(function(response){
|
||||
if(response.data.status!=0){
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
} else {
|
||||
vm.current_review_member = response.data.data;
|
||||
console.log("review_member_info");
|
||||
console.log(response.data.data);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
vm.deal = function(result){
|
||||
$http.post(config.apiUrl+'courses/deal_join_apply', {
|
||||
token: auth.token(),
|
||||
course_id: course_id,
|
||||
user_id:user_id,
|
||||
type:result
|
||||
}).then(function(response) {
|
||||
if (response.data.status == 0) {
|
||||
vm.alertService.showMessage('提示', response.data.message, function () {
|
||||
$location.path("/class").search({id: course_id,tag:1});
|
||||
});
|
||||
}
|
||||
else{
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
}] );
|
@ -0,0 +1,72 @@
|
||||
|
||||
|
||||
app.controller('ReviewProjectMemberController', ['$scope', '$http', 'auth', 'config', 'alertService','$location','$routeParams','rms', function($scope, $http, auth, config, alertService, $location,$routeParams, rms){
|
||||
var vm = $scope;
|
||||
|
||||
// vm.current_edit_member = rms.get('current_edit_member');
|
||||
|
||||
vm.current_review_member = rms.get('current_review_member');
|
||||
vm.current_project = rms.get('current_project');
|
||||
|
||||
vm.alertService = alertService.create();
|
||||
|
||||
var project_id = $routeParams.id;
|
||||
var user_id = $routeParams.user_id;
|
||||
|
||||
if(!vm.current_project){
|
||||
$http.get(config.apiUrl+ 'projects/'+project_id+"?token="+auth.token()).then(
|
||||
function(response) {
|
||||
console.log(response.data);
|
||||
if (response.data.status == 0){
|
||||
vm.current_project = response.data.data;
|
||||
console.log("projects");
|
||||
console.log(response.data.data);
|
||||
}
|
||||
else{
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
}
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
if(!vm.current_review_member){
|
||||
$http.post(config.apiUrl+'projects/review_member_info', {
|
||||
token: auth.token(),
|
||||
project_id: project_id,
|
||||
user_id:user_id
|
||||
}).then(function(response){
|
||||
if(response.data.status!=0){
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
} else {
|
||||
vm.current_review_member = response.data.data;
|
||||
console.log("review_member_info");
|
||||
console.log(response.data.data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
vm.deal = function(result){
|
||||
$http.post(config.apiUrl+'projects/deal_join_apply', {
|
||||
token: auth.token(),
|
||||
project_id: project_id,
|
||||
user_id:user_id,
|
||||
type:result
|
||||
}).then(function(response) {
|
||||
if (response.data.status == 0) {
|
||||
vm.alertService.showMessage('提示', response.data.message, function () {
|
||||
rms.save("project_master_members",[]);
|
||||
rms.save("project_develop_members",[]);
|
||||
rms.save("project_report_members",[]);
|
||||
rms.save("review_master_members",[]);
|
||||
rms.save("review_develop_members",[]);
|
||||
rms.save("tab_num",null);
|
||||
$location.path("/project").search({id: project_id,tag:1});
|
||||
});
|
||||
}
|
||||
else{
|
||||
vm.alertService.showMessage('提示', response.data.message);
|
||||
}
|
||||
});
|
||||
};
|
||||
}] );
|
@ -1,25 +1,25 @@
|
||||
/**
|
||||
* Created by Tim on 7/22/16.
|
||||
*/
|
||||
//app.directive('ellipsisShow',["$timeout",function(timer){
|
||||
// return{
|
||||
// restrict: 'A',
|
||||
// scope: {},
|
||||
// link: function(scope, element){
|
||||
// timer(function() {
|
||||
// var textSplit = element.text().split(" ");
|
||||
// var newContent = [];
|
||||
// element.text("");
|
||||
// for (var i = 0; i < textSplit.length; i++) {
|
||||
// newContent = newContent + " " + textSplit[i];
|
||||
// element.text(newContent);
|
||||
// if(element[0].scrollHeight >= 100){
|
||||
// newContent = newContent + " " + textSplit[i+1] + " " + textSplit[i+2] + " " + textSplit[i+3] + " " + textSplit[i+4] + "...";
|
||||
// element.text(newContent);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
//}]);
|
||||
app.directive('ellipsisShow',["$timeout",function(timer){
|
||||
return{
|
||||
restrict: 'A',
|
||||
scope: {},
|
||||
link: function(scope, element){
|
||||
timer(function() {
|
||||
var textSplit = element.text().split("");
|
||||
var newContent = [];
|
||||
element.text("");
|
||||
for (var i = 0; i < textSplit.length; i++) {
|
||||
newContent = newContent + textSplit[i];
|
||||
element.text(newContent);
|
||||
if(element[0].scrollHeight >= 100){
|
||||
newContent = newContent + textSplit[i+1] + textSplit[i+2] + textSplit[i+3] + textSplit[i+4] + textSplit[i+5] + textSplit[i+6] + textSplit[i+7] + textSplit[i+8] + textSplit[i+9] + textSplit[i+10] + "...";
|
||||
element.text(newContent);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}]);
|
@ -1,245 +1,250 @@
|
||||
@charset "utf-8";
|
||||
/* CSS Document */
|
||||
|
||||
/*基本样式*/
|
||||
body,table,input,textarea,select,button { font-family: "微软雅黑","宋体","Helvetica Neue", Helvetica, Arial, sans-serif;}
|
||||
body, ul, h1,h2,h3,h4,h5,p,pre,input {padding:0px; margin:0px;}
|
||||
body{background-color: #efeff4;}
|
||||
ul li {list-style:none;}
|
||||
img {max-width:100%;}
|
||||
blockquote {border:1px solid #d4d4d4; padding: 0.6em; margin: 5px 0.4em 5px 1.4em; border-radius: 4px; font-family: "Microsoft YaHei"; background-size: 100% 100%;}
|
||||
.text-control {word-break:normal; word-wrap:break-word;}
|
||||
.f12 {font-size:12px;}
|
||||
.f13 {font-size:13px;}
|
||||
.f14 {font-size:14px;}
|
||||
.f15 {font-size:15px;}
|
||||
.f16 {font-size:16px;}
|
||||
.fb {font-weight:bold;}
|
||||
.mt2 {margin-top:2px;}
|
||||
.mt3 {margin-top:3px;}
|
||||
.mt4 {margin-top:4px;}
|
||||
.mt5 {margin-top:5px;}
|
||||
.mt10 {margin-top:10px;}
|
||||
.mt11 {margin-top:11px;}
|
||||
.mt12 {margin-top:12px;}
|
||||
.mt15 {margin-top:15px;}
|
||||
.mt30 {margin-top:30px;}
|
||||
.mt70 {margin-top:70px;}
|
||||
.mb5 {margin-bottom:5px;}
|
||||
.mb10 {margin-bottom:10px;}
|
||||
.mb15 {margin-bottom:15px;}
|
||||
.mb20 {margin-bottom:20px;}
|
||||
.mb50 {margin-bottom:50px;}
|
||||
.ml5 {margin-left:5px;}
|
||||
.ml10 {margin-left:10px;}
|
||||
.ml40 {margin-left:40px;}
|
||||
.mr5 {margin-right:5px;}
|
||||
.mr10 {margin-right:10px;}
|
||||
.ml15 {margin-left:15px;}
|
||||
.ml35 {margin-left:35px;}
|
||||
.mr15 {margin-right:15px;}
|
||||
.mr20 {margin-right:20px;}
|
||||
.ml25 {margin-left:25px;}
|
||||
.mr25 {margin-right:25px;}
|
||||
.ml55 {margin-left:55px;}
|
||||
.mr55 {margin-right:55px;}
|
||||
.c-red {color:#e81a1a;}
|
||||
.c-blue {color:#269ac9;}
|
||||
.c-grey {color:#9a9a9a !important;}
|
||||
.c-grey2 {color:#707070;}
|
||||
.c-grey3 {color:#555555;}
|
||||
.c-grey4 {color:#888888;}
|
||||
.c-grey5 {color:#aaaaaa;}
|
||||
.c-grey6 {color:#777777;}
|
||||
.c-blue {color:#3b94d6;}
|
||||
.c-white {color:#ffffff;}
|
||||
.c-black {color:#333}
|
||||
a {color:#707070;}
|
||||
a.c-grey {color:#707070;}
|
||||
a.c-grey2 {color:#9a9a9a;}
|
||||
a.c-grey3 {color:#353535;}
|
||||
a.c-green {color:#0bb20c;}
|
||||
a:link,a:visited{text-decoration:none;}
|
||||
a:hover,a:active{cursor:pointer;}
|
||||
a.link-blue {color:#269ac9;}
|
||||
a.link-blue2 {color:#3b94d6;}
|
||||
a.underline {text-decoration:underline;}
|
||||
.border-radius {border-radius:5px;}
|
||||
.w36 {width:36px;}
|
||||
.max-width-60 {max-width:60px;}
|
||||
.max-width-130 {max-width:130px;}
|
||||
.hidden {overflow:hidden; white-space:nowrap; text-overflow:ellipsis;}
|
||||
.inline-block {display:inline-block;}
|
||||
.dis {display:block;}
|
||||
.undis {display:none;}
|
||||
.text-nowrap {white-space:nowrap;}
|
||||
.v-top {vertical-align:top;}
|
||||
.tac {text-align:center;}
|
||||
.block-center {margin-left:auto; margin-right:auto; display:block;}
|
||||
|
||||
/*背景色*/
|
||||
.bg-grey {background-color:#c1c1c1 !important;}
|
||||
.bg-blue {background-color:#3b94d6;}
|
||||
|
||||
/*按钮样式*/
|
||||
.btn1 {width:100%; height:40px; line-height:40px; vertical-align:middle; text-align:center; color:#fff; display:block; border-radius:5px;}
|
||||
.bg-blue:not(.btn-disabled):active {background-color:#2780c2;}
|
||||
.btn-disabled {background-color:#ccc !important;}
|
||||
.btn2 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; margin:18px auto 20px auto; border-radius:50px; display:block;}
|
||||
.btn3 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; border-radius:50px; display:block;}
|
||||
.fixed-bottom-btn {position:fixed; bottom:5px; left:50%; transform:translate(-50%,0);}
|
||||
|
||||
/*tab*/
|
||||
.tab-wrap {position:relative; width:100%; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
|
||||
.tab-wrap a {position:relative; display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1;}
|
||||
.tab-wrap a:first-child:after {display:none;}
|
||||
.tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
|
||||
.weixin-tab {text-align:center; border-bottom:1px solid #ccc;}
|
||||
|
||||
/*bottom-tab*/
|
||||
.bottom-tab-wrap {position:fixed; width:100%; bottom:0; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
|
||||
.bottom-tab-wrap a {display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1; position:relative;}
|
||||
.bottom-tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
|
||||
|
||||
/*动态样式*/
|
||||
.post-container {width:100%;}
|
||||
.post-wrapper {width:100%; background-color:#ffffff; margin:10px auto;}
|
||||
.post-main {padding:10px 15px; color:#9a9a9a;}
|
||||
.post-avatar {width:30px; height:30px;}
|
||||
.post-title {font-size:13px; text-align:left;}
|
||||
.post-detail-info {font-size:13px; text-align:left; color:#9a9a9a;}
|
||||
.fl {float:left;}
|
||||
.fr {float:right;}
|
||||
.cl {clear:both; overflow:hidden;}
|
||||
.post-content {width:100%; font-size:14px; line-height:20px; height:100px; overflow:hidden; word-break:normal; word-wrap:break-word; text-align:justify;}
|
||||
.post-all-content a {color:#136ec2;}
|
||||
.post-interactive {width:100%; height:35px; line-height:35px; vertical-align:middle; border-top:1px solid #e6e6e6; background-color:#f8f9fb;}
|
||||
.post-interactive-column,
|
||||
.post-interactive-reply,
|
||||
.post-interactive-praise {width:50%; text-align:center; float:left; font-size:13px;}
|
||||
.more-wrap {width:100%;}
|
||||
.more-events {width:100%; font-size:13px; text-align:center; margin:0 auto; padding: 5px 0; border-top:1px solid #e6e6e6; border-bottom:1px solid #e6e6e6; border-radius:3px; background-color:#f8f9fb; }
|
||||
.border-bottom {border-bottom:1px solid #e6e6e6;}
|
||||
.post-reply-wrap {width:100%;}
|
||||
.post-reply-wrap:first-child {border-top:1px solid #ccc;}
|
||||
.post-input-wrap {width:100%; position:fixed; bottom:0; background-color:#fff;}
|
||||
.post-input-wrap2 {width:100%;}
|
||||
.post-reply-row {margin:10px 15px; color:#9a9a9a; background-color:#fff; border-bottom:1px solid #f0f0f0;}
|
||||
.post-reply-avatar {width:45px; height:30px; text-align:center; margin-right:10px;}
|
||||
.post-reply-user {font-size:13px; text-align:left; margin-bottom:10px;}
|
||||
.post-reply-content {font-size:13px; word-break:break-all; word-wrap:break-word; overflow:hidden; text-align:justify;}
|
||||
.post-reply-content img {max-width:100%;}
|
||||
.post-reply-content a {color:#136ec2;}
|
||||
.post-reply-date, .post-reply-trigger {font-size:13px;}
|
||||
.post-input-container {position:relative; padding-right:70px;}
|
||||
.copy-input-container {position:relative; padding-right:70px;}
|
||||
.copy-input {width:100%; height:18px; line-height:18px; padding:5px; vertical-align: middle; font-size:12px; border-radius:3px; position:absolute; left:-999em;}
|
||||
.post-reply-input {width:100%; height:18px; max-height:54px; line-height:18px; vertical-align: middle; font-size:13px; border:1px solid #e6e6e6; outline:none; padding:5px; margin:0; border-radius:3px; overflow-y:auto; resize:none; background-color:#f0eff4;}
|
||||
.post-reply-submit {position:absolute; font-size:13px; height:30px; line-height:30px; vertical-align:middle; padding:0 8px; color:#fff; background-color:#269ac9; outline:none; border:none; top:0; right:0;}
|
||||
.reply-icon {background:url(/images/wechat/icon_list.gif) -150px -155px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
|
||||
.praise-icon {background:url(/images/wechat/icon_list.gif) -36px -88px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
|
||||
.praised-icon {background:url(/images/wechat/icon_list.gif) -152px -86px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
|
||||
.num-block {display:inline-block; vertical-align:top;}
|
||||
.post-op-banner {height:20px; line-height:20px; vertical-align:middle;}
|
||||
|
||||
/*20160628动态新样式*/
|
||||
.post-dynamic-author {width:50%; height:30px; line-height:30px; font-size:14px; color:#5b5b5b; vertical-align:middle;}
|
||||
.post-dynamic-time {height:30px; line-height:30px; vertical-align:middle;}
|
||||
.post-dynamic-title {font-size:15px;}
|
||||
.post-dynamic-from {width:50%; font-size:13px;}
|
||||
.post-box-shadow {box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);}
|
||||
.post-reply-author {width:50%; height:20px; line-height:20px; font-size:12px; color:#5d5d5d; vertical-align:middle;}
|
||||
.post-reply-time {height:20px; line-height:20px; vertical-align:middle;}
|
||||
|
||||
/* loading 弹框*/
|
||||
.loading-bg {position:fixed; width:100%; height:100%; left:0; top:0; z-index:99; background:rgba(206, 206, 206, 0.3); overflow:hidden;}
|
||||
.loading-box {position:absolute; top:50%; background:rgba(240,240,240, 0.5); width:160px; height:72px; left:50%; margin-top:-36px; margin-left:-80px; text-align:center;}
|
||||
.loading-box img {margin-top: 3px; text-align: center;}
|
||||
.loading-box span {display: block; font-size:12px;}
|
||||
|
||||
/*帖子锁定样式*/
|
||||
.locked_btn_cir {background: url("/images/wechat/locked.png") 0 0 no-repeat; cursor: default;}
|
||||
|
||||
/*20150612加入班级样式*/
|
||||
.add-class-box {position:fixed; width:80%; max-width:300px; min-width:240px; font-size:15px; color:#444; background-color:#fff; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); border-radius:5px; top:50%; left:50%; transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -webkit-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%);}
|
||||
.add-class-tip {padding-top:1.2em; padding-bottom:.5em; font-weight:400;}
|
||||
.class-number-input {width:80%; max-width:240px; height:28px; border:1px solid #ccc; padding-left:5px; margin:0 auto; display:block;}
|
||||
.cancel-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
|
||||
.submit-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
|
||||
.slice {width:2%; text-align:center; border-top:1px solid #ccc;}
|
||||
.slice-line {width:1px; height:37px; margin:auto; background:#ccc;}
|
||||
|
||||
/*20160613邀请码样式*/
|
||||
.qr-code-wrap {width:100%; padding:40px 0; background-color:#3b94d6;}
|
||||
.qr-code-box {width:225px; background-color:#fff; border-radius:3px; margin:0 auto;}
|
||||
.share-class-name {font-size:18px; color:#3b3b3b; text-align:center; padding:12px; border-bottom:1px solid #cccccc;}
|
||||
.qr-img-wrap {width:100%; border-bottom:1px dashed #ccc;}
|
||||
.qr-code-img {margin:36px auto; display:block;}
|
||||
.invitation-code-wrap {text-align:center; font-size:18px; color:#3b3b3b; padding:16px;}
|
||||
.share-code-wrap {width:100%; background-color:#efeff4;}
|
||||
.share-code-btn, .finish-btn {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; background-color:#ff7239; margin:18px auto 20px auto; border-radius:50px; display:block;}
|
||||
.share-code-instruction {max-width:228px; font-size:12px; color:#666; line-height:20px; margin:0 auto;}
|
||||
|
||||
/*20160613班级详情*/
|
||||
.class-detail-name, .blue-title {width:100%; height:45px; line-height:45px; vertical-align:middle; background-color:#3b94d6; color:#fff; font-size:18px; text-align:center;}
|
||||
.blue-title-sub {position:absolute; right:10px;}
|
||||
.slice2 {width:2%; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
|
||||
.slice3 {width:1%; height:38px; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
|
||||
.slice-line2 {width:1px; height:38px; margin:auto; background:#ccc;}
|
||||
.class-detail-tab {width:23%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
|
||||
.class-detail-tab2 {width:32%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
|
||||
.class-detail-tab3 {width:48%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
|
||||
.class-tab-active {border-bottom:3px solid #3b94d6;}
|
||||
.tab-active-arrow {border-width:4px; position:absolute; top:41px; left:50%; transform:translate(-50%,0); border-color:#3b94d6 transparent transparent transparent; border-style:solid dashed dashed dashed;}
|
||||
.class-search-wrap {padding:8px 12px; position:relative;}
|
||||
.class-search-inner {padding:0 30px; background-color:#fff;}
|
||||
.class-search-icon {position:absolute; top:16px; left:16px;}
|
||||
.class-detail-search {width:100%; height:33px; color:#999; background-color:#fff; border:none; outline:none;}
|
||||
.border-top {border-top:1px solid #ccc;}
|
||||
.class-detail-row {width:100%; line-height:18px; padding:10px 0; border-bottom:1px solid #ccc; background-color:#fff;}
|
||||
.class-member-row {width:100%; line-height:18px; padding:5px 0; border-bottom:1px solid #ccc; background-color:#fff; position:relative;}
|
||||
.class-test-tip {text-align:center; font-size:13px; color:#444; padding-top:40px;}
|
||||
.img-circle {border-radius:50% !important;}
|
||||
.member-banner {height:24px; line-height:24px; text-align:center; vertical-align:middle; background-color:#dfdfdf;}
|
||||
.resource-width {width:76%;}
|
||||
.courseware-from-width {max-width:57%;}
|
||||
.other-from-width {max-width:80%;}
|
||||
.course-name-width {width:68%;}
|
||||
|
||||
/*20160614班级列表*/
|
||||
.course-diff-row {width:100%; height:28px; line-height:28px; vertical-align:middle; background-color:#fff; border-bottom:1px solid #ccc;}
|
||||
.course-list-row {width:100%; height:38px; line-height:38px; vertical-align:middle; border-top:1px solid #ccc; border-bottom:1px solid #ccc; background-color:#fff;}
|
||||
.class-list {width:100%; border-bottom:1px solid #ccc;}
|
||||
.class-list li {height:40px; line-height:40px; vertical-align:middle; margin:0 25px; border-left:1px solid #ccc; border-bottom:1px solid #ccc; position:relative;}
|
||||
.class-list-name {max-width:75%; display:inline-block;}
|
||||
.class-list-dot {position:absolute; top:13px; left:-8px;}
|
||||
.border-bottom-none {border-bottom:none !important;}
|
||||
.border-top-none {border-top:none !important;}
|
||||
.students-amount {height:14px; line-height:14px; vertical-align:middle; padding:2px 5px; background-color:#e6e6e6; border-radius:10px;}
|
||||
.new-class-btn {font-size:15px; color:#fff; background-color:#3b94d6; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
|
||||
.join-class-btn {font-size:15px; color:#444; background-color:#ccc; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
|
||||
.new-class-input {width:60%; color:#555; height:16px; line-height:16px; vertical-align:middle; border:none; outline:none; padding:8px 0;}
|
||||
.class-list-setting {position:absolute; top:11px; right:10px;}
|
||||
.class-setting-wrap {width:38px; height:38px; position:absolute; top:0; right:0;}
|
||||
|
||||
/*20160616登录注册*/
|
||||
.login-wrap {padding:0 10px;}
|
||||
.input-box-wrap {padding-right:17px;}
|
||||
.input-box { -webkit-appearance: none; font-size: 15px;width:100%; height:18px; padding: 10px 0px 10px 5px; line-height:18px; border:1px solid #ccc; border-radius:5px;}
|
||||
.login-op-wrap {height:30px; line-height:30px; vertical-align:middle;}
|
||||
.login-box{display:inline-block; width:14px; height:14px; line-height:14px; text-align:center; vertical-align:middle; border:1px solid #ccc; background:#fff; border-radius:3px; color:#fff; cursor:pointer;}
|
||||
.login-box.checked{background:#63c360; border:1px solid #63c360;}
|
||||
.login-box.checked:after{content:url(/images/wechat/checked.png);}
|
||||
.forget-psw-wrap {width:60px; margin:0 auto;}
|
||||
.forget-psw {position:fixed; bottom:10px;}
|
||||
|
||||
/*二级回复*/
|
||||
.mult-reply-container{ border:solid 1px #f3ddb3; background:#fffef4; padding:4px;color:#999;}
|
||||
.mult-reply-content{ color:#555; font-size:13px;}
|
||||
.mult-reply-hide{ text-align:center; display:block; font-size:14px; color:#aaa; border-bottom:1px solid #F3DDB3; padding:8px 0;}
|
||||
.mult-reply-arrow{ color:#aaa; margin-right:10px; font-size:14px; font-weight:bold;}
|
||||
|
||||
|
||||
/*20160729项目说明*/
|
||||
.project-intro {line-height:2; width:140px; margin-left:auto; margin-right:auto;}
|
||||
.project-intro li {list-style:disc; margin-left:20px;}
|
||||
@charset "utf-8";
|
||||
/* CSS Document */
|
||||
|
||||
/*基本样式*/
|
||||
body,table,input,textarea,select,button { font-family: "微软雅黑","宋体","Helvetica Neue", Helvetica, Arial, sans-serif;}
|
||||
body, ul, h1,h2,h3,h4,h5,p,pre,input {padding:0px; margin:0px;}
|
||||
body{background-color: #efeff4;}
|
||||
ul li {list-style:none;}
|
||||
img {max-width:100%;}
|
||||
blockquote {border:1px solid #d4d4d4; padding: 0.6em; margin: 5px 0.4em 5px 1.4em; border-radius: 4px; font-family: "Microsoft YaHei"; background-size: 100% 100%;}
|
||||
.text-control {word-break:normal; word-wrap:break-word;}
|
||||
.f12 {font-size:12px;}
|
||||
.f13 {font-size:13px;}
|
||||
.f14 {font-size:14px;}
|
||||
.f15 {font-size:15px;}
|
||||
.f16 {font-size:16px;}
|
||||
.fb {font-weight:bold;}
|
||||
.mt2 {margin-top:2px;}
|
||||
.mt3 {margin-top:3px;}
|
||||
.mt4 {margin-top:4px;}
|
||||
.mt5 {margin-top:5px;}
|
||||
.mt10 {margin-top:10px;}
|
||||
.mt11 {margin-top:11px;}
|
||||
.mt12 {margin-top:12px;}
|
||||
.mt15 {margin-top:15px;}
|
||||
.mt30 {margin-top:30px;}
|
||||
.mt70 {margin-top:70px;}
|
||||
.mb5 {margin-bottom:5px;}
|
||||
.mb10 {margin-bottom:10px;}
|
||||
.mb15 {margin-bottom:15px;}
|
||||
.mb20 {margin-bottom:20px;}
|
||||
.mb50 {margin-bottom:50px;}
|
||||
.ml5 {margin-left:5px;}
|
||||
.ml10 {margin-left:10px;}
|
||||
.ml40 {margin-left:40px;}
|
||||
.mr5 {margin-right:5px;}
|
||||
.mr10 {margin-right:10px;}
|
||||
.ml15 {margin-left:15px;}
|
||||
.ml35 {margin-left:35px;}
|
||||
.mr15 {margin-right:15px;}
|
||||
.mr20 {margin-right:20px;}
|
||||
.ml25 {margin-left:25px;}
|
||||
.mr25 {margin-right:25px;}
|
||||
.ml55 {margin-left:55px;}
|
||||
.mr55 {margin-right:55px;}
|
||||
.c-red {color:#e81a1a;}
|
||||
.c-blue {color:#269ac9;}
|
||||
.c-grey {color:#9a9a9a !important;}
|
||||
.c-grey2 {color:#707070;}
|
||||
.c-grey3 {color:#555555;}
|
||||
.c-grey4 {color:#888888;}
|
||||
.c-grey5 {color:#aaaaaa;}
|
||||
.c-grey6 {color:#777777;}
|
||||
.c-blue {color:#3b94d6;}
|
||||
.c-white {color:#ffffff;}
|
||||
.c-black {color:#333}
|
||||
a {color:#707070;}
|
||||
a.c-grey {color:#707070;}
|
||||
a.c-grey2 {color:#9a9a9a;}
|
||||
a.c-grey3 {color:#353535;}
|
||||
a.c-green {color:#0bb20c;}
|
||||
a:link,a:visited{text-decoration:none;}
|
||||
a:hover,a:active{cursor:pointer;}
|
||||
a.link-blue {color:#269ac9;}
|
||||
a.link-blue2 {color:#3b94d6;}
|
||||
a.underline {text-decoration:underline;}
|
||||
.border-radius {border-radius:5px;}
|
||||
.w36 {width:36px;}
|
||||
.max-width-60 {max-width:60px;}
|
||||
.max-width-130 {max-width:130px;}
|
||||
.hidden {overflow:hidden; white-space:nowrap; text-overflow:ellipsis;}
|
||||
.inline-block {display:inline-block;}
|
||||
.dis {display:block;}
|
||||
.undis {display:none;}
|
||||
.text-nowrap {white-space:nowrap;}
|
||||
.v-top {vertical-align:top;}
|
||||
.tac {text-align:center;}
|
||||
.block-center {margin-left:auto; margin-right:auto; display:block;}
|
||||
|
||||
/*背景色*/
|
||||
.bg-grey {background-color:#c1c1c1 !important;}
|
||||
.bg-blue {background-color:#3b94d6;}
|
||||
|
||||
/*按钮样式*/
|
||||
.btn1 {width:100%; height:40px; line-height:40px; vertical-align:middle; text-align:center; color:#fff; display:block; border-radius:5px;}
|
||||
.bg-blue:not(.btn-disabled):active {background-color:#2780c2;}
|
||||
.btn-disabled {background-color:#ccc !important;}
|
||||
.btn2 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; margin:18px auto 20px auto; border-radius:50px; display:block;}
|
||||
.btn3 {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; border-radius:50px; display:block;}
|
||||
.fixed-bottom-btn {position:fixed; bottom:5px; left:50%; transform:translate(-50%,0);}
|
||||
|
||||
/*tab*/
|
||||
.tab-wrap {position:relative; width:100%; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
|
||||
.tab-wrap a {position:relative; display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1;}
|
||||
.tab-wrap a:first-child:after {display:none;}
|
||||
.tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
|
||||
.weixin-tab {text-align:center; border-bottom:1px solid #ccc;}
|
||||
|
||||
/*bottom-tab*/
|
||||
.bottom-tab-wrap {position:fixed; width:100%; bottom:0; line-height:38px; display:-webkit-box; display:-moz-box; display:-ms-flexbox; display:-webkit-flex; display:flex; font-size:13px; background-color:#fff;}
|
||||
.bottom-tab-wrap a {display:block; -webkit-box-flex:1; -moz-box-flex:1; -ms-flex:1; flex:1; position:relative;}
|
||||
.bottom-tab-wrap a:after {content:" "; position:absolute; left:0; top:0; width:1px; height:100%; border-left:1px solid #ccc; color:#707070;}
|
||||
|
||||
/*动态样式*/
|
||||
.post-container {width:100%;}
|
||||
.post-wrapper {width:100%; background-color:#ffffff; margin:10px auto;}
|
||||
.post-main {padding:10px 15px; color:#9a9a9a;}
|
||||
.post-avatar {width:30px; height:30px;}
|
||||
.post-title {font-size:13px; text-align:left;}
|
||||
.post-detail-info {font-size:13px; text-align:left; color:#9a9a9a;}
|
||||
.fl {float:left;}
|
||||
.fr {float:right;}
|
||||
.cl {clear:both; overflow:hidden;}
|
||||
.post-content {width:100%; font-size:14px; line-height:20px; height:100px; overflow:hidden; word-break:normal; word-wrap:break-word; text-align:justify;}
|
||||
.post-all-content a {color:#136ec2;}
|
||||
.post-interactive {width:100%; height:35px; line-height:35px; vertical-align:middle; border-top:1px solid #e6e6e6; background-color:#f8f9fb;}
|
||||
.post-interactive-column,
|
||||
.post-interactive-reply,
|
||||
.post-interactive-praise {width:50%; text-align:center; float:left; font-size:13px;}
|
||||
.more-wrap {width:100%;}
|
||||
.more-events {width:100%; font-size:13px; text-align:center; margin:0 auto; padding: 5px 0; border-top:1px solid #e6e6e6; border-bottom:1px solid #e6e6e6; border-radius:3px; background-color:#f8f9fb; }
|
||||
.border-bottom {border-bottom:1px solid #e6e6e6;}
|
||||
.post-reply-wrap {width:100%;}
|
||||
.post-reply-wrap:first-child {border-top:1px solid #ccc;}
|
||||
.post-input-wrap {width:100%; position:fixed; bottom:0; background-color:#fff;}
|
||||
.post-input-wrap2 {width:100%;}
|
||||
.post-reply-row {margin:10px 15px; color:#9a9a9a; background-color:#fff; border-bottom:1px solid #f0f0f0;}
|
||||
.post-reply-avatar {width:45px; height:30px; text-align:center; margin-right:10px;}
|
||||
.post-reply-user {font-size:13px; text-align:left; margin-bottom:10px;}
|
||||
.post-reply-content {font-size:13px; word-break:break-all; word-wrap:break-word; overflow:hidden; text-align:justify;}
|
||||
.post-reply-content img {max-width:100%;}
|
||||
.post-reply-content a {color:#136ec2;}
|
||||
.post-reply-date, .post-reply-trigger {font-size:13px;}
|
||||
.post-input-container {position:relative; padding-right:70px;}
|
||||
.copy-input-container {position:relative; padding-right:70px;}
|
||||
.copy-input {width:100%; height:18px; line-height:18px; padding:5px; vertical-align: middle; font-size:12px; border-radius:3px; position:absolute; left:-999em;}
|
||||
.post-reply-input {width:100%; height:18px; max-height:54px; line-height:18px; vertical-align: middle; font-size:13px; border:1px solid #e6e6e6; outline:none; padding:5px; margin:0; border-radius:3px; overflow-y:auto; resize:none; background-color:#f0eff4;}
|
||||
.post-reply-submit {position:absolute; font-size:13px; height:30px; line-height:30px; vertical-align:middle; padding:0 8px; color:#fff; background-color:#269ac9; outline:none; border:none; top:0; right:0;}
|
||||
.reply-icon {background:url(/images/wechat/icon_list.gif) -150px -155px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
|
||||
.praise-icon {background:url(/images/wechat/icon_list.gif) -36px -88px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
|
||||
.praised-icon {background:url(/images/wechat/icon_list.gif) -152px -86px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;}
|
||||
.num-block {display:inline-block; vertical-align:top;}
|
||||
.post-op-banner {height:20px; line-height:20px; vertical-align:middle;}
|
||||
|
||||
/*20160628动态新样式*/
|
||||
.post-dynamic-author {width:50%; height:30px; line-height:30px; font-size:14px; color:#5b5b5b; vertical-align:middle;}
|
||||
.post-dynamic-time {height:30px; line-height:30px; vertical-align:middle;}
|
||||
.post-dynamic-title {font-size:15px;}
|
||||
.post-dynamic-from {width:50%; font-size:13px;}
|
||||
.post-box-shadow {box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);}
|
||||
.post-reply-author {width:50%; height:20px; line-height:20px; font-size:12px; color:#5d5d5d; vertical-align:middle;}
|
||||
.post-reply-time {height:20px; line-height:20px; vertical-align:middle;}
|
||||
|
||||
/* loading 弹框*/
|
||||
.loading-bg {position:fixed; width:100%; height:100%; left:0; top:0; z-index:99; background:rgba(206, 206, 206, 0.3); overflow:hidden;}
|
||||
.loading-box {position:absolute; top:50%; background:rgba(240,240,240, 0.5); width:160px; height:72px; left:50%; margin-top:-36px; margin-left:-80px; text-align:center;}
|
||||
.loading-box img {margin-top: 3px; text-align: center;}
|
||||
.loading-box span {display: block; font-size:12px;}
|
||||
|
||||
/*帖子锁定样式*/
|
||||
.locked_btn_cir {background: url("/images/wechat/locked.png") 0 0 no-repeat; cursor: default;}
|
||||
|
||||
/*20150612加入班级样式*/
|
||||
.add-class-box {position:fixed; width:80%; max-width:300px; min-width:240px; font-size:15px; color:#444; background-color:#fff; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); border-radius:5px; top:50%; left:50%; transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); -moz-transform: translate(-50%,-50%); -webkit-transform: translate(-50%,-50%); -o-transform: translate(-50%,-50%);}
|
||||
.add-class-tip {padding-top:1.2em; padding-bottom:.5em; font-weight:400;}
|
||||
.class-number-input {width:80%; max-width:240px; height:28px; border:1px solid #ccc; padding-left:5px; margin:0 auto; display:block;}
|
||||
.cancel-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
|
||||
.submit-btn {width:49%; height:37px; line-height:37px; text-align:center; vertical-align:middle; border-top:1px solid #ccc;}
|
||||
.slice {width:2%; text-align:center; border-top:1px solid #ccc;}
|
||||
.slice-line {width:1px; height:37px; margin:auto; background:#ccc;}
|
||||
|
||||
/*20160613邀请码样式*/
|
||||
.qr-code-wrap {width:100%; padding:40px 0; background-color:#3b94d6;}
|
||||
.qr-code-box {width:225px; background-color:#fff; border-radius:3px; margin:0 auto;}
|
||||
.share-class-name {font-size:18px; color:#3b3b3b; text-align:center; padding:12px; border-bottom:1px solid #cccccc;}
|
||||
.qr-img-wrap {width:100%; border-bottom:1px dashed #ccc;}
|
||||
.qr-code-img {margin:36px auto; display:block;}
|
||||
.invitation-code-wrap {text-align:center; font-size:18px; color:#3b3b3b; padding:16px;}
|
||||
.share-code-wrap {width:100%; background-color:#efeff4;}
|
||||
.share-code-btn, .finish-btn {width:145px; height:35px; color:#fff; font-size:15px; line-height:35px; text-align:center; vertical-align:middle; background-color:#ff7239; margin:18px auto 20px auto; border-radius:50px; display:block;}
|
||||
.share-code-instruction {max-width:228px; font-size:12px; color:#666; line-height:20px; margin:0 auto;}
|
||||
|
||||
/*20160613班级详情*/
|
||||
.class-detail-name, .blue-title {width:100%; height:45px; line-height:45px; vertical-align:middle; background-color:#3b94d6; color:#fff; font-size:18px; text-align:center;}
|
||||
.blue-title-sub {position:absolute; right:10px;}
|
||||
.slice2 {width:2%; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
|
||||
.slice3 {width:1%; height:38px; text-align:center; background-color:#fff; border-bottom:1px solid #ccc;}
|
||||
.slice-line2 {width:1px; height:38px; margin:auto; background:#ccc;}
|
||||
.class-detail-tab {width:23%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
|
||||
.class-detail-tab2 {width:32%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
|
||||
.class-detail-tab3 {width:48%; height:38px; line-height:38px; font-size:13px; color:#444; background-color:#fff; float:left; text-align:center; vertical-align:middle; border-bottom:1px solid #ccc;}
|
||||
.class-tab-active {border-bottom:3px solid #3b94d6;}
|
||||
.tab-active-arrow {border-width:4px; position:absolute; top:41px; left:50%; transform:translate(-50%,0); border-color:#3b94d6 transparent transparent transparent; border-style:solid dashed dashed dashed;}
|
||||
.class-search-wrap {padding:8px 12px; position:relative;}
|
||||
.class-search-inner {padding:0 30px; background-color:#fff;}
|
||||
.class-search-icon {position:absolute; top:16px; left:16px;}
|
||||
.class-detail-search {width:100%; height:33px; color:#999; background-color:#fff; border:none; outline:none;}
|
||||
.border-top {border-top:1px solid #ccc;}
|
||||
.class-detail-row {width:100%; line-height:18px; padding:10px 0; border-bottom:1px solid #ccc; background-color:#fff;}
|
||||
.class-member-row {width:100%; line-height:18px; padding:5px 0; border-bottom:1px solid #ccc; background-color:#fff; position:relative;}
|
||||
.class-test-tip {text-align:center; font-size:13px; color:#444; padding-top:40px;}
|
||||
.img-circle {border-radius:50% !important;}
|
||||
.member-banner {height:24px; line-height:24px; text-align:center; vertical-align:middle; background-color:#dfdfdf;}
|
||||
.resource-width {width:76%;}
|
||||
.courseware-from-width {max-width:57%;}
|
||||
.other-from-width {max-width:80%;}
|
||||
.course-name-width {width:68%;}
|
||||
|
||||
/*20160614班级列表*/
|
||||
.course-diff-row {width:100%; height:28px; line-height:28px; vertical-align:middle; background-color:#fff; border-bottom:1px solid #ccc;}
|
||||
.course-list-row {width:100%; height:38px; line-height:38px; vertical-align:middle; border-top:1px solid #ccc; border-bottom:1px solid #ccc; background-color:#fff;}
|
||||
.class-list {width:100%; border-bottom:1px solid #ccc;}
|
||||
.class-list li {height:40px; line-height:40px; vertical-align:middle; margin:0 25px; border-left:1px solid #ccc; border-bottom:1px solid #ccc; position:relative;}
|
||||
.class-list-name {max-width:75%; display:inline-block;}
|
||||
.class-list-dot {position:absolute; top:13px; left:-8px;}
|
||||
.border-bottom-none {border-bottom:none !important;}
|
||||
.border-top-none {border-top:none !important;}
|
||||
.students-amount {height:14px; line-height:14px; vertical-align:middle; padding:2px 5px; background-color:#e6e6e6; border-radius:10px;}
|
||||
.new-class-btn {font-size:15px; color:#fff; background-color:#3b94d6; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
|
||||
.join-class-btn {font-size:15px; color:#444; background-color:#ccc; padding:10px 40px; border-radius:20px; display:inline-block; margin:0 auto;}
|
||||
.new-class-input {width:60%; color:#555; height:16px; line-height:16px; vertical-align:middle; border:none; outline:none; padding:8px 0;}
|
||||
.class-list-setting {position:absolute; top:11px; right:10px;}
|
||||
.class-setting-wrap {width:38px; height:38px; position:absolute; top:0; right:0;}
|
||||
|
||||
/*20160616登录注册*/
|
||||
.login-wrap {padding:0 10px;}
|
||||
.input-box-wrap {padding-right:17px;}
|
||||
.input-box { -webkit-appearance: none; font-size: 15px;width:100%; height:18px; padding: 10px 0px 10px 5px; line-height:18px; border:1px solid #ccc; border-radius:5px;}
|
||||
.login-op-wrap {height:30px; line-height:30px; vertical-align:middle;}
|
||||
.login-box{display:inline-block; width:14px; height:14px; line-height:14px; text-align:center; vertical-align:middle; border:1px solid #ccc; background:#fff; border-radius:3px; color:#fff; cursor:pointer;}
|
||||
.login-box.checked{background:#63c360; border:1px solid #63c360;}
|
||||
.login-box.checked:after{content:url(/images/wechat/checked.png);}
|
||||
.forget-psw-wrap {width:60px; margin:0 auto;}
|
||||
.forget-psw {position:fixed; bottom:10px;}
|
||||
|
||||
/*二级回复*/
|
||||
.mult-reply-container{ border:solid 1px #f3ddb3; background:#fffef4; padding:4px;color:#999;}
|
||||
.mult-reply-content{ color:#555; font-size:13px;}
|
||||
.mult-reply-hide{ text-align:center; display:block; font-size:14px; color:#aaa; border-bottom:1px solid #F3DDB3; padding:8px 0;}
|
||||
.mult-reply-arrow{ color:#aaa; margin-right:10px; font-size:14px; font-weight:bold;}
|
||||
|
||||
|
||||
/*20160729项目说明*/
|
||||
.project-intro {line-height:2; width:120px; margin-left:auto; margin-right:auto;}
|
||||
.project-intro li {position:relative;}
|
||||
.project-intro-dot {font-size:25px; font-weight:bold; position:absolute; left:-10px; top:-13px;}
|
||||
|
||||
/*新建说明*/
|
||||
.new-tip {line-height:2;}
|
||||
.new-tip li {position:relative; padding-left:10px;}
|
Loading…
Reference in new issue