【问题标题】:Javascript grid with css position带有css位置的Javascript网格
【发布时间】:2017-10-30 18:51:20
【问题描述】:

我有一个大问题。我尝试创建一个插槽并从此插槽创建一个网格。我是这样做的:

我有 Slot.js 类,我在那里画了一个简单的矩形。 现在我在 Main 类中创建一个网格:

for(let i = 0; i <= ROW_NUM; i++)
{
    for(let j=0; j <= COL_NUM; j++)
    {
        let s = new Slot();
        let gStyle = s.graph.style;
        gStyle.left = j * SLOT_WIDTH + "px";
        gStyle.top = i * SLOT_HEIGHT + "px";
        gStyle.position = "absolute";
        g.appendChild(s.graph);


    }
}

所以我有一些 div g 并将我的插槽添加到这个 div。现在我想将此 div 的位置设置为居中。但是如果我在我的 style.css 文件中设置这个,这个 div 没有设置正确的位置。网格位置始终从左上角开始。如果我设置绝对位置,那么这个 div 将改变他的位置。

我该如何解决?

【问题讨论】:

    标签: javascript css html


    【解决方案1】:

    只需添加类以使绝对 div 居中。

    HTML:

    <div id="parent">
        <div class="centered-div">
        Hi i'm centered
        </div>
    </div>
    

    CSS:

    #parent { position: relative; }
    .centered-div { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%) }
    

    无需 JS

    【讨论】:

    • 你的意思是我应该删除js中的定位? ( gStyle.left = j * SLOT_WIDTH + "px"; 如果我这样做,那么从哪个网络浏览器知道应该有 50 列和 50 行?;] 如果我删除 JS 定位,那么网格看起来像这样:LINK如果我不删除 JS 中的定位,我会得到:LINK 它更好但位置错误,(不是居中,就像 text-align: 对的那样)。
    • 好的,我解决了这个问题。在我的 css 文件中,我有: [code] #grid{ position: relative;左:0;右:0;左边距:自动;边距右:自动; }[/code] 在我的 js 脚本中,我添加了 [code] let g = document.getElementById("grid"); g.style.width = COL_NUMS * SLOT_WIDTH + "px"; [/code] 换句话说,我只是以像素为单位设置网格的宽度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2020-01-16
    • 2020-04-23
    相关资源
    最近更新 更多