Làm cách nào để căn chỉnh nhãn và vùng văn bản?


83

Mã của tôi kết thúc như sau:

             XXXXX
             XXXXX
Description: XXXXX

Tôi muốn:

             XXXXX
Description: XXXXX
             XXXXX

"Mô tả" đôi khi kéo dài nhiều dòng.

Mã:

<p class="DataForm">
    <label>Blah blah blah Description:</label>
    <asp:TextBox ID="txtBlahblahblahDescription"
                 runat="server"
                 TextMode="MultiLine"
                 Rows="8"
                 Columns="50"></asp:TextBox><br/>
</p>

CSS:

.DataForm {
}
.DataForm label {
    display: inline-block;
    font-size: small;
    margin-left: 5px;
    width: 5%;
    min-width: 60px;
}
.DataForm input {
    margin-right: 9px;
    display: inline-block;
    width: 21%;
    min-width: 30px;
}

Bạn có muốn nhãn Mô tả ở giữa không?
Peter Stuifzand

3
Bạn đang sử dụng các bảng hay nó là nội tuyến, bạn có làm nổi nhãn bên trái, v.v. không? Bạn có thể đăng HTML và CSS của mình để chúng tôi biết mã của bạn trông như thế nào không? Thật khó để đề xuất các kiểu và bố cục có thể không phù hợp với mã của bạn.
Andy E

Đúng, nhãn mô tả cần được căn giữa theo chiều dọc nếu có thể. . . . Tôi sẽ đính kèm mã của mình
NibblyPig

Câu trả lời:


110

Bạn cần đặt cả hai vào một số phần tử vùng chứa và sau đó áp dụng căn chỉnh trên đó.

Ví dụ:

.formfield * {
  vertical-align: middle;
}
<p class="formfield">
  <label for="textarea">Label for textarea</label>
  <textarea id="textarea" rows="5">Textarea</textarea>
</p>


Hmm, tôi đã cố gắng đặt đó là một phong cách nội tuyến trên thẻ p của tôi, nhưng nó didnt làm việc
NibblyPig

1
Nó sẽ không được kế thừa? Tôi đã thử nó dù sao, nhưng nó đã không làm việc :(
NibblyPig

1
Xấu của tôi, nó không làm việc với DataForm *, mặc dù cách thức mà nó tập trung nó là loại kỳ lạ, nó hoạt động, do đó, nhờ
NibblyPig

10
Một giải pháp tốt hơn sẽ chỉ là đưa vertical-align: middle;vào từng quy tắc của bạn ở trên, .DataForm label.DataForm textarea. Sử dụng công cụ chọn * đôi khi có thể có tác dụng phụ.
DisgruntledGoat

2
Bạn có thể đúng, nhưng nếu một người muốn vertical-align: middleđiều gì đó, người ta thường muốn áp dụng nó trên toàn bộ khối.
BalusC

19

Chỉ cần bọc vùng văn bản bằng nhãn và đặt kiểu vùng văn bản thành

vertical-align: middle;

Đây là một số phép thuật cho tất cả các textareas trên trang :)

<style>
    label textarea{
        vertical-align: middle;
    }
</style>

<label>Blah blah blah Description: <textarea>dura bura</textarea></label>

2
Điều này đã hoạt động hoàn hảo. Câu trả lời đã chọn không. Cảm ơn!
Eaglei 22

4
  1. Đặt heightnhãn của bạn giống heightvới hộp văn bản nhiều dòng.
  2. Thêm cssClass .alignTop{vertical-align: middle;}cho điều khiển nhãn.

    <p>
        <asp:Label ID="DescriptionLabel" runat="server" Text="Description: " Width="70px" Height="200px" CssClass="alignTop"></asp:Label>
        <asp:Textbox id="DescriptionTextbox" runat="server" Width="400px" Height="200px" TextMode="MultiLine"></asp:Textbox>
        <asp:RequiredFieldValidator id="DescriptionRequiredFieldValidator" runat="server" ForeColor="Red"
        ControlToValidate="DescriptionTextbox" ErrorMessage="Description is a required field.">    
    </asp:RequiredFieldValidator>
    


3

Sử dụng vertical-align:middletrong CSS của bạn.

<table>
    <tr>
       <td style="vertical-align:middle">Description:</td>
       <td><textarea></textarea></td>
    </tr>
</table>

Tôi đang tìm kiếm một giải pháp thanh lịch không cần bàn nếu có thể.
NibblyPig

4
Bạn nên viết những thứ như vậy trong câu hỏi của bạn.
Peter Stuifzand

11
Ngày nay ai đang sử dụng bảng cho biểu mẫu?
BalusC

6
Xin lỗi, tôi nghĩ đó là điều hiển nhiên :(
NibblyPig 3/12/09

4
Các bảng hoàn toàn hợp lệ cho các biểu mẫu. Đó dữ liệu dạng bảng, mặc dù chỉ có một hàng (hoặc cột) dữ liệu.
DisgruntledGoat

3

Căn chỉnh hộp vùng văn bản với nhãn, không phải nhãn với vùng văn bản,

label {
    width: 180px;
    display: inline-block;
}

textarea{
    vertical-align: middle;
}

<label for="myfield">Label text</label><textarea id="myfield" rows="5" cols="30"></textarea>


0

Hãy thử đặt chiều cao trên các phần tử td của bạn.

vertical-align: middle; 

có nghĩa là phần tử mà kiểu được áp dụng sẽ được căn chỉnh trong phần tử mẹ. Chiều cao của td có thể chỉ cao bằng văn bản bên trong.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.