CSS 레이블 너비가 적용되지 않음


112

레이블과 입력 필드를 정렬하기 위해 스타일을 지정하고 싶은 일반 양식이 있습니다. 어떤 이유로 레이블 선택기에 너비를 지정해도 아무 일도 일어나지 않습니다.

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

산출:

여기에 이미지 설명 입력

jsFiddle

내가 뭘 잘못하고 있죠?


그건 그렇고, <p>태그로 양식 섹션을 감싸는 것이 정말 좋은 생각입니까?
JGallardo

답변:


215

수행 display: inline-block:

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

http://jsfiddle.net/aqMN4/


1
인라인 블록을 고수하십시오. IE7, IE8, IE9, FF에서 테스트
Davis

1
<p>에 각 요소를 배치하는 해결 방법이 있습니까?
Colin D

1
@ColinD <p> 태그가 아닌 div를 사용하는 것이 좋습니다.
데이비스

36

사용하다 display: inline-block;

설명:

label그것을 할 필요가로는 큰 같습니다 의미, 인라인 요소입니다.

display속성을 적용 하려면 속성을 inline-block또는 block로 설정합니다 width.

예:

#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
감사! 인라인 블록이 필요했습니다. 블록은 이상하게 보입니다.
TheOne

2
인라인 블록의 지원은 IE8 이하의 IE에서 대략적이라는 점에 유의하십시오. 요즘에는 너무 많은 문제가 아니지만 염두에 두어야 할 사항입니다. (출처 quirksmode.org/css/display.html )
n00dle

1
@PandaWood 죄송합니다.이 게시물에 댓글을 단 지 거의 2 년이 지났습니다. 그러나 다른 독자들이이 게시물의 작성자가 제공 한 설명에 오해되지 않도록 귀하의 의견에 회신하고 있습니다. 후자는 label요소가 width인라인 요소이기 때문에 속성을 존중하지 않는다고 추론했습니다 . input기본적으로 요소도 인라인 요소 라는 점을 지적하고 싶습니다 . 그러나 label요소 와 달리 width 속성을 사용하여 너비를 변경할 수 있습니다 . 따라서 저자의 추론은 정확하지 않습니다.
ghd

6

나는 라벨이 인라인이라고 믿기 때문에 너비를 취하지 않습니다. "display : block"을 사용하고 거기에서 가보자.


6

먼저 블록으로 만든 다음 왼쪽으로 떠서 다음 블록을 새 줄로 밀어 넣는 것을 중지하십시오.

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


4

label의 기본 display모드는 inline입니다. 즉, 콘텐츠에 맞게 자동으로 크기가 조정됩니다. 너비를 설정하려면 display:block올바르게 배치 되도록 설정 한 다음 약간의 faffing을 수행해야합니다 (아마도 포함 float).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.