如何使 <div> 容器内的 <p> 元素居中?

Posted

技术标签:

【中文标题】如何使 <div> 容器内的 <p> 元素居中?【英文标题】:How to center a <p> element inside a <div> container? 【发布时间】:2013-02-13 19:20:57 【问题描述】:

我希望我的&lt;p&gt; 元素位于容器&lt;div&gt; 的中心,就像完全居中一样——顶部、底部、左侧和右侧边距均等地分隔空间。

我怎样才能做到这一点?

div 
  width: 300px;
  height: 100px;

p 
  position: absolute;
  top: auto;
<div>
  <p>I want this paragraph to be at the center, but it's not.</p>
</div>

【问题讨论】:

据我所知,你只能用表格单元格、javascript 垂直居中,或者如果你知道元素的高度要提前垂直居中 @ExplosionPills 是对的。您需要知道

标签的高度。如果你这样做了,你可以在你的样式表中做这样的事情: p width: 200px;高度:10px;位置:相对;最高:50%;左:50%;边距:-100px 0 0 -5px;

这里有两种简单的方法可以使一个 div 中的元素居中,垂直居中,水平居中或两者兼而有之(纯 CSS):***.com/a/31977476/3597276 【参考方案1】:

你不需要绝对定位 使用

p 
 text-align: center;
line-height: 100px;


并且随意调整...

如果文本超过宽度并超过一行

在这种情况下,您可以做的调整是在您的规则中包含显示属性,如下所示;

(我添加了背景以便更好地查看示例)

div

  width:300px;
  height:100px;  
  display: table; 
  background:#ccddcc;  



p 
  text-align:center; 
  vertical-align: middle;
  display: table-cell;   

在JBin 中玩它

【讨论】:

我没有投票给你,但如果文本超过一行,这将失败。 好吧,我听从了你的建议,稍作调整就奏效了。 div 宽度:300px;背景颜色:黄色;填充顶部:50px;填充底部:50px p 文本对齐:中心;

Lorem ipsum dolor sit amet

像这样,它完美居中,但这是正确的做法吗?
@insertusernamehere 这就是为什么他必须随意调整。例如包装段落等。我正在解决中心问题。 欢迎您@Johnsy Omniscient。不幸的是,尽管我试图提供帮助,但我还是投了反对票。谁知道为什么!!祝你有美好的一天 Johnsy & @insertusernamehere,最后但并非最不重要。我扩展了我的答案以涵盖可用宽度的更长文本的情况。我包括一个 jsBin 来玩。再见! :)【参考方案2】:

要获得左/右居中,然后将text-align: center 应用于div 并将margin: auto 应用于p

对于垂直定位,你应该确保你理解不同的方法,这是一个常见的问题:Vertical alignment of elements in a div

【讨论】:

margin: auto 做到了!谢谢。【参考方案3】:

您只需将text-align: center 添加到您的&lt;div&gt;

在您的情况下,还要删除您添加到&lt;p&gt; 的两种样式。

在此处查看演示:http://jsfiddle.net/76uGE/3/

祝你好运

【讨论】:

它不是垂直居中的。我更新了你的小提琴:jsfiddle.net/9Mk64 是的。我以为他只是要求水平对齐。【参考方案4】:

居中和中间的内容?

这样做:

<table style="width:100%">
    <tr>
        <td valign="middle" align="center">Table once ruled centering</td>
    </tr>
</table>

我fiddled it here

哈,让我猜猜..你想要 DIV ..

只需让您的第一个外部 DIV 表现得像一个表格单元格,然后使用垂直对齐:中间设置它的样式;

<div>
    <p>I want this paragraph to be at the center, but I can't.</p>
</div>

div 
    width:500px;
    height:100px;
    background-color:aqua;
    text-align:center;
    /*  there it is */
    display:table-cell;
    vertical-align:middle;

jsfiddle.net/9Mk64/

【讨论】:

既然知道&lt;table&gt; 是错误的,为什么还要提供解决方案呢? 表格用于表格数据,不用于布局。单行中包含单个单元格的表格绝对不代表表格数据。 哦,语义的观点,你是对的。居中居中,我是对的。【参考方案5】:

♣你应该做这些步骤:

    母元素应该定位(对于EXP你可以给它position:relative;) 子元素应该定位为“Absolute”并且值应该这样设置:top:0;buttom:0;right:0;left:0; (垂直居中) 对于子元素,您应该设置“ma​​rgin : auto”(垂直居中) 子元素和母元素具有“高度”和“宽度”值 for mother Element => text-align:center(水平居中)

♣♣这里是这 5 个步骤的总结:

.mother_Element 
    position : relative;
    height : 20%;
    width : 5%;
    text-align : center
    
.child_Element 
    height : 1.2 em;
    width : 5%;
    margin : auto;
    position : absolute;
    top:0;
    bottom:0;
    left:0;
    right:0;
    

【讨论】:

【参考方案6】:

在 p 元素上,添加 3 条样式规则。

.myCenteredPElement
    margin-left:  auto;
    margin-right: auto;
    text-align: center;

【讨论】:

【参考方案7】:

此解决方案适用于所有主流浏览器,IE 除外。所以请记住这一点。

在这个例子中,我基本上使用 UI 元素的定位、水平和垂直变换来使其居中。

        .container 
            /* set the the position to relative */
            position: relative;
            width: 30rem;
            height: 20rem;
            background-color: #2196F3;
        


        .paragh 
            /* set the the position to absolute */
            position: absolute;
            /* set the the position of the helper container into the middle of its space */
            top: 50%;
            left: 50%;
            font-size: 30px;
            /* make sure padding and margin do not disturb the calculation of the center point */
            padding: 0;
            margin: 0;
            /* using centers for the transform */
            transform-origin: center center;
            /* calling calc() function for the calculation to move left and up the element from the center point */
            transform: translateX(calc((100% / 2) * (-1))) translateY(calc((100% / 2) * (-1)));
        
<div class="container">
    <p class="paragh">Text</p>
</div>

希望对你有所帮助。

【讨论】:

以上是关于如何使 <div> 容器内的 <p> 元素居中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在父容器中使所有 div 可拖动

如何使用 JQuery 选择容器元素内的第一个 div 元素?

如何使内容div全屏

DIV 容器内的 HTML 图像底部对齐

如何使 <svg> 元素扩展或收缩到其父容器?

如何使按钮组出现在另一个 <div> 上方?