Căn chỉnh DIV khối nội tuyến vào đầu phần tử container


198

Khi hai inline-block divs có chiều cao khác nhau, tại sao hai cái ngắn hơn không thẳng hàng với đỉnh của container? ( DEMO ):

.container { 
    border: 1px black solid;
    width: 320px;
    height: 120px;    
}

.small {
    display: inline-block;
    width: 40%;
    height: 30%;
    border: 1px black solid;
    background: aliceblue;    
}

.big {
    display: inline-block;
    border: 1px black solid;
    width: 40%;
    height: 50%;
    background: beige;    
}
<div class="container">
    <div class="small"></div>
    <div class="big"></div>
</div>

Làm thế nào tôi có thể sắp xếp nhỏ divở đầu container của nó?


hoặc thả nổi chúng như vậy: jsfiddle.net/RHM5L/12
AO_


1
áp dụng dọc-align: top; cho lớp .small
Deepu Sasidharan

1
tôi không muốn sử dụng float. cảm ơn @ Mr.Alien nó hoạt động ngay bây giờ :)
Youssef

Câu trả lời:


346

Bởi vì vertical-alignđược đặt ở đường cơ sở như mặc định.

Sử dụng vertical-align:topthay thế:

.small{
    display: inline-block;
    width: 40%;
    height: 30%;
    border: 1px black solid;
    background: aliceblue;   
    vertical-align:top;
}

http://jsfiddle.net/Lighty_46/RHM5L/9/

Hoặc như @ f00644 cho biết bạn cũng có thể áp dụng floatcho các phần tử con.


Nếu tôi áp dụng phao tôi sẽ gặp vấn đề về chiều cao nếu container chỉ có phao con như trong trường hợp của tôi. Hãy xem bài viết
Youssef

1
Bất cứ ý tưởng tại sao baselinelà mặc định? Tôi chắc chắn có một lý do chính đáng, nhưng đối với một người không mong đợi thì nó có vẻ kỳ lạ. Bạn kết thúc với một hiệu ứng đường chân trời Manhattan.
Sridhar Sarnobat

Căn chỉnh dọc được sử dụng để căn chỉnh phông chữ, vì phông chữ có đường cơ sở, điều hợp lý là mặc định sẽ phân giải thành đường cơ sở. Trong những dịp khác như thế này, bạn phải ghi đè lên nó.
CEED

25

Bạn cần thêm một vertical-aligntài sản cho hai div con của bạn.

Nếu .smallluôn luôn ngắn hơn, bạn chỉ cần áp dụng tài sản cho .small. Tuy nhiên, nếu một trong hai có thể cao nhất thì bạn nên áp dụng tài sản cho cả hai .small.big.

.container{ 
    border: 1px black solid;
    width: 320px;
    height: 120px;    
}

.small{
    display: inline-block;
    width: 40%;
    height: 30%;
    border: 1px black solid;
    background: aliceblue; 
    vertical-align: top;   
}

.big {
    display: inline-block;
    border: 1px black solid;
    width: 40%;
    height: 50%;
    background: beige; 
    vertical-align: top;   
}

Căn chỉnh dọc ảnh hưởng đến hộp nội tuyến hoặc ô bảng và có một số lượng lớn các giá trị khác nhau cho thuộc tính này. Vui lòng xem https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align để biết thêm chi tiết.


-1
<style type="text/css">
        div {
  text-align: center;
         }

         .img1{
            width: 150px;
            height: 150px;
            border-radius: 50%;
         }

         span{
            display: block;
         }
    </style>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type='password' class='secondInput mt-4 mr-1' placeholder="Password">
  <span class='dif'></span>
  <br>
  <button>ADD</button>
</div>

<script type="text/javascript">

$('button').click(function() {
  $('.dif').html("<img/>");

})

Tôi nghĩ rằng chỉ cần thay đổi các thuộc tính hiển thị mặc định của một khoảng từ nội tuyến sang khối sẽ thực hiện thủ thuật.
Holyghostgym

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.