为什么嵌套的灵活框无法包含其内容?

时间:2012-05-08 01:54:23

标签: html css css3 webkit flexbox

早上好,

当我将display: -webkit-box的元素嵌套在另一个元素display: -webkit-box中时,它无法正确地将其元素包含在一个灵活的框中。请参阅下图中删除按钮背后的文字。

enter image description here

LI HTML:

<li>
    <div class="reference">
        <div class="number">1.</div>
        Lawson, B. Sharp, R. (2011). <em>Introducing Html5.</em> New Riders Pub
    </div>
    <div class="edit">
        <button class="delete">Delete</button>
    </div>
</li>

LI CSS(省略美学):

li {
    display: -webkit-box;
    -webkit-box-align: center; /* Vertically center elements within LI */
}
.reference {
    -webkit-box-flex: 1; /* Expand to fill space */
    display: -webkit-box;
}
.number {
    width: 3ex;
    padding: 0 5px 0 0;
}
.edit {
    /* I have tried setting a width and -webkit-box-flex: 0,
    but this does not solve the problem. */
}

当视口宽度改变时,.reference必须保持灵活性。

问题可以通过删除.reference的display: -webkit-box;来解决,但这意味着我不能在.reference中的元素上使用灵活的盒子模型,我需要保留项目编号(1,2。等等。在他们自己的专栏中。

非常感谢任何帮助。亲切的问候。

1 个答案:

答案 0 :(得分:0)

您可以使用display: table和类似内容来实现您想要的而不是-webkit-box,您只需要进行一些小的标记更改:

<li>
    <div class="reference">
        <div class="number">1.</div>
        <div class="title">Lawson, B. Sharp, R. (2011). <em>Introducing Html5.</em> New Riders Pub</div>
    </div>
    <div class="edit">
        <button class="delete">Delete</button>
    </div>
</li>

CSS:

ul {
    display: table;
}

li {
    display: table-row;
}

.number {
    width: 5%;
    display: table-cell;
}

.title {
    display: table-cell;
    width: 85%;
}

.edit {
    display: table-cell;
    width: 10%;
}

显然,您需要调整width属性,但这应该有效并且具有更好的跨浏览器支持。