儿童DIV的对齐和高度

时间:2012-12-04 09:38:13

标签: html css html5 css3

Hy那里,

我正在遇到一些HTML和&我的CSS。

我在父DIV(.group)中有多个DIV(.item)。这些儿童DIV的高度取决于他们的动态内容。

包含静态内容的工作示例: http://jsfiddle.net/YfDWL/

HTML:

<div class="group">
    <div class="item">
        <div class="item-title">item 1</div>
        <div class="item-tag">tag1</div>
    </div>
    <div class="item">
        <div class="item-title">item 2</div>
        <div class="item-tag">tag1</div>
        <div class="item-tag">tag2</div>
        <div class="item-tag">tag3</div>
        <div class="item-tag">tag4</div>
    </div>
    <div class="item">
        <div class="item-title">item 3</div>
        <div class="item-tag">tag1</div>
        <div class="item-tag">tag2</div>
    </div>
</div>
<div class="group">
    <div class="item">
        <div class="item-title">item 1</div>
        <div class="item-tag">tag1</div>
        <div class="item-tag">tag2</div>
        <div class="item-tag">tag3</div>
        <div class="item-tag">tag4</div>
    </div>
    <div class="item">
        <div class="item-title">item 2</div>
        <div class="item-tag">tag1</div>
        <div class="item-tag">tag2</div>
    </div>
    <div class="item">
        <div class="item-title">item 3</div>
        <div class="item-tag">tag1</div>
    </div>
</div>

CSS:

.group {
    margin: 30px;
    padding: 10px;
    border: 1px dashed black;
}

.item {
    display: inline-block;
    border: 1px solid black;
    width: 100px;
    margin-right: 10px;
}

.item-title {
    text-align: center;
    font-style: italic;
    font-weight: bold;
}

我想要实现的是,组内的所有项目DIV应该具有相同的高度,并且应该在顶部对齐。这给我带来了一些问题:

  1. 对齐
    如何将所有项目DIV对齐在组的顶部?现在它们在底部对齐,如示例所示...

  2. 高度
    正如我在其他问题中看到的那样,似乎无法用纯HTML / CSS来完成。因此我决定使用一个带有JQuery的JS来纠正元素的高度 工作示例: http://jsfiddle.net/YfDWL/1/

  3. JavaScript的:

    $(window).load(function() {
        "use strict";
    
        var maxHeight;
    
        // Iterate through every group
        $('.group').each(function(idx, group) {
            maxHeight = 0;
    
            // Iterate through every item of the group and save the max height
            $(group).find('.item').each(function(idx, item) {
                var height = $(item).height();
    
                if (!maxHeight || (height > maxHeight)) {
                    maxHeight = height;
                }
            });
    
            // Set the max height to all items inside the group
            if (maxHeight) {
                $(group).find('.item').css('height', maxHeight);
            }
        });
    });
    

    正如你所看到的,这工作正常,但对齐仍然是一个问题......

    我现在想知道的是物品的对齐方式以及如何将所有物品放在小组的顶部?

    另外,我很乐意在这里提出建议,如果“同样高度”的问题可以更加强烈地解决,也许根本没有JS ......

    谢谢&amp;最好的问候,
    MIK

2 个答案:

答案 0 :(得分:2)

添加vertical-align:top

.item {
    display: inline-block;
    border: 1px solid black;
    width: 100px;
    margin-right: 10px;
    vertical-align:top
}

<强> DEMO


你可以参考这个example来了解如何在不使用js的情况下获得相同的高度。

<强> DEMO 2

http://matthewjamestaylor.com/blog/equal-height-columns-cross-browser-css-no-hacks

答案 1 :(得分:1)

在您的vertical-align:top;课程

上添加 .item
.item{
vertical-align:top;
}

Demo

Demo two