diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..25daf75 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "chrome", + "request": "launch", + "name": "启动 Chrome 并打开 localhost", + "url": "http://localhost:8080/test/demo.html", + "webRoot": "${workspaceFolder}" + } + ] +} \ No newline at end of file diff --git a/src/layer.js b/src/layer.js index 8c943a5..bf0b9d7 100644 --- a/src/layer.js +++ b/src/layer.js @@ -31,7 +31,7 @@ var isLayui = window.layui && layui.define, $, win, ready = { btn: ['确定', '取消'], //五种原始层模式 - type: ['dialog', 'page', 'iframe', 'loading', 'tips'], + type: ['dialog', 'page', 'iframe', 'loading', 'tips', 'notice'], //获取节点的style属性值 getStyle: function(node, name){ @@ -144,7 +144,8 @@ var layer = { closeBtn: false, btn: false, resize: false, - end: end + end: end, + anim: 1 }, (type && !ready.config.skin) ? { skin: skin + ' layui-layer-hui', anim: anim @@ -156,6 +157,26 @@ var layer = { return options; }())); }, + + notice: function(content, options, end){ //最常用提示层 + var type = typeof options === 'function', rskin = ready.config.skin; + var skin = (rskin ? rskin + ' ' + rskin + '-notice' : '')||'layui-layer-notice'; + if(type) end = options; + return layer.open($.extend({ + content: content, + shade: false, + skin: skin, + time: 3000, + btn: false, + area: '330px', + resize: false, + type: 5, + anim:5, + offset: 'notice', + tipsMore: true, + end: end + }, type ? {} : options)); + }, load: function(icon, options){ return layer.open($.extend({ @@ -193,7 +214,7 @@ Class.pt = Class.prototype; //缓存常用字符 var doms = ['layui-layer', '.layui-layer-title', '.layui-layer-main', '.layui-layer-dialog', 'layui-layer-iframe', 'layui-layer-content', 'layui-layer-btn', 'layui-layer-close']; -doms.anim = ['layer-anim-00', 'layer-anim-01', 'layer-anim-02', 'layer-anim-03', 'layer-anim-04', 'layer-anim-05', 'layer-anim-06']; +doms.anim = ['layer-anim-00', 'layer-anim-01', 'layer-anim-02', 'layer-anim-03', 'layer-anim-04', 'layer-anim-05', 'layer-anim-06','layer-anim-07']; //默认配置 Class.pt.config = { @@ -304,6 +325,10 @@ Class.pt.creat = function(){ config.tips = typeof config.tips === 'object' ? config.tips : [config.tips, true]; config.tipsMore || layer.closeAll('tips'); break; + case 5: + config.btn = ('btn' in config) ? config.btn : ready.btn[0]; + config.tipsMore || layer.closeAll('notice'); + break; } //建立容器 @@ -343,7 +368,17 @@ Class.pt.creat = function(){ } config.time <= 0 || setTimeout(function(){ - layer.close(that.index) + if(config.type == 5){ + $.each($('.'+doms[0]+'-notice'), function(i, item){ + var othis = $(this); + if(othis.attr('times') > that.index){ + othis.offset({top:(othis.offset().top - that.layero.outerHeight() - 16)}); + } + }); + layer.close(that.index) + }else{ + layer.close(that.index) + } }, config.time); that.move().callback(); @@ -436,6 +471,19 @@ Class.pt.offset = function(){ } else if(config.offset === 'rb'){ //右下角 that.offsetTop = win.height() - area[1]; that.offsetLeft = win.width() - area[0]; + } else if(config.offset === 'notice'){ + var top = 0; + if($('.'+doms[0]+'-notice').length > 1){ + $.each($('.'+doms[0]+'-notice'), function(){ + var othis = $(this); + if(this.id !== layero[0].id) { + top = top > othis.offset().top ? top : othis.offset().top; + } + }); + top = top + area[1]; + } + that.offsetTop = top + 16; + that.offsetLeft = win.width() - area[0] - 16; } else { that.offsetTop = config.offset; } @@ -656,6 +704,14 @@ Class.pt.callback = function(){ function cancel(){ var close = config.cancel && config.cancel(that.index, layero); close === false || layer.close(that.index); + if(that.config.type === 5){ + $.each($('.'+doms[0]+'-notice'), function(i, item){ + var othis = $(this); + if(othis.attr('times') > that.index){ + othis.offset({top:(othis.offset().top - layero.outerHeight() - 16)}); + } + }); + } } //右上角关闭回调 diff --git a/src/skin/default/icon/bigger.png b/src/skin/default/icon/bigger.png deleted file mode 100644 index e9f198e..0000000 Binary files a/src/skin/default/icon/bigger.png and /dev/null differ diff --git a/src/skin/default/icon/close_big.png b/src/skin/default/icon/close_big.png deleted file mode 100644 index b51d6b6..0000000 Binary files a/src/skin/default/icon/close_big.png and /dev/null differ diff --git a/src/skin/default/icon/close_small.png b/src/skin/default/icon/close_small.png deleted file mode 100644 index 44ec85c..0000000 Binary files a/src/skin/default/icon/close_small.png and /dev/null differ diff --git a/src/skin/default/icon/download.png b/src/skin/default/icon/download.png deleted file mode 100644 index 0514c20..0000000 Binary files a/src/skin/default/icon/download.png and /dev/null differ diff --git a/src/skin/default/icon/full_screen.png b/src/skin/default/icon/full_screen.png deleted file mode 100644 index f9bf06c..0000000 Binary files a/src/skin/default/icon/full_screen.png and /dev/null differ diff --git a/src/skin/default/icon/next.png b/src/skin/default/icon/next.png deleted file mode 100644 index 0a973df..0000000 Binary files a/src/skin/default/icon/next.png and /dev/null differ diff --git a/src/skin/default/icon/prev.png b/src/skin/default/icon/prev.png deleted file mode 100644 index 5a421b3..0000000 Binary files a/src/skin/default/icon/prev.png and /dev/null differ diff --git a/src/skin/default/icon/rotate.png b/src/skin/default/icon/rotate.png deleted file mode 100644 index e036d63..0000000 Binary files a/src/skin/default/icon/rotate.png and /dev/null differ diff --git a/src/skin/default/icon/smaller.png b/src/skin/default/icon/smaller.png deleted file mode 100644 index 8072df8..0000000 Binary files a/src/skin/default/icon/smaller.png and /dev/null differ diff --git a/src/theme/default/layer.css b/src/theme/default/layer.css index 9d743ba..9d92976 100644 --- a/src/theme/default/layer.css +++ b/src/theme/default/layer.css @@ -18,7 +18,7 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;} .layui-layer-border{border: 1px solid #B2B2B2; border: 1px solid rgba(0,0,0,.1); box-shadow: 1px 1px 5px rgba(0,0,0,.2);} .layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;} .layui-layer-ico{ background:url(icon.png) no-repeat;} -.layui-layer-dialog .layui-layer-ico, +.layui-layer-dialog .layui-layer-ico,.layui-layer-notice .layui-layer-ico, .layui-layer-setwin a, .layui-layer-btn a{display:inline-block; *display:inline; *zoom:1; vertical-align:top;} @@ -75,9 +75,9 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;} .layui-layer-btn-c{text-align: center;} /* 定制化 */ -.layui-layer-dialog{min-width:260px;} -.layui-layer-dialog .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;} -.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;} +.layui-layer-dialog,.layui-layer-notice{min-width:260px;} +.layui-layer-dialog .layui-layer-content,.layui-layer-notice .layui-layer-content{position: relative; padding:20px; line-height:24px; word-break: break-all; overflow:hidden; font-size:14px; overflow-x: hidden; overflow-y:auto;} +.layui-layer-dialog .layui-layer-content .layui-layer-ico,.layui-layer-notice .layui-layer-content .layui-layer-ico{position:absolute; top:16px; left:15px; _left:-40px; width:30px; height:30px;} .layui-layer-ico1{background-position:-30px 0 } .layui-layer-ico2{background-position:-60px 0;} .layui-layer-ico3{background-position:-90px 0;} @@ -88,7 +88,7 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;} .layui-layer-msg{min-width:180px; border:1px solid #D3D4D3; box-shadow: none;} .layui-layer-hui{min-width:100px; background-color: #000; filter:alpha(opacity=60); background-color: rgba(0,0,0,0.6); color: #fff; border:none;} .layui-layer-hui .layui-layer-content{padding:12px 25px; text-align:center;} -.layui-layer-dialog .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;} +.layui-layer-dialog .layui-layer-padding,.layui-layer-notice .layui-layer-padding{padding: 20px 20px 20px 55px; text-align: left;} .layui-layer-page .layui-layer-content{position:relative; overflow:auto;} .layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;} .layui-layer-nobg{background:none;} @@ -155,7 +155,6 @@ html #layuicss-layer{display: none; position: absolute; width: 1989px;} .layui-layer-imgnext{right:10px; _right:8px; background-position:-5px -50px; _background-position:-70px -50px;} .layui-layer-imgnext:hover{background-position:-33px -50px; _background-position:-120px -50px;} .layui-layer-imgbar{position:absolute; left:0; bottom:0; width:220px; height:32px; line-height:32px; color:#fff; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; font-size:0;} -.layui-layer-imgtit{/*position:absolute; left:20px;*/} .layui-layer-imgtit *{display:inline-block; *display:inline; *zoom:1; vertical-align:top; font-size:12px;} .layui-layer-imgtit a{max-width:65%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; color:#fff;} .layui-layer-imgtit a:hover{color:#fff; text-decoration:underline;} @@ -267,23 +266,12 @@ i{ transform: rotate(270deg); -webkit-transform: rotate(270deg); } -@keyframes layer-bounceOut { - 100% {opacity: 0; -webkit-transform: scale(.7); -ms-transform: scale(.7); transform: scale(.7);} - 30% {-webkit-transform: scale(1.05); -ms-transform: scale(1.05); transform: scale(1.05);} - 0% {-webkit-transform: scale(1); -ms-transform: scale(1);transform: scale(1);} -} -.layer-anim-close{-webkit-animation-name: layer-bounceOut;animation-name: layer-bounceOut; -webkit-animation-duration:.2s; animation-duration:.2s;} - -@media screen and (max-width: 1100px) { - .layui-layer-iframe{overflow-y: auto; -webkit-overflow-scrolling: touch;} -} .image{ position: absolute; margin:0; /*之所以不使用auto直接垂直居中,是因为当图片旋转时left值会很难计算*/ padding:0; z-index: 10; display: none; - moz-user-select: -moz-none; -moz-user-select: none; -o-user-select:none; -khtml-user-select:none; @@ -383,7 +371,6 @@ i{ left: 0; right: 0; bottom: 0; - moz-user-select: -moz-none; -moz-user-select: none; -o-user-select:none; -khtml-user-select:none; diff --git a/src/theme/element/style.css b/src/theme/element/style.css new file mode 100644 index 0000000..aa909c7 --- /dev/null +++ b/src/theme/element/style.css @@ -0,0 +1,52 @@ +.layer-element{ + border-radius: 4px; + border: 1px solid #ebeef5; + box-shadow: 0 2px 12px 0 rgba(0,0,0,.1); +} +.layer-element .layui-layer-title{ + font-size: 18px; + color: #303133; + background-color: #fff; + border-bottom:none; +} +.layer-element-notice .layui-layer-title{ + font-weight: 700; + font-size: 16px; + color: #303133; + margin: 0; + padding-left:27px; + height: 30px; + border-radius: 16px; +} +.layer-element-notice{ + border-radius: 16px; + border: 1px solid #ebeef5; + box-shadow: 0 2px 12px 0 rgba(0,0,0,.1); +} +.layer-element-notice .layui-layer-content{ + padding: 5px 27px 13px 27px; + font-size: 14px; + line-height: 21px; + color: #606266; + text-align: justify; +} + + + +@-webkit-keyframes +layer-zoomInRight{ + 0% + {opacity:0;-webkit-transform:translateX(400px); + transform: translateX(400px);-webkit-animation-timing-function:linear;animation-timing-function:linear} + 60% + {opacity:1;-webkit-transform: translateX(0); + transform: translateX(0);-webkit-animation-timing-function:linear;animation-timing-function:linear}} +@keyframes +layer-zoomInRight{ + 0% + {opacity:0;-webkit-transform:translateX(400px); + transform: translateX(400px);-webkit-animation-timing-function:linear;animation-timing-function:linear} + 60% + {opacity:1;-webkit-transform: translateX(0); + transform: translateX(0);-webkit-animation-timing-function:linear;animation-timing-function:linear}} + .layer-anim-07{-webkit-animation-name:layer-zoomInRight;animation-name:layer-zoomInRight;animation-duration: 0.8s;-webkit-animation-duration: 0.8s} \ No newline at end of file diff --git a/test/demo.html b/test/demo.html index 4c3f376..fcbb373 100644 --- a/test/demo.html +++ b/test/demo.html @@ -9,8 +9,6 @@