Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 调整窗口大小时重新定位绝对定位元素的最佳实践_Javascript_Html_Css - Fatal编程技术网

Javascript 调整窗口大小时重新定位绝对定位元素的最佳实践

Javascript 调整窗口大小时重新定位绝对定位元素的最佳实践,javascript,html,css,Javascript,Html,Css,在我的页面中有许多元素是绝对定位的。在调整窗口大小时重新调整其位置的最佳实践方法是什么(全部) 我建议最好的做法是使用CSS,如果可能的话,避免使用JavaScript。因此,尽可能避免绝对定位,并且在绝对定位时尽可能使用百分比而不是像素值,在定位要锚定到右侧的元素时,使用右侧而不是左侧,在定位要锚定到底部的元素时,使用底部而不是顶部,让浏览器为你处理 例如: <!DOCTYPE HTML> <html> <head> <meta http-equiv=

在我的页面中有许多元素是绝对定位的。在调整窗口大小时重新调整其位置的最佳实践方法是什么(全部)

我建议最好的做法是使用CSS,如果可能的话,避免使用JavaScript。因此,尽可能避免绝对定位,并且在绝对定位时尽可能使用百分比而不是像素值,在定位要锚定到右侧的元素时,使用
右侧
而不是
左侧
,在定位要锚定到底部的元素时,使用
底部
而不是
顶部
,让浏览器为你处理

例如:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Resize Demo Page</title>
<style type='text/css'>
body {
    font-family: sans-serif;
}
#anchorRight {
    position: absolute;
    right: 0px;
    top: 20%;
    border: 1px solid black;
}
#anchorBottom {
    position: absolute;
    bottom: 0px;
    left:  20%;
    border: 1px solid black;
}
#anchorBoth {
    position: absolute;
    right: 0px;
    bottom: 0px;
    border: 1px solid black;
}
</style>
</head>
<body>
<p>Look, Ma, no JavaScript required.</p>
<div id='anchorRight'>Anchor right, 20% from top</div>
<div id='anchorBottom'>Anchor bottom, 20% from left</div>
<div id='anchorBoth'>Anchor bottom and right</div>
</body>
</html>

调整演示页面大小
身体{
字体系列:无衬线;
}
#主持人{
位置:绝对位置;
右:0px;
最高:20%;
边框:1px纯黑;
}
#锚底{
位置:绝对位置;
底部:0px;
左:20%;
边框:1px纯黑;
}
#主播{
位置:绝对位置;
右:0px;
底部:0px;
边框:1px纯黑;
}
听着,妈,不需要JavaScript

右锚,距顶部20% 锚定底部,距离左侧20% 锚定底部和右侧

纯CSS解决方案可能并不总是可行的。在使用JavaScript时,您不仅要关注窗口大小调整事件,还要关注文本大小调整,这更令人痛苦(Google包括用于此操作的实用程序)。还要确保内置,以避免在实际调整大小操作期间过于频繁地重新定位图元。(一种简单的方法是通过将函数设置为在四分之一秒后由
setTimeout
调用并记住计时器句柄来响应调整大小;如果在调用函数之前收到另一个调整大小事件,请取消先前的计时器并设置一个新的事件。您可以设置最大延迟调整大小的次数,然后再进行调整。)d[显示临时更新],但由于使用JavaScript移动这些内容可能有点慢,因此您不希望在操作过程中获得的每个临时事件上都这样做。)

使用jQuery可以执行以下操作:

jQuery(window).resize(function() {
    jQuery('#ContainerDiv').html( jQuery('#ContainerDiv').html() );
});

尽管这可能不是最佳做法。

我认为人们需要更多的信息,因为元素绝对定位的方式有很多种。不同的方式?我认为位置:绝对的,左上角可以定位它们absolute@Ajay嗯,是的;这不是我的意思:-)我的意思是,这真的取决于你的页面是什么样子。有时,事物的定位方式——即使使用“位置:绝对”——是它们将随窗口一起调整大小。有时,当窗口调整大小时,它们改变大小是没有意义的。这一切都取决于设计。@ajax:不仅是
left
top
。您可以使用
right
bottom
来代替,这可以最大限度地减少您对JavaScript的需求。right和bottom如何实现这一点?顺便问一下,谁是ajax?^o)+1:我只想提醒开发人员,应该检查与视口边缘的百分比距离是否是他真正想要的。@Robusto:哦,当然。我在示例中只使用了百分比来证明一个人可以。这可能会玷污这一点。。。