Web App 前端构建(纯净版)
asp.net 母版页:
<!DOCTYPE html> <html> <head><meta charset="utf-8" name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /><title>@ViewBag.Title</title>@Styles.Render("~/Css")@RenderSection("css", false) </head> <body class="@(Device.isWeb?"web":"noWeb")"> <div class="mask"></div> <div class="app"><div></div><div class="A-bg-body">@RenderBody()</div><div></div> </div> @Scripts.Render("~/Js") @RenderSection("js", required: false) </body> </html>
Views\Shared\_Layout.cshtml
asp.net 首页:
@{ViewBag.Title = "首页"; } @section css {<style>.app > :last-child, .footer { height:2.5rem }.city-btn { width: 5.5rem;text-indent:2.3rem; }.filter-btn,.user-btn{ width:3.2rem;} </style> } <div class="header A-bg"><a class="city-btn A-icon-arrow-down A-btn"></a><h1></h1><a class="filter-btn A-icon-filter A-btn"></a><a class="user-btn A-icon-user A-btn"></a> </div> <div class="body">//... </div> <div class="footer A-bg"></div> @section js {<script>//...</script> }
Views\Home\Index.cshtml
公共样式:
@charset 'utf-8'; *{margin:0;padding:0; font-family: \5FAE\8F6F\96C5\9ED1,\5B8B\4F53;-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-text-size-adjust:none; } /* highlight equal to outline,only dose it has a effect in google chrome lite browser */ *:focus,*:active {outline:none;} html, body { height:100%;} body{ width: 100%; -webkit-user-select:none;} p,a,span,textarea,b,input,dt,dd { color: #666;font-size: 0.9rem;word-break:break-word;} ul, ol{list-style:none;} img{border:none;} a { text-decoration:none;cursor:pointer;} textarea {display:block;width: 100%; height: 100%; padding: 1rem; line-height: 1.3rem; background-color: white;letter-spacing: 1px; border: none;resize:none;} /* 在外围加个标签,宽高设为100%可实现无缺口100% */ input[type=button],button{ text-align: center; cursor:pointer; background:none;border: none; border-radius: .3rem; letter-spacing: 1px;} input { background-color: white; border: none;} input[type=file]{cursor:pointer;}/*占位符*/ input[type=file]::-webkit-file-upload-button { font-size: 0; } /* 清除webkit浏览器文件上传控件隐性占位符 */ input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color:#ccc; } input:-moz-placeholder, textarea:-moz-placeholder { color:#ccc; } input::-moz-placeholder, textarea::-moz-placeholder { color: #ccc; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #ccc; }/* 浮动 */ .fl,.flc { float: left !important; } .fr,.frc { float: right !important; } .flc:after,.frc:after {display:block; content:"."; height:0; clear:both; overflow:hidden; visibility:hidden;}/* 功能 */ .hide { display:none !important; }/*隐藏*/ .ellipsis-1 { overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;word-break:keep-all;white-space:nowrap; } /*单行省略,需固定宽度*/ .ellipsis{ position:relative;overflow:hidden; }.ellipsis:after{position:absolute;bottom:0;right:0;content:"..."} /* 字数省略 需设置line-height及属性data-ellipsis="2",属性值表示行数 */ .keep { position:fixed !important;border-bottom: #ccc 1px solid !important; } /*滚动保持*/ .empty{}.empty-active:after{ display:block;width:100%;content:'暂无任何数据!';padding:1rem 0;font-size:.9rem;text-indent:1rem;letter-spacing:.1rem;} /*列表空提醒*/.mask {display: none;opacity:0;position: fixed;left: 0;z-index: 10;width: 100%; height: 100%;background-color:rgba(0, 0, 0, 0.4); -moz-transition: all 0.25s linear; -o-transition: all 0.25s linear; -webkit-transition: all 0.25s linear; transition: all 0.25s linear;}/*遮罩层*/ .mask-show{display:block;opacity:1;}.pop {position: fixed;left: 0;top:0; z-index: 11;width: 100%;background-color:white; } .web .pop { top: 2.5rem; } /*移动App的web弹出框需要添加header的高值作为top*/ .close-pop{}/* 效果 */ .shadow,.all-shadow * {box-shadow: 0 0 .3rem #ddd !important;} .gradient,.all-gradient * {background: -webkit-linear-gradient(top, #fff4f4,#fff);} .radius,.all-radius * { border-radius: .2em;} .left-radius {border-top-left-radius: .2em;border-bottom-left-radius: .2em;} .right-radius {border-top-right-radius: .2em;border-bottom-right-radius: .2em;} .top-radius {border-top-left-radius: .2em;border-top-right-radius: .2em;}/*动画*/ .transform-top { -moz-transition: transform 0.3s ease-out; -o-transition: transform 0.3s ease-out; -webkit-transition: transform 0.3s ease-out; transition: transform 0.3s ease-out; -moz-transform: translateY(-100%); -ms-transform: translateY(-100%); -o-transform: translateY(-100%); -webkit-transform: translateY(-100%); transform: translateY(-100%); } .transform-down { -moz-transition: transform 0.3s ease-out; -o-transition: transform 0.3s ease-out; -webkit-transition: transform 0.3s ease-out; transition: transform 0.3s ease-out; -moz-transform: translateY(0); -ms-transform: translateY(0); -o-transform: translateY(0); -webkit-transform: translateY(0); transform: translateY(0); } .zoomIn {-webkit-animation-duration: .5s; animation-duration: .5s; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-name: zoomIn; animation-name: zoomIn; } .bounceIn { -webkit-animation-duration: .75s; animation-duration: .75s; -webkit-animation-fill-mode: both; animation-fill-mode: both;-webkit-animation-name: bounceIn; animation-name: bounceIn; } @-webkit-keyframes zoomIn {from { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 50% { opacity: 1; } } @keyframes zoomIn {from { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); } 50% { opacity: 1; } } @-webkit-keyframes bounceIn {from, 20%, 40%, 60%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); }0% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); }20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); }40% { -webkit-transform: scale3d(.9, .9, .9); transform: scale3d(.9, .9, .9); }60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); }80% { -webkit-transform: scale3d(.97, .97, .97); transform: scale3d(.97, .97, .97); }to { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes bounceIn {from, 20%, 40%, 60%, 80%, to { -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); }0% { opacity: 0; -webkit-transform: scale3d(.3, .3, .3); transform: scale3d(.3, .3, .3); }20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); }40% { -webkit-transform: scale3d(.9, .9, .9); transform: scale3d(.9, .9, .9); }60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); }80% { -webkit-transform: scale3d(.97, .97, .97); transform: scale3d(.97, .97, .97); }to { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } }/* ---------------------------------- 主题A开始 ---------------------------------- */ /* 母版样式 */ .app{display:table;width:100%;height:100%;} .app>* { display: table-row; } .app>:nth-child(2) { width: 100%;height:100%; } .app>:first-child,.header{ top:0; width: 100%;height: 2.5rem;line-height:2.5rem;box-shadow: 0 0 .3rem #ccc;} .noWeb .app>:first-child,.noWeb .header{display:none;} /*手机APP隐藏header*/ .app>:last-child,.footer{ bottom:0;width: 100%; /*height: 4rem;*/}/*height:无定义高度,当需要页脚时可在当前页定义页脚,并添加标签<div class="footer"></div>即可*/ .header,.footer{ position:fixed;display:table;z-index:100;} .header>*{display:table-cell;font-size:.9rem;color:white;font-weight:normal;letter-spacing:1px;} .header .back-btn { width: 3rem; }.A-color{ color: #00c1d9 } .A-color-gray {color: #ccc} .A-color-error { color: #ff8181 } .A-color-success { color:green } .A-color-disabled { color: #999 }.A-border { border-color: #ccc } .A-border-top{ border-top:1px solid #ccc} .A-border-bottom {border-bottom:1px solid #ccc } .A-border-left { border-left:1px solid #ccc } .A-border-right{ border-right:1px solid #ccc } .A-border-none{border:none !important;}.A-bg {background-color:#00c1d9 !important } /* 主题点击效果 */ .A-bg-body { background-color: #d9d9d9; } /* 主题body背景 */ .A-bg-bar {background-color:#e6e6e6 !important } /* 主题点击效果 */ .A-bg-oval{background: #F09819; background: -webkit-radial-gradient(#00d2ff, #3a7bd5); background: radial-gradient(#00d2ff, #3a7bd5);}.A-icon-filter{ background: url(/Image/Ico/filter.png) center no-repeat;background-size:1.3rem;} .A-icon-user{ background: url(/Image/Ico/user.png) center no-repeat;background-size:1.4rem;} .A-icon-close{ background: url(/Image/Ico/close.png) center no-repeat;background-size:1.8rem;} .A-icon-location-blue{ background: url(/Image/Ico/location_blue.png) left no-repeat;background-size:1.4rem;} .A-icon-save-white{ background: url(/Image/Ico/save_white.png) center no-repeat;background-size:1.4rem;} .A-icon-upload-white{ background: url(/Image/Ico/upload_white.png) center no-repeat;background-size:1.3rem;} .A-icon-delete-white{ background: url(/Image/Ico/delete_white.png) center no-repeat;background-size:1.4rem;} .A-icon-arrow-down{ background: url(/Image/Ico/arrow_down.png) 1rem center no-repeat;background-size:.8rem .4rem;} .A-icon-arrow-left{ background: url(/Image/Ico/arrow_left.png) 1rem center no-repeat;background-size:.5rem;} .A-icon-arrow-right-black { background: url(/Image/Ico/arrow_right_black.png) right no-repeat; background-size: 0.6rem;} .A-icon-agree-black{ background: url(/Image/Ico/agree_black.png) left top no-repeat; background-size: 1.1rem;text-indent:1.3rem;}.A-btn-red { display: block; margin: 1rem auto; padding: .4rem 2.5rem; text-align: center; border-radius: .3rem; color: white; font-size: .9rem; letter-spacing: 1px; background-color: #f98c54; } .A-btn-red.active,.A-btn-red:active{background-color: #F17434;} .A-btn-red[disabled]{background-color: #ccc;}.A-active-none{ cursor:auto!important;}.A-active-all,.A-active,.A-active-general-all-second,.A-active-general-all,.A-active-general {} /* 点击效果索引 */ .A-active-effect {background-color:#00b5cb !important } /* 主题点击效果 */ .A-active-general-effect {background-color:#e5e5e5 !important } /* 普通点击效果 */ /* ---------------------------------- 主题A结束 ---------------------------------- */
Css\public.css
公共脚本:
var Regex = {phone: /^(((\+86)|(86))?1[3|5|7|8|][0-9]{9})$/,email:/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/,vcode: /^\d{4}$/,nickName: /^[a-zA-Z0-9\u4e00-\u9fa5]{2,18}$/,userName: /^[a-z][a-z0-9_]{4,18}$/,password: /^[a-zA-Z0-9]{6,18}$/,name: /^[\u4e00-\u9fa5]{2,8}$/,search: /^[a-zA-Z0-9\u4e00-\u9fa5]{2,20}$/, };//跳转url function go(_href, _time) { setTimeout(function () { location.href = _href; }, _time ? _time : 130); }//Cookie Operation function setCookie(name, value, days) {var exp = new Date();exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);document.cookie = name + "=" + escape(value) + ";path=/;expires=" + exp.toGMTString();} function getCookie(name) {var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));if (arr != null) {return unescape(arr[2]);} else {return null;} } function delCookie(name) {var exp = new Date();exp.setTime(exp.getTime() - 1);var cval = getCookie(name);if (cval != null) document.cookie = name + "=" + cval + ";path=/;expires=" + exp.toGMTString(); }//dependent on Cookie Operation function GPS() {/*4413: setCookie("lng", 114.422921, 1);setCookie("lat", 23.124245, 1);*/if (navigator.geolocation) {navigator.geolocation.getCurrentPosition(function (position) {setCookie("lng", position.coords.longitude, 1);setCookie("lat", position.coords.latitude, 1);},function (err) {var tip = ["未知错误!", "没有权限!","网络故障或位置的卫星无法联系!","获取地理位置超时!"];try {tip = tip[err.code];} catch (e) { tip = "未知错误!"; }},{enableHighAccuracy: false, maximumAge: 1000, timeout: 15000});} }//canvas.toDataURL('image/jpeg'), and convert to blob,blob is a File Object. but UC don't support function dataURLtoBlob(dataurl) {var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);while (n--) u8arr[n] = bstr.charCodeAt(n);window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder || window.MSBlobBuilder;if (window.BlobBuilder) {var bb = new BlobBuilder();bb.append([u8arr]);return bb.getBlob(mime);} else return new Blob([u8arr], { type: mime }); } //html image src convert to dataUrl function imageToDataURL(url, callback, mime) {var canvas = document.createElement('canvas'),ctx = canvas.getContext('2d'),img = new Image;img.crossOrigin = 'Anonymous';img.onload = function () {canvas.height = img.height;canvas.width = img.width;ctx.drawImage(img, 0, 0);var dataURL = canvas.toDataURL(mime || 'image/jpeg');callback.call(this, dataURL);canvas = null;};img.src = url; }function asciiHexToStr(str) {var symbols = " !\"#$%&'()*+,-./0123456789:;<=>?@" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "[\\]^_`" + "abcdefghijklmnopqrstuvwxyz" + "{|}~";str = str.toLowerCase();var hex = "0123456789abcdef";var text = "";var i = 0;for (i = 0; i < str.length; i = i + 2) {var char1 = str.charAt(i);if (char1 == '') {//分隔符char1== ":";i++;char1 = str.charAt(i);}var char2 = str.charAt(i + 1);var num1 = hex.indexOf(char1);var num2 = hex.indexOf(char2);var value = num1 << 4;value = value | num2;var valueInt = parseInt(value);var symbolIndex = valueInt - 32;var ch = '?';if (symbolIndex >= 0 && value <= 126) {ch = symbols.charAt(symbolIndex)}text += ch;}return text; } function strToAsciiHex(str) {var symbols = " !\"#$%&'()*+,-./0123456789:;<=>?@" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "[\\]^_`" + "abcdefghijklmnopqrstuvwxyz" + "{|}~";var hexChars = "0123456789abcdef";var text = "";for (i = 0; i < str.length; i++) {var oneChar = str.charAt(i);var asciiValue = symbols.indexOf(oneChar) + 32;var index1 = asciiValue % 16;var index2 = (asciiValue - index1) / 16;if (text != "") text += "";//分隔符text += ":";text += hexChars.charAt(index2);text += hexChars.charAt(index1);}return text; }//jQuery初始化 $(function () {//android 触摸延迟,4.2+ webview穿透bug修复(function AndroidBug() {var userAgent = navigator.userAgent;var index = userAgent.indexOf("Android");var isAndroid = index > -1;if (!isAndroid || (isAndroid && parseFloat(userAgent.slice(index + 8)) > 4.2))$.getScript("/Scripts/fastclick.js", function () { FastClick.attach(document.body); });})();//监听所有元素的点击状态$(document).on('click', function (e) {var func = function ($node, classStr) {$node.addClass(classStr);setTimeout(function () { $node.removeClass(classStr); }, 130);}var $obj = $(e.target);func($obj, 'active');;//主题点击效果监听$.each(['A-active', 'A-active-general'], function (i, v) {if ($obj.hasClass(v))func($obj, v + '-effect');else {func($obj.closest('.' + v), v + '-effect');$.each($obj.closest('.' + v + '-all').find('>*'), function (j, o) {if (!$(o).hasClass('A-active-none') && ($(o).hasClass('active') || $(o).find('.active').length > 0))func($(o), v + '-effect');})$.each($obj.closest('.' + v + '-all-second').find('>* :first-child'), function (j, o) {if (!$(o).hasClass('A-active-none') && ($(o).hasClass('active') || $(o).find('.active').length > 0))func($(o), v + '-effect');})}})//后退事件 排除同时为弹出框事件,如返回弹出是否放弃当前编辑if ($obj.hasClass('back-btn') && $obj[0].className.indexOf('pop-') == -1) setTimeout(function () { history.go(-1); }, 130);//弹出框显示触发按钮(btn:class='pop-xxx',dialog:class='pop pop-xxx-dialog')事件var firstClass = $obj[0].className.split(' ')[0];if (firstClass.indexOf('pop-') > -1) {var $dlg = $('.' + firstClass + '-dialog');if ($dlg.hasClass('transform-top')) $dlg.toggleClass('transform-down'); //若有动画else $dlg.toggleClass();$('.mask').toggleClass('mask-show');if ($obj.hasClass('pop-filter')) $obj.toggleClass('A-icon-filter A-icon-close');}//弹出框关闭触发事件,遮罩层mask与pop-close按钮事件if ($obj.hasClass('mask') || $obj.hasClass('close-pop')) {$('.mask').removeClass('mask-show');var $pop = $(".pop");if ($pop.hasClass('transform-top')) $pop.removeClass('transform-down');else $pop.hide();if ($pop.hasClass('pop-filter-dialog')) $('.pop-filter').toggleClass('A-icon-filter A-icon-close');}});//文字省略$('*[data-ellipsis]').width(function () { return $(this).width(); }).height(function () {if ($(this).attr('data-ellipsis') == 1) {$(this).removeAttr('data-ellipsis').addClass('ellipsis-1');return $(this).height();}var maxHeight = $(this).attr('data-ellipsis') * parseInt($(this).css('line-height'));if ($(this).height() > maxHeight) $(this).removeAttr('data-ellipsis').addClass('ellipsis');return maxHeight;})//列表空提醒$('.empty').each(function (i, o) {if ($(o).find('>*').length == 0) $(o).removeAttr('empty').addClass('empty-active');})//屏蔽滚动:移动端弹出框时,禁止滚动if (navigator.userAgent.indexOf("Mobile") > -1)document.addEventListener('touchmove', function (event) {if ($(".mask").is(":visible")) event.preventDefault();});//override alertalert = function (content) {$('.alert').remove();$('body').append("<p class='alert'>" + content + "</p>");var $alert = $('.alert');$alert.css({ 'display': 'none', 'position': 'fixed', 'z-index': '200', 'padding': '10px', 'background-color': 'rgba(0, 0, 0, 0.60)', 'color': 'white', 'border-radius': '.8rem', 'top': arguments[1] ? $(arguments[1]).offset().top + 100 : $(document.body).height() - 100 }).css('left', $(document).width() / 2 - $alert.width() / 2 - 10).fadeIn(function () { setTimeout(function () { $('.alert').fadeOut(500); setTimeout(function () { $('.alert').remove(); }, 500); }, 2000); });}//滚动加载(请求地址,页面参数对象{cur:当前页面序号,total:总页面数,time:分页时间},url参数对象,请求成功回调,触发滚动加载的距离,相对于document.body,范围为0-1)function ScrollLoad(_url, _pages, _callback, _distance) {return {'load': function (_params) {$(document).scroll(function () {if (_pages.cur < _pages.total && $(this).height() - $(this).scrollTop() < $(document.body).height() * (1 + (_distance ? _distance : 1))) {_params.page = _pages.cur + 1;_params.time = _pages.time;$.post(_url, _params, function (_response) { _callback(_response); _pages.cur++; });//请求时自动添加page、time参数 }})}};};//元素滚动显隐function scrollHideShow() {var xy;$(window).scroll(function () {var sTop = $(this).scrollTop();if (xy < sTop) {$(".box-fixed").hide();} else if (xy > sTop) {$(".box-fixed").show();}xy = sTop;});}//元素滚动保持,相对于headerfunction scrollKeep() {var actionbarHeight = $('.header').height();var distance = $('.box-fixed')[0].getBoundingClientRect().top;$(window).scroll(function () {if ($(window).scrollTop() >= distance) {$('.box-fixed').css('top', actionbarHeight);$('.box-fixed').addClass('keep');} else $('.box-fixed').removeClass('keep')});} })//------------母版页逻辑------------- if (getCookie("lng") == null) GPS(); if (getCookie("gps_city") == null) setCookie("gps_city", escape("惠州"), 30);
Scripts\public.js
显示结果:
转载于:https://www.cnblogs.com/jamkier/p/structure.html
Web App 前端构建(纯净版)相关推荐
- 浅谈Web App前端设计原则
关于Web App 随着web 2.0时代的到来,越来越多的应用程序都是基于Web环境来构建的.这样做的好处显而易见,用户可以方便地使用浏览器来访问应用,而不需要安装客户端程序.而在企业内部,很多应用 ...
- 前端组件库 - 搭建web app常用的样式/组件等收集列表(移动优先)
0. 前端自动化(Workflow) 前端构建工具 Webpack - module bundler Yeoman - a set of tools for automating developmen ...
- 详解一个Python库,用于构建精美数据可视化web app,练习做个垃圾分类app
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 醉卧沙场君莫笑,古来征战几人回? ...
- 在百度开放云平台上构建Web App
在3月23日的百度开发者大会上,百度推出了开放云计算平台来帮助开发者构建分布式网络应用.它包括云存储.云环境.关系服务.消息服务等组成部分,开发者可以利用云平台方便的编写分布式网络应用,无需考虑集群扩 ...
- spring boot构建基础版web项目(一)springboot、thymeleaf控制层基础构
原文作者:弥诺R 原文地址:http://www.minuor.com/147852147/article 转载声明:转载请注明原文地址,注意版权维护,谢谢! 写前说明 根据个人在各篇博文中看到的信息 ...
- LEMP构建高性能WEB服务器(第三版)
LEMP 自动化编译脚本下载:http://docs.linuxtone.org/autoinstall/ (定期更新,欢迎多测试,找bug) 介绍参考:http://bbs.linuxtone.or ...
- web app指南之构建html5离线应用
创建运行在手机上的web app时,鉴于手机用户的网络情况,我们需要考虑到用户离线使用的情况. html5支持构建离线应用程序.使用它的本地缓存机制可以将应用所需的资源文件都缓存到本地,从而实现应用的 ...
- 适合前端工作者的iPhone Web App开发
iPhone有着丰富的软件资源,到目前为止,仅在appStore上架的软件就达十多万个,而相比之下,有着10年历史的WM系统却不过只有大约2万个应用程序. 随着ipad和iphone 4的发布,iph ...
- chrome tv版_软件推荐TV版APP:影迷大院1.0TV纯净版
影迷大院1.0TV纯净版 影迷大院tv版最新版想要看的这里全都有.包含喜剧,科幻,爱情,动作各大类,除了老牌电视台NBC, HBO等等,还有小视频,老少通吃,样样精通.特有剧集排片表,为你列出播放时间 ...
- 啦啦外卖V45.9稳定运营独立版+公众号+小程序前端 +APP前端+新授权接口 源码安装测试教程
啦啦外卖V45.9稳定运营独立版,是一款针对本地生活服务的外卖点餐系统,支持单店版.多店版.平台版等多种场景使用,使用的都知道该系统功能非常强大,是目前外卖平台功能最全的一套系统.播播资源测试安装的源 ...
最新文章
- Linux下kvm宿主机死机,看到一些朋友苦虚拟机久矣,分享下我使用KVM的一些经验和技巧...
- u盘装sun服务器系统,U盘多引导ISO系统安装
- java8 新特性 lambda过滤
- 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》...
- 深入探讨 java.lang.ref 包
- 技术管理规划-设定团队的职能
- MSBuild编译扩展
- php session页面传值,PHP session在页面间传递的问题
- display:column常用属性解释
- 蓝桥杯题目常用API	(JAVA)
- 收藏 | 90+深度学习开源数据集整理:包括目标检测、工业缺陷、图像分割等多个方向(附下载)...
- 【方差分析】之matlab求解
- 【场景化解决方案】OA审批与用友U9数据集成
- wifi联网神器 android,WiFi连网神器
- TruckSim Quick Start Guide(TruckSim快速入门)
- Android中,Sqlite数据库读取数据为空的问题
- 多少开发人员 饿了么_开发个类似饿了么外卖app要多少钱
- pacman源添加及yaourt安装
- 支付宝SDK集成服务端(java)
- 阿里巴巴淘系技术部拍卖部-春招提前批