嗨! 我已经构建了一个小脚本来检查页面加载时左边距的大小,调整div的大小以填充它,并将标题div更改为浮动它旁边。
以下是代码:
function buildHeader() {
var containerMarginLeft = $(".container_16:not(:first)").css("margin-left");
var headerHeight = $("#header").height();
$("#stripe").width(containerMarginLeft).height(headerHeight).css("float", "left");
$(".container_16:first").css("float", "left");
$("#header").css("margin-left", 0).width(950);
}
$(document).ready(function(){
// Manipulate layout for the first time
buildHeader();
// Manipulate layout when window is resized
var resizeTimer = null;
$(window).bind('resize', function() {
if (resizeTimer) clearTimeout(resizeTimer);
resizeTimer = setTimeout(buildHeader, 100);
});
});
示范就在这里:http://robertmay.me.uk/mockups/plane.html(它创建了左侧延伸的线)。 现在,它适用于webkit浏览器。它在Mozilla中不起作用,我甚至没有在IE中尝试过。 任何人都有任何想法,为什么它似乎不适用于Mozilla?我觉得它可能与CSS有关。
答案 0 :(得分:1)
$(".container_16:not(:first)").css("margin-left");
无论窗口有多宽,此行都会在Firefox中显示“0px”的结果。但是,Safari中的Firebug Lite会根据窗口的宽度显示此值。
问题似乎是语句的.css('margin-left')部分,因为$(“。container_16:not(:first)”)在两个浏览器中都返回相同的元素。实际上,Firefox中的Firebug将此元素的Computed Style显示为marginLeft和marginRight的'0px',但在Safari中这不是零。
正如预期的那样,从'margin-left'变为'marginLeft'没有区别,也没有直接访问属性,例如$(“。container_16:not(:first)”)[0] .style.marginLeft,因为Firefox首先计算错误。
抱歉,我没有答案,但希望这会引导您朝着正确的方向前进。对我而言,虽然我会尝试使用CSS来调整布局,但仅作为最后的手段使用JavaScript修复。