2009-08-15 5 views
24

У меня есть div, и я хочу, чтобы поле ввода располагалось в его центре. Как я могу это сделать?Поле ввода ввода в центре div

+0

может у сеют, что вы пытались и не работает ? – TigerTiger

+0

Не должно ли это перейти к doctype? (http://blog.stackoverflow.com/2009/08/stack-overflow-and-doctype/; http://doctype.com/) ... почему у нас нет опции close-on-doctype close ? – derobert

ответ

11
#the_div input { 
    margin: 0 auto; 
} 

Я не уверен, работает ли это в хорошем состоянии IE6, поэтому вам, возможно, придется это сделать.

/* IE 6 (probably) */ 
#the_div { 
    text-align: center; 
} 
+0

спасибо, что помогли мне. – user156073

+0

Отлично! лучше всех сложных решений. –

1
#input_box { 
    margin: 0 auto; 
    text-align: left; 
} 
#div { 
    text-align: center; 
} 

<div id="div"> 
    <label for="input_box">Input: </label><input type="text" id="input_box" name="input_box" /> 
</div> 

или вы могли бы сделать это с помощью отступов, но это не так уж велика идеи.

0

Попробуйте этот веб-сайт, в котором показано, как центрировать вещи в div и/или тексте. Dorward

40

Уловка состоит в том, что входные элементы являются встроенными. Мы должны сделать это блоком (дисплей: блок), прежде чем позиционировать его в центре: margin: 0 auto. Пожалуйста, смотрите код ниже:

<html> 
<head> 
    <style> 
     div.wrapper { 
      width: 300px; 
      height:300px; 
      border:1px solid black; 
     } 

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

    </style> 
</head> 
<body> 

    <div class='wrapper'> 
     <input type='text' name='ok' value='ok'> 
    </div>  


</body> 
</html> 

Но если у вас есть DIV, который расположен = абсолютное, то мы должны делать вещи немного differently.Now увидеть это!

<html> 
    <head> 
    <style> 
     div.wrapper { 
      position: absolute; 
      top : 200px; 
      left: 300px; 
      width: 300px; 
      height:300px; 
      border:1px solid black; 
     } 

     input[type="text"] { 
      position: relative; 
      display: block; 
      margin : 0 auto; 
     } 

    </style> 
</head> 
<body> 

    <div class='wrapper'> 
     <input type='text' name='ok' value='ok'> 
    </div> 

</body> 
</html> 

Надеясь, что это может быть полезно.Спасибо.

+1

«Уловка состоит в том, что входные элементы встроены» - это ключ! thansk – oak

0

Вот довольно нетрадиционный способ сделать это:

#inputcontainer 
{ 
    display:table-cell; //display like a <td> to make the vertical-align work 
    text-align:center; //centre the input horizontally 
    vertical-align:middle; //centre the input vertically 


    width:200px; //widen the div for demo purposes 
    height:200px; //make the div taller for demo purposes 
    background:green; //change the background of the div for demo purposes 
} 

Это может быть не лучший способ сделать это, и маржа не будет работать, но это делает работу. Если вам нужно использовать margin, тогда вы можете обернуть div, который отображается как ячейка таблицы в другом «нормальном» div.

JSFiddle: http://jsfiddle.net/qw4QW/

0

Вы можете просто использовать следующий CSS для поля ввода:

.center-block { 
    margin: auto; 
    display: block; 
} 

Сейчас в HTML,

<div> 
    <input class="center-block"> 
</div>