我使用flexbox layout风格的过去任务列表。任务描述和时间总是变化很大。flexbox |弹出的项目被推出包含div(屏幕外)
一切看起来都很棒,直到输入任务描述足够长的时间才能包装到第二行,然后'时间'项目(在屏幕的最右侧)稍微向右 - 离开屏幕 - 隐藏了一些内容。
您可以在下方看到完美的简短说明,但是长的推子会将'00:08'推离屏幕,任务描述也向左移动!
这里的a fiddle针对码(其下面是按照#1的规则)。 如果您调整包含结果的窗格的大小,'00:08'不会脱离页面,但它确实移动得太靠右了。
上述屏幕截图在缩小窗口宽度之前将Chrome或Safari(我使用的两个浏览器)放在第二行描述中。
如果可能,我希望所有内容都按第一条(简短说明)行显示!而且还要理解为什么这是现在的行为。
P.S.我曾尝试使用浮动,并使用表格显示布局,但这两种技术都造成了相当多的错误,主要是因为可变长度的内容(所以请不要将这些作为替代方法:))。
ul {
margin:0;
padding: 0;
}
#tasklist{
width: 100%;
}
.task-one-line{
display: flex;
flex-direction:row;
flex-wrap: nowrap;
justify-content: space-between;
align-item: baseline; /*flex-end*/
display: -webkit-flex;
-webkit-flex-direction:row;
-webkit-flex-wrap: nowrap;
-webkit-justify-content: space-between;
-webkit-align-item: baseline;
border-bottom: 1px solid #d3d3d3;
width: 100%;
}
.task-one-line i{
width:1.5em;
padding: 0.5em 0.3em 0.5em 0.3em;
/*border: 1px solid green;*/
}
span.task-desc{
flex-grow: 5;
-webkit-flex-grow: 5;
text-align:left;
padding: 0.3em 0.4em 0.3em 0.4em;
/*border: 1px solid red;*/
}
span.task-time{
flex-grow: 1;
-webkit-flex-grow: 1;
flex-basis:4em;
-webkit-flex-basis:4em;
text-align:right;
padding: 0.3em 0.5em 0.3em 0.5em;
/*border: 1px solid blue ;*/
}
<ul id="tasklist">
<li class="task-one-line">
<i class="fa fa-check-circle-o"></i>
<span class="task-desc">And a short one</span>
<span class="task-time">00:01</span>
</li>
<li class="task-one-line">
<i class="fa fa-check-circle-o"></i>
<span class="task-desc">Here's a super long long long long long long description that might wrap onto another line</span>
<span class="task-time">00:08</span>
</li>
</ul>
感谢这个@Adam - 这工作,因为计时器现在显示在屏幕上,但是它将文本备份到图标中,导致了一个丑陋的格式问题,其中b Ÿ文本从一行到另一行没有对齐:http://imgur.com/VtsaujO你知道一种防止这种情况的方法吗? (请注意,时间必须灵活,因为它可以达到9个字符,但只有5个!)。感谢您一直以来的帮助。 – iteles
你有链接到你的代码?这行:'.task-one-line i.fa {flex:0 0 auto; }'应该阻止这个特定问题的发生。在Safari中,您需要为flexbox代码添加前缀,以便将“display:flexbox”变为“display:-webkit-flexbox”,并将“flex:0 0 auto”变为“-webkit-flex:0 0 auto”(依此类推)。 – Adam
万岁!它会出现我的缓存没有正确清除,所以我清除了3次,现在似乎按预期工作。太棒了,非常感谢你的帮助。 – iteles