我有响应式导航菜单和项目块。随着屏幕分辨率的变化,项目块会自动调整其宽度(这很棒)。但导航菜单位于页面标记的不同部分,并且不会收到与项目块相同的宽度值。
我的目标:当分辨率更改时 - 脚本会检查项目块的宽度,然后将导航菜单的宽度更改为相同的值。
到目前为止,我有:
$(document).ready(function(){
$( window ).resize(function() {
Resized();
});
});
function Resized()
{
var block_width= $(".block_item").width();
var width_to_set = parseInt(block_width);
$(".header-navi-inner").css({
'width': (width_to_set + 'px')
});
};
当我调整大小时,我可以看到脚本执行并导航菜单更改宽度,但宽度与项目块的宽度不完全相同。它非常接近,但根据设置的分辨率,它的宽度大约为1px-5px。
当我查看这些元素的CSS时,我发现item块具有这样的样式:
float: left;
border-radius: 2px;
margin: 2px .25%;
position: relative;
width: 49.5%;
line-height: 0.8;
我认为margin .25%
导致问题,因为保证金百分比值是根据父节点计算的。因此,当分辨率更改时,父节点会更改其大小和边距。这就是为什么我的脚本会出现1-5px差异的原因?!
这是真的吗?如何在没有任何其他添加像素的情况下获得元素的精确宽度?
我也尝试过:
$(".item").innerWidth();
$(".item").outerWidth(true);
但结果是一样的。
我还尝试了2(更新):
我还尝试计算保证金值,然后从 width_to_set 值中减去它:
var parent_node = $(".twelve").width();
var margin= (main_slaider * 0.0025);
var width_to_set = parseInt(column_width) - margin;
但导航菜单仍然比1-3px的项目块更宽
提前感谢您的帮助。