最近在開發公司項目的時候UI設計稿給了這么一個設計(這里是我手動畫的草圖):

看這效果,第一感覺很簡單,flex布局,左邊寬度自適應,右邊固定寬度。
先回顧下關于文本溢出隱藏的方式:
/* 單行文本 */.text { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; /*當然還需要加寬度width屬來兼容部分瀏覽。*/}/* 多行文本 */.text { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; /* -webkit-line-clamp 顯示行數 */}然后開開心心的開始寫啊寫,代碼如下:
HTML代碼
<div id="flex"> <div id="left"> <span>這是一個按鈕</span> </div> <div id="right"> <span>9.9元</span> </div></div>
CSS樣式
#flex { display: flex;}#left { flex: 1;}#left{ background: red; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}#left span{ background-color: yellow; border-radius: 30px; border: 1px solid blue; display: inline-block;}#right { background: green; width: 200px; margin-left: 10px;}
這效果。。有點無語。。右邊的圓角去哪里了呢,并且在控制臺查看元素,會看到實際span元素的寬度非常的寬,且超過父容器#left,而#left實實在在的還是正常的寬度。
思考了一會,腦子了出現了各種元素的層疊關系,于是給實際文本內容外面,再添加一層div,來控制內容的寬度。
HTML代碼
<div id="flex"> <div id="left"> <div class="box"> <span>我在左邊,自適應布局</span> </div> </div> <div id="right">我在右邊,定寬</div></div>
CSS樣式
#flex { display: flex;}#left { flex: 1; background: red; text-overflow: ellipsis; overflow: hidden; white-space: nowrap;}/* 新增的內容的父容器 */#left .box{ background: red; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; max-width: 100%; border: 1px solid blue; border-radius: 100px; display: inline-block;}#left span{ background-color: yellow; border-radius: 30px;}#right { background: green; width: 200px; margin-left: 10px;}而這里只需把原本設置在span上的寬度,邊框,圓角和背景色樣式,寫到父容器.box上就可以,span里面只負責存放文本內容。
然后就大功告成了。 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答