127

ラベルと入力フィールドを揃えるためにスタイルを設定したい一般的なフォームがあります。何らかの理由で、ラベル セレクターに幅を指定しても何も起こりません。

HTML:

<form id="report-upload-form" method="POST" action="" enctype="multipart/form-data">
    <p>
        <label for="id_title">Title:</label> 
        <input id="id_title" type="text" class="input-text" name="title"></p>
    <p>
        <label for="id_description">Description:</label> 
        <textarea id="id_description" rows="10" cols="40" name="description"></textarea></p>
    <p>
        <label for="id_report">Upload Report:</label> 
        <input id="id_report" type="file" class="input-file" name="report">
    </p>
</form>

CSS:

#report-upload-form {
    background-color: #316091;
    color: #ddeff1;
    font-weight:bold;
    margin: 23px auto 0 auto;
    border-radius:10px;
    width: 650px;
    box-shadow:  0 0 2px 2px #d9d9d9;
}

#report-upload-form label {
    padding-left:26px;
    width:125px;
    text-transform: uppercase;
}

#report-upload-form input[type=text], 
#report-upload-form input[type=file],
#report-upload-form textarea {
    width: 305px;
}

出力:

ここに画像の説明を入力

jsフィドル

私は何を間違っていますか?

4

7 に答える 7

238

するdisplay: inline-block

#report-upload-form label {
    padding-left:26px;
    width:125px;
    text-transform: uppercase;
    display:inline-block
}

http://jsfiddle.net/aqMN4/

于 2012-05-30T13:06:26.103 に答える
42

使用するdisplay: inline-block;

説明:

labelインライン要素です。つまり、必要なだけの大きさです。

プロパティを有効にするために、またはのdisplayいずれかにプロパティを設定します。inline-blockblockwidth

例:

#report-upload-form {
    background-color: #316091;
    color: #ddeff1;
    font-weight: bold;
    margin: 23px auto 0 auto;
    border-radius: 10px;
    width: 650px;
    box-shadow: 0 0 2px 2px #d9d9d9;

}

#report-upload-form label {
    padding-left: 26px;
    width: 125px;
    text-transform: uppercase;
    display: inline-block;
}

#report-upload-form input[type=text], 
#report-upload-form input[type=file],
#report-upload-form textarea {
    width: 305px;
}
<form id="report-upload-form" method="POST" action="" enctype="multipart/form-data">
    <p><label for="id_title">Title:</label> <input id="id_title" type="text" class="input-text" name="title"></p>
    <p><label for="id_description">Description:</label> <textarea id="id_description" rows="10" cols="40" name="description"></textarea></p>
    <p><label for="id_report">Upload Report:</label> <input id="id_report" type="file" class="input-file" name="report"></p>
</form>

于 2012-05-30T13:05:13.103 に答える
6

ラベルはインラインであると思いますので、幅はありません。たぶん「display:block」を使ってそこから行ってみてください。

于 2012-05-30T13:05:02.330 に答える
6

最初にブロックにしてから、左にフロートして、次のブロックを新しい行に押し込むのをやめます。

#report-upload-form label {
                           padding-left:26px;
                           width:125px;
                           text-transform: uppercase;
                           display:block;
                           float:left
}
于 2012-05-30T13:09:08.130 に答える
5

スタイルを与える

display:inline-block;

これがお役に立てば幸いです」

于 2012-05-30T13:05:25.257 に答える
4

labelのデフォルトdisplayモードはです。これはinline、コンテンツに合わせて自動的にサイズが変更されることを意味します。幅を設定するには、設定display:blockしてから、正しく配置するためにいくつかのファッフィングを行う必要があります(おそらくfloat

于 2012-05-30T13:05:37.557 に答える