javascript - css 大小和边距以及百分比

标签 javascript jquery css

所以我想创建一个始终充满整个屏幕且布局良好的页面。使用以下代码效果很好:

#posts{
    width:100%;
    height:auto;
    background:#666;
}
.entry{
    float:left;
    margin-left: 4%;
    margin-top:10px;
    margin-bottom: 10px;
    width:20%;
    height:100px;
    background:#000;
}

有一个问题...它在调整窗口大小时中断。我只是好奇为什么当窗口调整大小时它不起作用,因为由于边距和大小是用百分比完成的,它们应该更改为正确的,对吗?

我的问题是:

为什么当查看器调整窗口大小时 css 百分比无法正常工作,我该怎么做才能使其正确调整大小?

请记住在加载后调整窗口大小,以实际看到我正在谈论的问题。

Here is a jsfiddle

编辑1:

很明显,根据到目前为止的答案,这是一个我想要做的事情与砌体相冲突的问题,赋予它的元素绝对定位。因此,解决此问题的方法是使用一些 javascript/jquery 行,可以根据正确的百分比重做窗口调整大小时的边距...我该怎么做?

最佳答案

嗯,这是因为

position:absolute; 属性由砌体设置。

An element that is positioned absolutely is taken out of the flow and thus takes up no space when placing other elements

如果删除该行,它就可以正常工作,请检查 this

如果所有元素都具有相同的宽度和高度,通常您不需要砌体。

更新:

运行了一个小脚本,这将使该脚本与您当前的 html 实现一起工作。

$(".entry").each(function(){
    var $this = $(this)
    var currLeft = 0;
    var containerWidth = 0;
    var newLeft = 0;

    currLeft = parseInt($this[0].style.left, 10);
    containerWidth = parseInt($("#posts").width(), 10);

    newLeft = currLeft/containerWidth * 100;

    $this.css({
        "left": newLeft + "%"
    })
});

因此,脚本所做的是以像素为单位的 currLeft 并计算以百分比为单位的 newLeft

Test Link

关于javascript - css 大小和边距以及百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227783/

相关文章:

javascript - 如何将元素的背景位置更改为新的 CSS 属性?

javascript/jquery-如何获取下拉框或列表框中所有可能的值

html - 如何在 css background-image : url(. ....) 中放入 div 2 图像

javascript - 如何使用 jQuery 翻转图像?

javascript - 如何在每个页面部分突出显示链接?

javascript - 如何在 UI 选择菜单中为每个选项指定选择功能

javascript - Chart.js 2 - 如何始终显示所有工具提示并对其进行样式化

javascript - 在特定 View 中禁用抽屉的滑动打开

javascript - 切换表格

javascript - 如果至少一个字段已填充值/或选定的下拉列表,则启用提交按钮