【问题标题】:Center div using css equivalent to table method中心 div 使用 css 等效于 table 方法
【发布时间】:2014-10-31 11:00:22
【问题描述】:

下表方法正确居中 div 并且 div 的大小与内容的大小匹配:

<table>
<tbody>
<tr>
<td width='50%'></td>
<td>

<div>
<input type='text' name='linksearch' size='40'/>
<a href=''>Search</a>
</div>

</td>
<td width='50%'></td>
</tr>
</tbody>
</table>

仅使用 div 元素的等效 CSS 是什么?我看到很多答案,例如:

div.center {
    margin-left: auto;
    margin-right: auto;
}

但是当使用这种方法时,我不清楚如何使 div 的宽度增大或缩小以匹配 div 的内容。我可以指定一个明确的宽度,但即便如此,内容也会向右溢出,因此它不是真正居中的(您可以通过设置 div 的背景颜色清楚地看到这一点)。

那么 table 方法是否仍然更好,或者有没有办法只使用 CSS 来做到这一点?

更新:

根据要求,下面是一个说明问题的示例:

http://jsfiddle.net/qn0txere/3/

第一个“表格方法”按预期工作。第二个 'margin: 0 auto' 方法并没有真正起作用,因为 div 不会收缩内容。内容向右溢出。

【问题讨论】:

  • 您希望“搜索”字样位于输入下方还是紧邻输入?
  • 您在寻找类似的东西吗? jsfiddle.net/qn0txere
  • @BuddhistBeast 不,text-align: center 仅使文本居中,而不是 div。
  • 那么你可以添加margin: 0 auto;以“居中 div”。我不明白您要完成什么 - 您能否提供一个内容向右溢出的示例?
  • 老实说,听起来您确切地知道自己要完成的工作...而且由于您对块级元素的处理非常好,并且在 text-align 上使用边距,我认为您应该读这个:stackoverflow.com/questions/83073/… - 这会给你答案“表方法是否优越”

标签: css html-table center


【解决方案1】:

我明白你的意思,但是有一些方法可以解决这个问题,从长远来看,使用 CSS 作为样式更有益,因为以后更容易更改等等,

要解决内容超出 div 的问题,您可以使用 auto 属性来设置宽度和高度,

像这样:

div.center {
    width: auto;
    height: auto;
    margin-left: auto;
    margin-right: auto;
}

如果 div 中没有大量内容(或 max 属性),您可能还希望添加 min-width 和 min-height 属性,以使其看起来更有吸引力:

min-width: 300px;
min-height: 500px;
max-width: 500px;
max-height: 600px;

您可能还希望将 ID 或类添加到特定 div,因此在这种情况下,您可以更清楚地为特定 div 编写 CSS

【讨论】:

  • 这似乎对我不起作用。如果我使用宽度:50%,它主要是居中的,但并不像我的 q 中描述的那样。但是 width: auto 没有效果。 div 只是使用它看起来的父级的宽度。
  • 啊啊啊..我看到你的问题了,刚刚试了下,我会弄得乱七八糟,看看能不能解决
【解决方案2】:

您必须添加一个包含 div(首选)或向正文添加属性。由于您的标记无论如何都是错误的,我将通过添加 FORM 元素来选择首选方法:

<div class="center">
    <form>
    <input size="40" name="linksearch" type="text"/>
    <a href="#"> Search </a>
    </form>
</div>

现在,由于我有我需要的元素,我可以居中并让它们按我的意愿工作,因为我有机会为所有元素添加定位(+ 适当的标记):

.center {
    text-align:center
}
form {
    white-space: nowrap;
    padding: 10px;
    margin:0 auto;
    width: auto;
    background-color: #cc0;
    display:inline-block
}

真的很简单,对吧?你可以看到update to your fiddle,这样你就可以预览和玩耍了

【讨论】:

  • 您不需要边距或宽度属性。使用 text-align: center 和带有 display: inline-block 的内部元素似乎是答案。一个 div 就可以了。不需要表单元素。奇怪的是在外部元素上使用 margin: 0 auto 而不是 text-align: center 不起作用:jsfiddle.net/qn0txere/6。我想我会使用 text-align center 然后。
猜你喜欢
  • 1970-01-01
  • 2017-11-11
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
相关资源
最近更新 更多