javascript - 如何设置 css width 或 left 属性以获得像素完美的结果?

标签 javascript css

我刚开始尝试使用 JS/CSS,但遇到了这个问题,我在论坛上找不到答案。

我想知道如何去掉窗口中间的白线(附图)。它不会一直出现,而是在某些比例下出现。

非常感谢

<html>
<head>
<style>
    body {
        margin: 0;
        padding: 0;
    }

    .d {
        position: fixed;
        margin: 0;
        padding: 0;
        border: 0px;

        background-color: #A1F1F1;
        text-align: center;


    }
</style>
</head>
<body>

    <script>

    var numOfDivsHor = 10;
    var numOfDivsVer = 10;

    function setCubeSize() {

        document.body.innerHTML = '';

        var w = document.body.clientWidth;
        var h = document.body.clientHeight;
        var fs = h/numOfDivsVer/3;

        for (i=0; i < numOfDivsHor; i++) {
            for (j=0; j < numOfDivsVer; j++) {
                var d = document.createElement('div');
                document.getElementsByTagName('body')[0].appendChild(d);

                d.id = i + '' + j;
                d.className = 'd';
                d.innerHTML = i + '' + j;

                setLayout(i + '' + j, w, h, fs);

                d.style.left = j * w/numOfDivsHor + 'px';
                d.style.top = i * h/numOfDivsVer + 'px';
                d.style.backgroundColor = 'rgb(120, ' + Math.round(i * 25.5) + ', ' + Math.round(j * 25.5) + ')';
            }

        }

    }

    function setLayout(divId, w, h, fs) {
        var d = document.getElementById(divId);
        d.style.width = 100/numOfDivsHor + '%';
        d.style.height = 100/numOfDivsVer + '%';
        d.style.fontSize = fs + 'px';
        d.style.paddingTop = (h/numOfDivsVer - fs)/2 + 'px';

    }

    document.addEventListener('DOMContentLoaded', function() {;
        setCubeSize();
    });

    window.addEventListener('resize', function() {
        setCubeSize();
    });

    </script>
</body>
</html>

white line in the middle

最佳答案

这是处理图形和 float 时常见的舍入问题。您或多或少只需要在除法时floor 值。

具体来说,此更改修复了您发布的代码中的问题。变化:

d.style.left = j * w/numOfDivsHor + 'px';
d.style.top = i * h/numOfDivsVer + 'px';

到:

d.style.left = j * Math.floor(w/numOfDivsHor) + 'px';
d.style.top = i * Math.floor(h/numOfDivsVer) + 'px';

请注意,您将在网格的一个边缘留下空白。这是因为窗口的大小不是单元格大小的完美倍数。您必须在保持单元格大小不变(如上)或具有不同大小的单元格之间做出选择,这会需要更多的工作。

关于javascript - 如何设置 css width 或 left 属性以获得像素完美的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955500/

相关文章:

css - 导航条码信息

javascript - 为什么毫秒计数器在 requestAnimationFrame() 中一直走?

javascript - 如何使用 javascript 对象在 d3 v4 中画一条线?

javascript - 如何在 Angular 4+ 中保存 blob 响应类型

javascript - 无法读取未定义的属性 'kind'

html - 为什么我的屏幕宽度大于 100%?

html - 我的 CSS 动画在 iOS 中不工作

javascript - 如何从 angularjs 工厂内的 $http.get() 返回数据

python - 使用 CSS 自定义工具提示

html - 列固定高度 - 保持图像纵横比?