[英]How to change a position of element when a window size changes?
我有一个简单的HTML形式的搜索:
<div class="mainWindow">
<form action="#">
<input type="text" id="query" placeholder="Search..." autofocus required />
<input type="button" id="button" value="SEARCH" />
</form>
</div>
我使用jQuery的代码将mainWindow的默认位置div更改为窗口的中心:
$(document).ready(function() {
mainWindowInCenter();
});
function mainWindowInCenter() {
$('.mainWindow').css('position','fixed');
$('.mainWindow').css("left", ($(window).width()/2-$('.mainWindow').width()/2) + "px");
$('.mainWindow').css("top", ($(window).height()/2-$('.mainWindow').height()/2) + "px");
};
但是它只能运行一次 ,当我更改浏览器的窗口时,div在脚本之后保持在相同位置。
我需要做的是,当窗口的大小也改变时,div始终改变它的位置吗?
我可以以某种方式跟踪窗口的调整大小吗? 例:
$(document).ready(function() {
if (window.size.isChange()) {
mainWindowInCenter();
};
});
您可以通过挂钩到resize
事件来resize
窗口大小,从而调用函数:
$(window).on('resize', function() {
mainWindowInCenter();
});
function mainWindowInCenter() {
$('.mainWindow').css({
position: 'fixed',
left: $(window).width() / 2 - $('.mainWindow').width() / 2,
top: $(window).height() / 2 - $('.mainWindow').height() / 2
});
}
单独使用CSS也可以实现相同的效果,这将是更可取的。 但是,是否可行取决于您的HTML结构。
您不应该为此使用任何JavaScript。
如果您的元素的宽度/高度是静态的,则应该给它以下CSS:
.mainWindow {
position: fixed;
width: 500px;
height: 200px;
top: 50%;
left: 50%;
margin-top: -100px; /* Negative half of height. */
margin-left: -250px; /* Negative half of width. */
}
而且,无论窗口事件如何,它都将居中,并且在绑定到resize
事件时可以避免性能问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.