将 DIVS 放在一行然后居中

Posted

技术标签:

【中文标题】将 DIVS 放在一行然后居中【英文标题】:Put DIVS on one line then center 【发布时间】:2014-08-10 06:35:02 【问题描述】:

我有一个带有 2 个输入和一个提交按钮的表单。

它们位于不同的 DIVS 中,因此我使用左浮点数将它们全部放在一行中。

我将整个内容包含在一个更大的 DIV 中,并且我在左右边距上使用 auto 来尝试将整个内容居中。

无论我做什么,我都无法使表格居中。这让我发疯。我敢肯定,我只是缺少一些简单的东西。我做错了什么?

提前致谢!

http://jsfiddle.net/T84hE/

这是我正在使用的 CSS:

    #mc_bottom_signup
         width:90%;  
         margin: 0 auto;

    

    #mc_bottom_signup input[type="text"],
    #mc_bottom_signup input[type="email"] 
        margin-right: .25em;
        width:30%;
        float:left;  
    

    #mc-embedded-subscribe 
        margin-top: 0;
        float:left;  
    

【问题讨论】:

如果父 div 具有浮动属性,则居中变得非常困难... 【参考方案1】:

虽然这可以通过浮点数来实现,但我更喜欢在子级上使用 inline-block,然后在父级上使用 text-align: center

html(删除占位符 <div>s 并添加缩进)

<div id="mc_bottom_signup">       
    <form id="mc-embedded-subscribe-form" class="validate" action="http://trinidadpena.us5.list-manage.com/subscribe/post?u=a99f40b5b94ce684ab690557e&amp;id=9d41329865" method="post" name="mc-embedded-subscribe-form" novalidate="" target="_blank">      
        <input id="mce-FNAME" class="required" name="FNAME" type="text" value="" placeholder="your    first name" /> 
        <input id="mce-EMAIL" class="required email" name="EMAIL" type="email" value="" placeholder="your email address" />
        <div style="position: absolute; left: -5000px;">
            <input tabindex="-1" name="b_a99f40b5b94ce684ab690557e_9d41329865" type="text" value="" />
        </div>       
        <input id="mc-embedded-subscribe" class="button" name="subscribe" type="submit" value="Yes, I want in!" />
    </form>
</div>

CSS(较少特异性)

#mc_bottom_signup
    width:90%;  
    margin: 0 auto;
    text-align: center;

#mc_bottom_signup input
    display: inline-block;

DEMO

【讨论】:

太棒了!太感谢了。这也有效!而且代码更干净。 这出于某种奇怪的原因,当我在实际站点上尝试时爆炸了。一切都在它自己的路线上。 如果你想链接到这个网站,我很乐意看看。【参考方案2】:

--DEMO--

使用text-align: centerdisplay: inline-blockmax-width:30%

#mc_bottom_signup
       width:90%;  
       margin: 0 auto;
       text-align:center;
    
#mc_bottom_signup form div
       max-width:30%;
       display: inline-block;
    
#mc_bottom_signup input[type="text"],
#mc_bottom_signup input[type="email"]  

    

#mc-embedded-subscribe 


【讨论】:

这在演示中完美运行,但在网站上,按钮不在同一行。我不知道为什么。 &lt;div style="position: absolute; left: -5000px;"&gt;&lt;/div&gt; 是干什么用的?你想隐藏它还是为什么要使用left: -5000px; 如果想隐藏它只需使用hidden 就像这样&lt;div hidden&gt;&lt;/div&gt; 也许这就是它在你的网站上中断的原因 老实说,我不确定。我从电子邮件服务提供商那里得到了那部分代码。我不想把它弄得太乱而破坏它。【参考方案3】:

margin: 0 auto; 仅在元素宽度已知时有效。我会设置一个固定宽度,然后使用媒体查询来设置百分比宽度,因为看起来您正在处理一封不支持其他内容居中方法的电子邮件。

【讨论】:

如果父div设置了float属性则不起作用。 容器本身没有浮动,所以可以正常工作,里面的元素是浮动的。 不,不是电子邮件。不过感谢您的回复,非常感谢!

以上是关于将 DIVS 放在一行然后居中的主要内容,如果未能解决你的问题,请参考以下文章

c# 如何让richtextbox第一行居中显示,在form_load时候,而不是选择第一行再设置

3 个 DIV,1 个容器,水平居中对齐

怎么把文字和图片放在一页上下居中?

中心 WordPress 元数据类别和时间元素 (Divs)

使多个浮动 div 彼此相邻居中

如何用JS判断div中内容为空,当为空时隐藏div