无法将精确的div宽度设置为其他div脚本

时间:2017-06-01 22:16:57

标签: javascript jquery html css

我有响应式导航菜单和项目块。随着屏幕分辨率的变化,项目块会自动调整其宽度(这很棒)。但导航菜单位于页面标记的不同部分,并且不会收到与项目块相同的宽度值。

我的目标:当分辨率更改时 - 脚本会检查项目块的宽度,然后将导航菜单的宽度更改为相同的值。

到目前为止,我有:

    $(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。

例如:enter image description here

当我查看这些元素的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的项目块更宽

提前感谢您的帮助。

0 个答案:

没有答案