【问题标题】:Centering text in a <div></div> prevents movement [duplicate]在 <div></div> 中居中文本可防止移动[重复]
【发布时间】:2020-12-18 06:06:50
【问题描述】:

我想在&lt;div&gt;&lt;/div&gt;水平和垂直&lt;p&gt;&lt;/p&gt; 居中,该&lt;p&gt;&lt;/p&gt; 可能包含一行或多行。只有父母的宽度和高度是已知的。注意:我将 div 称为父级,将 p 称为子级。

我在here 和其他网站上看到,为了进行垂直居中,最好的方法是在父元素上使用display: table,在子元素上使用display: table-cellvertical-align: middle

但是,我需要 div 的 style.top 和 style.left 稍后被一些 javascript 覆盖,以使其移动。通过使用表格技巧,它以某种方式阻止了我移动父级,至少以这种方式。请注意,当 div 移动时,孩子必须保持居中。

TL;DR:

如何让一个div中的文字居中,然后还能移动这个div?

我的 html 正文:

<div id="target">
    <p>Centered?</p>
</div>

我的 CSS

    div {
        outline: 1px solid white;
        background-color: #FF9F00;
        position: absolute;
        top: 0px;
        left: 0px;
        width: 200px;
        height: 200px;
        
        /* how to center its child? */
    }
    p {  
        font-family: Arial;
    }

我的 javascript 移动方式:

var target = document.getElementById("target");
target.addEventListener('mousemove', function (event) {
    target.style.left = event.x + "px";
    target.style.top = event.y + "px";
});

【问题讨论】:

  • 请向我们展示您的 HTML 和 CSS,以便我们帮助您修改代码。
  • 我回来了!我将在接下来的几分钟内尝试提供一个可复制的最小示例,谢谢您的建议

标签: javascript html css


【解决方案1】:

使用弹性盒子怎么样?

div {
  display:flex;
  flex-direction:column;
  justify-content: center;
  text-align:center;
}

<div><p>I want this paragraph to be at the center, but it's not.</p></div>

【讨论】:

  • 啊哈,太尴尬了,它几乎是第一次尝试。非常感谢您的反馈。我仍然会提供我的代码,并测试其他答案。一旦我尝试完其他人,我会接受你的。
【解决方案2】:

如果父 &lt;div&gt;display: table-cell,则有效:

div {
  width: 300px;
  height: 150px;
  border: 1px solid red;
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}

p {
  border: 1px solid green;;
  display: inline-block;
}
<div>
  <p>lorem ipsum bla bla blah</p>
</div>

【讨论】:

  • 不错的答案,不幸的是我无法让它与我的其余代码一起使用。不过还是投了赞成票。那是我的错:/
猜你喜欢
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
相关资源
最近更新 更多