demo.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. /*! layer demo */
  2. ;!function(){
  3. var gather = {
  4. htdy: $('html, body')
  5. };
  6. //全局配置
  7. layer.config({
  8. //extend: 'moon/style.css'/*tpa=http://www.layui.com/layer/moon/style.css*/
  9. });
  10. //在线调试
  11. var debug = $('#L_layerDebug'), popDebug = function(){
  12. var othis = $(this), top = $(window).scrollTop();
  13. layer.open({
  14. type: 1
  15. ,title: '在线调试'
  16. ,moveType: 1
  17. ,id: 'Lay_layer_debug'
  18. ,content: $('.runtest')
  19. ,shade: false
  20. ,resize: false
  21. ,fixed: false
  22. ,maxWidth: '100%'
  23. ,offset: [
  24. (othis.offset().top - top + 50) + 'px'
  25. ,(othis.offset().left - 300) + 'px'
  26. ]
  27. ,success: function(layero, index){
  28. layer.style(index, {
  29. marginLeft: -210
  30. });
  31. }
  32. });
  33. testmain.focus();
  34. };
  35. debug.on('click', popDebug);
  36. $('#LAY_version').html(layer.v);
  37. //在textarea焦点处插入字符
  38. var focusInsert = function(str){
  39. var start = this.selectionStart
  40. ,end = this.selectionEnd
  41. ,offset = start + str.length
  42. this.value = this.value.substring(0, start) + str + this.value.substring(end);
  43. this.setSelectionRange(offset, offset);
  44. };
  45. //演示页面
  46. $('body').on('keydown', '.site-demo-text', function(e){
  47. var key = e.keyCode;
  48. if(key === 9 && window.getSelection){
  49. e.preventDefault();
  50. focusInsert.call(this, ' ');
  51. }
  52. });
  53. //一睹为快
  54. gather.demo1 = $('#demo1');
  55. $('#chutiyan>a').on('click', function(){
  56. var othis = $(this), index = othis.index();
  57. switch(index){
  58. case 0:
  59. var icon = -1;
  60. (function changeIcon(){
  61. var index = layer.alert('Hi,你好! 点击确认更换图标', {
  62. icon: icon,
  63. shadeClose: true,
  64. title: icon === -1 ? '初体验' : ('icon: '+ icon)
  65. }, changeIcon);
  66. if(8 === ++icon) layer.close(index);
  67. }());
  68. break;
  69. case 1:
  70. var icon = 0;
  71. (function changeIcon1(){
  72. return;
  73. var index = layer.alert('点击确认更换图标', {
  74. icon: icon,
  75. shadeClose: true,
  76. skin: 'layer-ext-moon',
  77. title: icon === -1 ? '第三方扩展皮肤' : 'icon:'+icon
  78. }, changeIcon1);
  79. if(9 === ++icon) {
  80. layer.confirm('怎么样,是否很喜欢该皮肤,去下载?', {
  81. skin: 'layer-ext-moon'
  82. }, function(index, layero){
  83. layero.find('.layui-layer-btn0').attr({
  84. href: 'http://layer.layui.com/skin.html',
  85. target: '_blank'
  86. });
  87. layer.close(index);
  88. });
  89. };
  90. }());
  91. break;
  92. case 2:
  93. //询问框
  94. layer.confirm('您是如何看待前端开发?', {
  95. btn: ['重要','奇葩'] //按钮
  96. }, function(){
  97. layer.msg('的确很重要', {icon: 1});
  98. }, function(){
  99. layer.msg('也可以这样', {
  100. time: 20000, //20s后自动关闭
  101. btn: ['明白了', '知道了']
  102. });
  103. });
  104. break;
  105. case 3:
  106. //提示层
  107. layer.msg('一段提示信息');
  108. break;
  109. case 4:
  110. //墨绿深蓝风
  111. layer.alert('墨绿风格,点击确认看深蓝', {
  112. skin: 'layui-layer-molv' //样式类名
  113. ,closeBtn: 0
  114. }, function(){
  115. layer.alert('偶吧深蓝style', {
  116. skin: 'layui-layer-lan'
  117. ,closeBtn: 0
  118. ,anim: 4 //动画类型
  119. });
  120. });
  121. break;
  122. case 5:
  123. //捕获页
  124. layer.open({
  125. type: 1,
  126. shade: false,
  127. title: false, //不显示标题
  128. content: $('.layer_notice'), //捕获的元素
  129. cancel: function(){
  130. layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构', {time: 5000, icon:6});
  131. }
  132. });
  133. break;
  134. case 6:
  135. //页面层
  136. layer.open({
  137. type: 1,
  138. skin: 'layui-layer-rim', //加上边框
  139. area: ['420px', '240px'], //宽高
  140. content: '<div style="padding: 10px;">任意html内容</div>'
  141. });
  142. break;
  143. case 7:
  144. layer.open({
  145. type: 1,
  146. skin: 'layui-layer-demo',
  147. closeBtn: false,
  148. area: '350px',
  149. anim: 2,
  150. shadeClose: true,
  151. content: '<div style="padding:20px;">即传入skin:"样式名",然后你就可以为所欲为了。<br>你怎么样给她整容都行<br><br><br>我是华丽的酱油==。</div>'
  152. });
  153. break;
  154. case 8:
  155. layer.tips('Hi,我是tips', this);
  156. break;
  157. case 9:
  158. //iframe层
  159. layer.open({
  160. type: 2,
  161. title: 'layer mobile页',
  162. shadeClose: true,
  163. shade: 0.8,
  164. area: ['380px', '90%'],
  165. content: 'mobile/' //iframe的url
  166. });
  167. break;
  168. case 10:
  169. //iframe窗
  170. layer.open({
  171. type: 2,
  172. title: '很多时候,我们想最大化看,比如像这个页面。',
  173. shadeClose: true,
  174. shade: false,
  175. maxmin: true, //开启最大化最小化按钮
  176. area: ['893px', '600px'],
  177. content: 'https://www.baidu.com/'
  178. });
  179. break;
  180. case 11:
  181. var ii = layer.load(0, {shade: false});
  182. setTimeout(function(){
  183. layer.close(ii)
  184. }, 5000);
  185. break;
  186. case 12:
  187. var iii = layer.load(1, {
  188. shade: [0.1,'#fff']
  189. });
  190. setTimeout(function(){
  191. layer.close(iii)
  192. }, 3000);
  193. break;
  194. case 13:
  195. layer.tips('我是另外一个tips,只不过我长得跟之前那位稍有些不一样。', this, {
  196. tips: [1, '#3595CC'],
  197. time: 4000
  198. });
  199. break;
  200. case 14:
  201. layer.prompt({title: '输入任何口令,并确认', formType: 1}, function(pass, index){
  202. layer.close(index);
  203. layer.prompt({title: '随便写点啥,并确认', formType: 2}, function(text, index){
  204. layer.close(index);
  205. layer.msg('演示完毕!您的口令:'+ pass +'<br>您最后写下了:'+text);
  206. });
  207. });
  208. break;
  209. case 15:
  210. layer.tab({
  211. area: ['600px', '300px'],
  212. tab: [{
  213. title: '无题',
  214. content: '<div style="padding:20px; line-height:30px; text-align:center">欢迎体验layer.tab<br>此时此刻不禁让人吟诗一首:<br>一入前端深似海<br>从此妹纸是浮云<br>以下省略七个字<br>。。。。。。。<br>——贤心</div>'
  215. }, {
  216. title: 'TAB2',
  217. content: '<div style="padding:20px;">TAB2该说些啥</div>'
  218. }, {
  219. title: 'TAB3',
  220. content: '<div style="padding:20px;">有一种坚持叫:layer</div>'
  221. }]
  222. });
  223. break;
  224. case 16:
  225. if(gather.photoJSON){
  226. layer.photos({
  227. photos: gather.photoJSON
  228. });
  229. } else {
  230. $.getJSON('test/photos.json?v='+new Date, {}, function(json){
  231. gather.photoJSON = json;
  232. layer.photos({
  233. photos: json
  234. });
  235. });
  236. }
  237. break;
  238. case 17:
  239. layer.alert('在标题栏显示自动关闭倒计秒数', {
  240. time: 5*1000
  241. ,success: function(layero, index){
  242. var timeNum = this.time/1000, setText = function(start){
  243. layer.title('<span class="layui-font-red">'+ (start ? timeNum : --timeNum) + '</span> 秒后关闭', index);
  244. };
  245. setText(!0);
  246. this.timer = setInterval(setText, 1000);
  247. if(timeNum <= 0) clearInterval(this.timer);
  248. }
  249. ,end: function(){
  250. clearInterval(this.timer);
  251. }
  252. });
  253. break;
  254. default:
  255. //layer.msg('Hi!');
  256. break;
  257. }
  258. //定位到对应的
  259. var p = gather.demo1.find('p').eq(index);
  260. var top = p.parent().position().top;
  261. var ol = gather.demo1.find('.layui-code-ol');
  262. gather.demo1.find('.layui-code-ol').animate({
  263. scrollTop: ol.scrollTop() + top
  264. }, 0);
  265. });
  266. //一往而深
  267. $('#demore').on('click', function(){
  268. gather.htdy.animate({scrollTop : $('#yiwang').offset().top}, 200);
  269. });
  270. gather.demo2 = $('#demo2');
  271. $('.layer-demolist').on('click', function(){
  272. var othis = $(this), index = othis.index('.layer-demolist');
  273. switch(index){
  274. case 0:
  275. //信息框-例1
  276. layer.alert('见到你真的很高兴', {icon: 6});
  277. break;
  278. case 1:
  279. //信息框-例2
  280. layer.msg('你确定你很帅么?', {
  281. time: 0 //不自动关闭
  282. ,btn: ['必须啊', '丑到爆']
  283. ,yes: function(index){
  284. layer.close(index);
  285. layer.msg('雅蠛蝶 O.o', {
  286. icon: 6
  287. ,time: 0
  288. ,btn: ['嗷','嗷','嗷']
  289. });
  290. }
  291. });
  292. break;
  293. case 2:
  294. //信息框-例3
  295. layer.msg('这是最常用的吧');
  296. break;
  297. case 3:
  298. //信息框-例4
  299. layer.msg('不开心。。', {icon: 5});
  300. break;
  301. case 4:
  302. //信息框-例5
  303. layer.msg('玩命卖萌中', function(){
  304. //关闭后的操作
  305. });
  306. break;
  307. case 5:
  308. //页面层-自定义
  309. layer.open({
  310. type: 1,
  311. title: false,
  312. closeBtn: 0,
  313. shadeClose: true,
  314. skin: 'yourclass',
  315. content: '自定义HTML内容'
  316. });
  317. break;
  318. case 6:
  319. //页面层-图片
  320. layer.open({
  321. type: 1,
  322. title: false,
  323. closeBtn: 0,
  324. area: ['auto'],
  325. skin: 'layui-layer-nobg', //没有背景色
  326. shadeClose: true,
  327. content: $('#tong'),
  328. success: function(){
  329. layer.msg('弹出一个隐藏的碎片,里面包含了图片和链接', {
  330. offset: '15px',
  331. icon: 0
  332. });
  333. }
  334. });
  335. break;
  336. case 7:
  337. //iframe层-父子操作
  338. layer.open({
  339. type: 2,
  340. area: ['700px', '450px'],
  341. fixed: false, //不固定
  342. maxmin: true,
  343. content: 'test/iframe.html'/*tpa=http://www.layui.com/layer/test/iframe.html*/
  344. });
  345. break;
  346. case 8:
  347. //iframe层-多媒体
  348. layer.open({
  349. type: 2,
  350. title: false,
  351. area: ['630px', '360px'],
  352. shade: 0.8,
  353. closeBtn: 0,
  354. shadeClose: true,
  355. content: '//player.youku.com/embed/XMzI1NjQyMzkwNA=='
  356. });
  357. layer.msg('点击任意处关闭');
  358. break;
  359. case 9:
  360. //iframe层-禁滚动条
  361. layer.open({
  362. type: 2,
  363. area: ['360px', '500px'],
  364. skin: 'layui-layer-rim', //加上边框
  365. content: ['mobile/', 'no']
  366. });
  367. break;
  368. case 10:
  369. //加载层-默认风格
  370. layer.load();
  371. //此处演示关闭
  372. setTimeout(function(){
  373. layer.closeAll('loading');
  374. }, 2000);
  375. break;
  376. case 11:
  377. //加载层-风格2
  378. layer.load(1);
  379. //此处演示关闭
  380. setTimeout(function(){
  381. layer.closeAll('loading');
  382. }, 2000);
  383. break;
  384. case 12:
  385. //加载层-风格3
  386. layer.load(2);
  387. //此处演示关闭
  388. setTimeout(function(){
  389. layer.closeAll('loading');
  390. }, 2000);
  391. break;
  392. case 13:
  393. //加载层-风格4
  394. layer.msg('加载中', {
  395. icon: 16
  396. ,shade: 0.01
  397. });
  398. break;
  399. case 14:
  400. //打酱油
  401. layer.msg('尼玛,打个酱油', {icon: 4});
  402. break;
  403. case 15:
  404. layer.tips('上', this, {
  405. tips: [1, '#000']
  406. });
  407. break;
  408. case 16:
  409. layer.tips('默认就是向右的', this);
  410. break;
  411. case 17:
  412. layer.tips('下', this, {
  413. tips: 3
  414. });
  415. break;
  416. case 18:
  417. layer.tips('在很久很久以前,在很久很久以前,在很久很久以前……', this, {
  418. tips: [4, '#78BA32']
  419. });
  420. break;
  421. case 19:
  422. layer.tips('不会销毁之前的', this, {tipsMore: true});
  423. break;
  424. case 20:
  425. //默认prompt
  426. layer.prompt(function(val, index){
  427. layer.msg('得到了'+val);
  428. layer.close(index);
  429. });
  430. break;
  431. case 21:
  432. //屏蔽浏览器滚动条
  433. layer.open({
  434. content: '浏览器滚动条已锁',
  435. scrollbar: false
  436. });
  437. break;
  438. case 22:
  439. //弹出即全屏
  440. var index = layer.open({
  441. type: 2,
  442. content: 'https://fly.layui.com/jump/alyhot/',
  443. area: ['320px', '195px'],
  444. maxmin: true
  445. });
  446. layer.full(index);
  447. break;
  448. case 23:
  449. //正上方
  450. layer.msg('灵活运用offset', {
  451. offset: 't',
  452. anim: 6
  453. });
  454. break;
  455. default:
  456. layer.msg('Hi!');
  457. break;
  458. }
  459. //定位到对应的
  460. var p = gather.demo2.find('p').eq(index);
  461. var top = p.parent().position().top;
  462. var ol = gather.demo2.find('.layui-code-ol');
  463. gather.demo2.find('.layui-code-ol').animate({
  464. scrollTop: ol.scrollTop() + top
  465. }, 0);
  466. });
  467. //异步请求
  468. gather.downs = $('#downs');
  469. gather.downs [0] && function(){
  470. //获取下载数
  471. var res = {"number":901879,"title":"layer下载量"};
  472. gather.downs.html(res.number);
  473. //获取并记录关注次数
  474. var res = {"number":14317162};
  475. $('#sees').html(res.number);
  476. }();
  477. //记录下载
  478. $('.layer_down').on('click',function(){
  479. });
  480. //API页
  481. gather.api = $('.layer-api');
  482. gather.apiRun = $('.layer-api-run');
  483. (function(){
  484. var lis = gather.api.find('li'), slecked = 'layer-api-slecked';
  485. lis.on('click', function(){
  486. lis.removeClass(slecked);
  487. $(this).addClass(slecked);
  488. });
  489. gather.api.find('h2').on('click', function(){
  490. var othis = $(this), i = othis.find('.layer-api-ico');
  491. if(i.hasClass('icon-shousuo')){
  492. i.addClass('icon-zhankai').removeClass('icon-shousuo');
  493. othis.next().hide();
  494. } else {
  495. i.addClass('icon-shousuo').removeClass('icon-zhankai');
  496. othis.next().show();
  497. }
  498. });
  499. layer.ready(function(){
  500. layer.photos({
  501. photos: '#layer-photos-demo'
  502. });
  503. });
  504. }());
  505. //窗口scroll
  506. (function(){
  507. var conf = {};
  508. conf.log = 0;
  509. $(window).on('scroll', function(){
  510. var stop = $(window).scrollTop();
  511. if(stop >= 60){
  512. if(!conf.log){
  513. conf.log = 1;
  514. gather.api.addClass('layer-api-fix');
  515. gather.apiRun.css('top', 0);
  516. }
  517. } else {
  518. if(conf.log){
  519. conf.log = 0;
  520. gather.api.removeClass('layer-api-fix');
  521. gather.apiRun.css('top', '60px');
  522. }
  523. }
  524. stop = null;
  525. });
  526. }());
  527. //ie6
  528. if(!-[1,] && !window.XMLHttpRequest){
  529. layer.ready(function(){
  530. layer.alert('如果您是用ietest的ie6模式,发现弹出背景一片黑色时,请不用惊慌,这并非layer未作兼容,而是你当前版本的ietest所模拟的ie6环境未对滤镜做支持,标准ie6将不会有此问题,所以请您不要担心。');
  531. });
  532. }
  533. gather.getDate = function(time){
  534. return new Date(parseInt(time)).toLocaleString()
  535. };
  536. window.paysentsin = function(){
  537. return layer.photos({
  538. photos: {
  539. "title": ""
  540. ,"data": [
  541. {
  542. "alt": "layer友情打赏",
  543. "pid": 666, //图片id
  544. "src": "../../res.layui.com/images/pay/layer.jpg"/*tpa=http://res.layui.com/images/pay/layer.jpg*/, //原图地址
  545. "thumb": "" //缩略图地址
  546. }
  547. ]
  548. }
  549. });
  550. };
  551. //公告层
  552. layer.ready(function(){
  553. var local = layui.data('layui');
  554. //layuiAdmin
  555. var notLayuiAdmin = local.notice_layuiAdmin && new Date().getTime() - local.notice_layuiAdmin < 1000*60*60*24*3
  556. if(!notLayuiAdmin && false){
  557. layer.open({
  558. type: 1
  559. ,title: 'layui 官方通用后台管理模板'
  560. ,closeBtn: false
  561. ,area: ['300px', '280px']
  562. ,shade: false
  563. //,offset: 'lb'
  564. ,id: 'LAY_Notice' //设定一个id,防止重复弹出
  565. ,btn: ['朕要体验', '朕没兴趣']
  566. ,btnAlign: 'c'
  567. ,moveType: 1 //拖拽模式,0或者1
  568. ,resize: false
  569. ,content: ['<div style="padding: 15px; text-align: center; background-color: #e2e2e2;">'
  570. ,'<a href="https://www.baidu.com/" target="_blank"><img src="../../res.layui.com/upload/2018_5/168_1527691799254_76462.jpg"/*tpa=http://cdn.layui.com/upload/2018_5/168_1527691799254_76462.jpg*/ alt="layuiAdmin" style="width: 100%; height:149.78px;"></a>'
  571. ,'</div>'].join('')
  572. ,success: function(layero, index){
  573. var btn = layero.find('.layui-layer-btn');
  574. btn.find('.layui-layer-btn0').attr({
  575. href: 'https://www.layui.com/admin/std/dist/views/'
  576. ,target: '_blank'
  577. });
  578. layero.find('a').on('click', function(){
  579. layer.close(index);
  580. });
  581. }
  582. ,end: function(){
  583. layui.data('layui', {
  584. key: 'notice_layuiAdmin'
  585. ,value: new Date().getTime()
  586. });
  587. }
  588. });
  589. }
  590. });
  591. layui.use(['util', 'code', 'element'], function(){
  592. var util = layui.util, layim = layui.layim;
  593. //固定块
  594. util.fixbar({
  595. bar1: false
  596. ,click: function(type){
  597. if(type === 'bar1'){
  598. location.href = 'http://fly.layui.com/';
  599. }
  600. }
  601. });
  602. //代码修饰器
  603. layui.code();
  604. });
  605. }();