如何在动态大小的div的中心放置一个按钮

Posted

技术标签:

【中文标题】如何在动态大小的div的中心放置一个按钮【英文标题】:How to place a button in the center of div of dynamic size 【发布时间】:2013-03-07 23:16:20 【问题描述】:

我有这个代码:

<div class="outer">
    <ul class="list">
        <li class="inner">
            <div class="line">information1</div>
            <div class="line">hyperlink1</div>
        </li>
        <li>
            <div class="line">information2</div>
            <div class="line">hyperlink2</div>
        </li>
        <li>
            <div class="line">information3</div>
            <div class="line">hyperlink3</div>
        </li>
        <li>
            <div class="line">information4</div>
            <div class="line">hyperlink4</div>
        </li>
    </ul>
    <input type="submit" id="send" value="send" class="button"/>
</div>

和css:

.outer

    display: table;
    border: 1px solid;
    padding: 5px;
    
.list

    list-style: none;
    padding: 5px;
    
.inner

    display: table-row;
    padding: 5px;
    
.line

    display: table-cell;
    border: 1px solid;
    border-radius: 5px;
    
.button

    top:50%; 
    left:50%;

输出为:this

现在我想把按钮放在“外部”div的中心,不管宽度是多少。

示例:我希望按钮位于中心,即使是:this。无需在每次 div 大小更改时更改 css。即使“外部”div 是动态的,按钮也应该位于中心。

谢谢。

【问题讨论】:

【参考方案1】:

这以一种简单、简洁的方式实现了您正在寻找的内容:

.button 
    display:block;
    margin: 0 auto;

【讨论】:

【参考方案2】:

你需要给按钮一个特定的宽度,然后你可以使用自动边距

.button 
  display: block;
  margin: 0 auto;

http://fiddle.jshell.net/CrHyd/

【讨论】:

如果按钮内的文本太长而无法容纳在 100px 内,则会中断 是的。如果这个词很长。它没有显示结束部分。 你不需要宽度,这是真的。 100px 只是基于他给出的代码的一个例子。上次“发送”需要超过 100 像素是什么时候? 是的。我没有足够的声誉来投票。不过还是谢谢。【参考方案3】:

只需将.button 更改为此,使用margin 属性。 (1 行修复)

.button

    margin:0 auto;

这是一个小提琴,我将.outer 设为500px 的固定宽度,只是为了展示margin 的作用示例:

DEMO

【讨论】:

【参考方案4】:

这应该可以工作

.outer 
display: inline-block;
text-align: center;

fiddle

【讨论】:

我希望它是表格格式,并且我希望按钮位于 div 的中心。上面的 css 把它放在页面的中心。 然后将提交按钮包装在其他 div 中,并将此样式应用到它,宽度为:100%;小提琴:fiddle.jshell.net/mDHBX/9【参考方案5】:

有不止一种方法可以做到这一点。我更喜欢使用这样的百分比:

input[type="submit"]
    min-width:20%;
    max-width:20%;
    margin:0% 39% 0% 40%; //margin-right = 39% to stop errors

其他人更喜欢margin:auto 方法,但我个人从未发现这种方法有效。其他方法包括使用floats,但我不同意这个属性,因为它在某些浏览器中会错误对齐其他元素。

使用 top 和 left 会导致错误,因为您没有指定除默认(静态)以外的位置类型。

【讨论】:

以上是关于如何在动态大小的div的中心放置一个按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ios中的自动布局将三个按钮并排放置在中心并留有间距?

如何将按钮垂直放置在框架的中心?

在底部中心的面板内放置一个按钮(asp.net)

如何确定滚动视图中当前可见的区域并确定中心?

如何从根据动态父 div 缩放的路径构建反向 svg 掩码

如何将标签放置在传单瓦片的中心?