Как выровнять текст веб-формы и входные данные отдельно? - PullRequest
1 голос
/ 02 января 2012

Я ищу наиболее эффективный способ кодирования довольно простой HTML-формы, из которой я сделал макет.

До сих пор я думал о нескольких способах кодирования этого, но онивсе кажется довольно громоздким при реализации.

По сути, я пытаюсь воплотить в жизнь простой текст, выровненный по правому краю, и форму вменения, выровненную по левому краю с линией в центре обоих.Ниже приведено изображение, которое должно привести пример того, чего я пытаюсь достичь.

Ответы [ 6 ]

3 голосов
/ 02 января 2012

Вот один из подходов, хотя я думаю, что вы могли бы помочь себе намного больше, показав предыдущие попытки и объяснив проблемы, которые у вас были.Однако:

form {
    width: 80%;
    max-width: 40em;
    margin: 0 auto;
    color: #3f3a27;
    background: #f4f0e5 url(http://davidrhysthomas.co.uk/linked/test.png) 35% 0 repeat-y;
    padding: 0.5em;
}

label, input[type=text], select {
    display: inline-block;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    -o-box-sizing: border-box;
    -box-sizing: border-box;
    margin-bottom: 0.6em;    
}

label {
    width: 30%;
    text-align: right;
    margin: 0 10% 0 0;
}

label:after {
    content: ': ';
}

input[type=text] {
    width: 40%;
}

select {
    width: 20%;
}

fieldset {
    margin: 0 0 1em 0;
}

С HTML:

<form action="#" method="post">
    <fieldset>
        <label for="fullName">Full name</label>
        <input type="text" id="fullName" />
        <label for="companyName">Company</label>
        <input type="text" id="companyName" />
    </fieldset>
    <fieldset>
        <label for="select">Select</label>
        <select id="select" name="select">
            <option>Option one</option>
            <option>Option two</option>
        </select>
        <label for="t1">Text input 1</label>
        <input id="t1" type="text" />
        <label for="t2">Text input 1</label>
        <input id="t2" type="text" />
        <label for="t3">Text input 1</label>
        <input id="t3" type="text" />
    </fieldset>
</form>

JS Fiddle demo .

1 голос
/ 02 января 2012

У меня есть, как вы хотели: http://jsfiddle.net/XURye/

С теми же цветами, и каждая позиция тоже правильная!

1 голос
/ 02 января 2012

Я рекомендую использовать отображаемые значения table, table-row, and table-cell, чтобы разметка была как можно более семантически аккуратной: см. this jsFiddle

1 голос
/ 02 января 2012

Вот базовая форма с минимальным стилем

HTML

<form>
    <div class="line">
        <label for="input">Full Name</label>
        <div class="input">
            <input type="text" size="30" name="input">
        </div>
    </div>
    <div class="line">
        <label for="input">Company</label>
        <div class="input">
            <input type="text" size="30" name="input">
        </div>
    </div>
    <div class="line">
        <label for="nselect">Dropdown Menu</label>
        <div class="input">
            <select name="select">
                <option>1</option>
                <option>2</option>
                <option>3</option>
                <option>4</option>
                <option>5</option>
            </select>
        </div>
    </div>
    <div class="line">
        <label for="input">Text 1</label>
        <div class="input">
            <input type="text" size="30" name="input">
        </div>
    </div>
    <div class="line">
        <label for="input">Text 2</label>
        <div class="input">
            <input type="text" size="30" name="input">
        </div>Save
    </div>
    <div class="line">
        <label for="input">Text 3</label>
        <div class="input">
            <input type="text" size="15" name="input">
        </div>
    </div>
</form>

CSS

form {
    margin:10px 0;
}

label {
    color: #404040;
    float: left;
    font-size: 13px;
    line-height: 18px;
    padding-top: 6px;
    text-align: right;
    width: 130px;
}

label, input, select, textarea {
    font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
    font-size: 13px;
    font-weight: normal;
    line-height: normal;
}

input, textarea, select {
    -moz-border-radius: 3px 3px 3px 3px;
    border: 1px solid #CCCCCC;
    color: #808080;
    display: inline-block;
    font-size: 13px;
    height: 18px;
    line-height: 18px;
    padding: 4px;
    width: 210px;
}

select {
    height: 27px;
    line-height: 27px;
}

form .input {
    margin-left: 150px;
}

form .line {
    margin-bottom: 18px;
}

Test http://jsfiddle.net/andresilich/qxMVd/

1 голос
/ 02 января 2012
0 голосов
/ 06 июня 2015

Этот минимальный два селектора CSS из этого поста Drupal работал очень хорошо:

.form-item {
  padding: 10px 0 10px 200px;
  position: relative;
}
.form-item label {
  left: 0;
  position: absolute;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...