lebar label css tidak berpengaruh


112

Saya memiliki formulir umum, yang ingin saya beri gaya untuk menyelaraskan label dan bidang masukan. Untuk beberapa alasan saat saya memberikan lebar ke pemilih label, tidak ada yang terjadi:

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;
}

Keluaran:

masukkan deskripsi gambar di sini

jsFiddle

Apa yang saya lakukan salah?


Ngomong-ngomong, apakah membungkus bagian formulir dalam <p>tag merupakan ide yang bagus?
JGallardo

Jawaban:


215

Lakukan display: inline-block:

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

http://jsfiddle.net/aqMN4/


1
Tetap dengan Inline-block. Mengujinya di IE7, IE8, IE9, FF
Davis

1
Apakah ada solusi untuk menempatkan setiap elemen dalam <p>?
Colin D

1
@ColinD Saya akan merekomendasikan menggunakan divs, bukan <p> tag.
Davis

37

Menggunakan display: inline-block;

Penjelasan:

The labelis an inline element, artinya ukurannya hanya sebesar yang dibutuhkan.

Setel displayproperti ke salah satu inline-blockatau blockagar widthproperti diterapkan.

Contoh:

#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>


1
Terima kasih! blok-inline adalah yang saya butuhkan. Blok membuatnya terlihat aneh.
TheOne

2
Ketahuilah bahwa dukungan inline-block samar-samar di IE di bawah IE8 - mungkin tidak terlalu menjadi masalah akhir-akhir ini, tetapi sesuatu yang perlu diingat. (sumber quirksmode.org/css/display.html )
n00dle

1
@PandaWood Maaf sudah hampir 2 tahun sejak Anda mengomentari kiriman ini. Tapi, komentar anda saya balas agar pembaca lainnya tidak salah kaprah dengan penjelasan yang diberikan oleh penulis postingan ini. Yang terakhir beralasan bahwa labelelemen tidak menghormati widthproperti karena merupakan elemen inline. Saya ingin menunjukkan bahwa inputelemen tersebut juga merupakan elemen sebaris secara default. Tapi itu memungkinkan lebarnya diubah menggunakan properti lebar tidak seperti labelelemen. Karenanya alasan penulis tidak benar.
ghd

6

Saya percaya label itu sebaris, sehingga tidak mengambil lebar. Mungkin coba gunakan "display: block" dan pergi dari sana.


6

Buat blok terlebih dahulu, lalu melayang ke kiri untuk berhenti mendorong blok berikutnya ke baris baru.

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


4

labeldisplayModus default adalah inline, yang berarti secara otomatis menyesuaikan ukuran isinya. Untuk mengatur lebar Anda harus mengatur display:blockdan kemudian melakukan beberapa faffing agar posisinya benar (mungkin melibatkan float)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.