方案一:采用監聽resize實作,需要防抖,效果一般。
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../jquery-2.1.1/jquery.min.js"></script>
<script src="layer/layer.js"></script>
<script src="layui/layui.js"></script>
<link rel="stylesheet" href="layui/css/layui.css" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >
<style>
#abcd {
position: relative;
padding: 20px;
top: 50px;
left: 50px;
font-size: 20px;
}
/*
@media screen and (min-width:1000px) {
#layui-layer100001 {
left: 200px;
color: red;
}
}
@media screen and (min-width:1400px) {
#layui-layer100001 {
left: 400px;
}
}
@media screen and (min-width:2000px) {
#layui-layer100001 {
left: 600px;
}
} */
</style>
</head>
<body>
<!-- 點選按鈕,彈出視窗,高度不變,左右在某個位置,随視窗的改變而改變位置 -->
<button id="abcd">abcd</button>
</body>
<script>
//防抖函數
function Debounce(fn, delay) {
var ctx;
var args;
var timer = null;
var later = function () {
fn.apply(ctx, args);
timer = null;
};
return function () {
ctx = this;
args = arguments;
if (timer) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(later, delay);
};
}
function layerCss() {
this.idxLayer = null;
}
layerCss.prototype = {
init: function () {
var self = this;
self.event();
},
event: function () {
var self = this;
$(document).on("click", "#abcd", function () {
var winWidth = $(window).width(),
winHeight = $(window).height();
self.idxLayer = layer.open({
title: '線上調試'
, content: '<div id="div1">配置各種參數,試試效果</div>'
, offset: [winHeight - 200, winWidth / 3] // 固定位置,不随視窗移動
, type: 1
, id: 'abc123'
});
});
$(window).on('resize1', function () {
// 由于抖動問題,不移動
var winWidth = $(window).width();
winWidth = parseInt(winWidth / 3) + "px";
layer.style(self.idxLayer, {
left: winWidth
});
console.log(winWidth);
});
// 防抖,不過效果還是不行
$(window).on("resize", Debounce(function () {
var winWidth = $(window).width();
winWidth = parseInt(winWidth / 3) + "px";
console.log(winWidth);
layer.style(self.idxLayer, {
left: winWidth
});
console.log(123);
}, 500))
},
};
var layerCssVar = new layerCss();
layerCssVar.init();
</script>
</html>
方案二:css響應式處理
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../jquery-2.1.1/jquery.min.js"></script>
<script src="layer/layer.js"></script>
<script src="layui/layui.js"></script>
<link rel="stylesheet" href="layui/css/layui.css" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >
<style>
#abcd {
position: relative;
padding: 20px;
top: 50px;
left: 50px;
font-size: 20px;
}
#layui-layer100001 {
left: 50px !important;
color: red;
}
@media screen and (min-width:500px) {
#layui-layer100001 {
left: 150px !important;
color: red;
}
}
@media screen and (min-width:1000px) {
#layui-layer100001 {
left: 300px !important;
color: red;
}
}
@media screen and (min-width:1500px) {
#layui-layer100001 {
left: 600px !important;
}
}
@media screen and (min-width:2000px) {
#layui-layer100001 {
left: 800px !important;
}
}
</style>
</head>
<body>
<!-- 點選按鈕,彈出視窗,高度不變,左右在某個位置,随視窗的改變而改變位置 -->
<button id="abcd">abcd</button>
</body>
<script>
//防抖函數
function Debounce(fn, delay) {
var ctx;
var args;
var timer = null;
var later = function () {
fn.apply(ctx, args);
timer = null;
};
return function () {
ctx = this;
args = arguments;
if (timer) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(later, delay);
};
}
function layerCss() {
this.idxLayer = null;
}
layerCss.prototype = {
init: function () {
var self = this;
self.event();
},
event: function () {
var self = this;
$(document).on("click", "#abcd", function () {
var winWidth = $(window).width(),
winHeight = $(window).height();
self.idxLayer = layer.open({
title: '線上調試'
, content: '<div id="div1">配置各種參數,試試效果</div>'
, offset: [winHeight - 200, winWidth / 3] // 固定位置,不随視窗移動
, type: 1
, id: 'abc123'
});
});
},
};
var layerCssVar = new layerCss();
layerCssVar.init();
</script>
</html>
方案三:layui的自動居中,offset隻設定高度,左右自動居中
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="../jquery-2.1.1/jquery.min.js"></script>
<script src="layer/layer.js"></script>
<script src="layui/layui.js"></script>
<link rel="stylesheet" href="layui/css/layui.css" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >
<style>
#abcd {
position: relative;
padding: 20px;
top: 50px;
left: 50px;
font-size: 20px;
}
</style>
</head>
<body>
<!-- 點選按鈕,彈出視窗,高度不變,左右在某個位置,随視窗的改變而改變位置 -->
<button id="abcd">abcd</button>
</body>
<script>
//防抖函數
function Debounce(fn, delay) {
var ctx;
var args;
var timer = null;
var later = function () {
fn.apply(ctx, args);
timer = null;
};
return function () {
ctx = this;
args = arguments;
if (timer) {
clearTimeout(timer);
timer = null;
}
timer = setTimeout(later, delay);
};
}
function layerCss() {
this.idxLayer = null;
}
layerCss.prototype = {
init: function () {
var self = this;
self.event();
},
event: function () {
var self = this;
$(document).on("click", "#abcd", function () {
var winWidth = $(window).width(),
winHeight = $(window).height();
self.idxLayer = layer.open({
title: '線上調試'
, content: '<div id="div1">配置各種參數,試試效果</div>'
, offset: [winHeight - 200]
, type: 1
, id: 'abc123'
});
});
},
};
var layerCssVar = new layerCss();
layerCssVar.init();
</script>
</html>