我使用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