中心表单提交按钮HTML / CSS


75

我在将CSS表单的HTML表单提交按钮居中时遇到麻烦。

现在我正在使用:

    <input value="Search" title="Search" type="submit" id="btn_s">
    <input value="I'm Feeling Lucky" title="I'm Feeling Lucky" name="lucky" type="submit" id="btn_i">

这个CSS内容

#btn_s{
    width: 100px;
    margin-left: auto;
    margin-right: auto;
}

#btn_i {
    width: 125px;
    margin-left: auto;
    margin-right: auto;
}

而且它什么也没做。我知道我可能在做一些愚蠢的错误。我怎样才能解决这个问题?

Answers:


128

http://jsfiddle.net/SebastianPataneMasuelli/rJxQC/

我只是将div包裹在它们周围,并使其居中对齐。那么您不需要按钮上的任何CSS即可将它们居中。

<div class="buttonHolder">
  <input value="Search" title="Search" type="submit" id="btn_s"> 
  <input value="I'm Feeling Lucky" title="I'm Feeling Lucky" name="lucky" type="submit" id="btn_i">
</div>

.buttonHolder{ text-align: center; }

5
实际上,此解决方案的缺点是,持有人div将其中的所有内容居中,包括文本,子代和子代子代...因此,当我们不希望单个元素使用'margin:0 auto'时通常会更好以整个容器为中心-并指出,您可以使用块元素来实现这一目标。不过,偶尔我会像这样使用居中,所以对我来说它是-0,因为您没看错...

当我将它用于CSS样式的按钮链接时,对我来说效果很好。用div和class包裹<a href>,它应该可以完美地工作而不会影响不同的类。
masmrdrr

31

输入元素默认为内联。添加display:block以获取要应用的边距。但是,这会将按钮分成两行。按照其他人的建议使用包装纸<div>text-align: center使它们位于同一行上。


16

我在这里看到了一些答案,其中大多数都很复杂或有一些缺点(其他div,文本对齐由于显示而无法使用:内联块)。我认为这是最简单且没有问题的解决方案:

HTML:

<table>
    <!-- Rows -->
    <tr>
        <td>E-MAIL</td>
        <td><input name="email" type="email" /></td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" value="Register!" /></td>
    </tr>
</table>

CSS:

table input[type="submit"] {
    display: block;
    margin: 0 auto;
}

绝对同意,这是最好的解决方案,谢谢!+1
stepik21

7

尝试这个 :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
    <style type="text/css">
        #btn_s{
            width:100px;
        }

        #btn_i {
            width:125px;
        }
        #formbox {
            width:400px;
            margin:auto 0;
            text-align: center;
        }
    </style>
</head>
<body>
    <form method="post" action="">
        <div id="formbox">
            <input value="Search" title="Search" type="submit" id="btn_s"> 
            <input value="I'm Feeling Lucky" title="I'm Feeling Lucky" name="lucky" type="submit" id="btn_i">
        </div>
    </form>
</body>

这里有2个示例,您可以使用最适合您的情况的一个示例。

  • 使用text-align:center父容器上,或为此创建一个容器。
  • 如果容器必须具有固定的大小,请使用auto左右边距将其在父容器中居中。

请注意,auto与单个块一起使用时,可以通过向左和向右分配空白空间来使它们在父空间中居中。


2
/* here is what works for me - set up as a class */

.button {
    text-align: center;
    display: block;
    margin: 0 auto;
}

/* you can set padding and width to whatever works best */

加哈……display: block总是忘记那个!
查尔斯·艾伦

1
<style>
form div {
    width: 400px;   
    border: 1px solid black;
} 

form input[type='submit']  {
    display: inline-block;
    width: 70px;
}

div.submitWrapper  {
   text-align: center;    
}    
</style>
<form>

<div class='submitWrapper'>    
<input type='submit' name='submit' value='Submit'> 
 </div>

还要检查这个jsfiddle


您还需要在按钮上设置边距。保证金:0自动;
Gawie Greef,

1

我假设按钮应该在同一行上彼此相邻,因此不应将每个按钮都使用'auto'边距居中,而应将其放置在div内,且宽度应定义为宽度为'0 auto' :

CSS:

#centerbuttons{
   width:250px; 
   margin:0 auto;
}       

HTML(从按钮的CSS中删除边距属性后):

<div id="centerbuttons">
     <input value="Search" title="Search" type="submit"> 
     <input value="I'm Feeling Lucky" title="I'm Feeling Lucky" name="lucky" type="submit">
</div>

0

如果只需要一个按钮居中的一种简单解决方案是:

<input type='submit' style='display:flex; justify-content:center;' value='Submit'>

您可以使用类似的样式来处理多个按钮


嗯,使用内联JavaScript的错误做法。
IamBatman

感谢您的反馈,我将其用于内部工具,而不是在生产中使用,我只是想要一种快速的解决方案。当时大多使用C和Python进行编程。请继续并删除答案,我单击“删除”,但什么都没有发生……
Nagev

我想我记得为什么选择了此选项,我编写的临时内部工具使用python CGI编写动态HTML,因此要求基本上在一行中尽可能短。
Nagev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.