菜雞歸納學習個CSS基礎小案例,順便練習寫文字。
很多時候我們會遇到需要將文字兩端對齊的情況,可能是這樣:
也可能是這樣:
遇到這類情況,我們很可能為了整齊美觀,需要將這些字數不同的詞語等寬對齊。為了,我總結歸納了集中方法給大家參考。
效果如下
1、無腦的在文字中間插入轉義字元來擠出空白間距
<ul>
<li>姓  名:<input type="text"></li>
<li>畢業院校:<input type="text"></li>
<li>工作單位:<input type="text"></li>
<li>所 在 地:<input type="text"></li>
</ul>複製程式碼
- &160#;不斷行的空白(1個字元寬度)
-  &8194#;半個空白(1個字元寬度)
-  &8195#;一個空白(2個字元寬度)
-  &8201#;窄空白(小於1個字元寬度)
平時一般用的是 在中文中更適合用 
個人認為這種做法在兩三個詞語時使用還是可行的,簡單粗暴。
2、通過text-align: justify;
來達到兩端對齊
justify這個屬性就是實現兩端對齊文字效果的意思。看似簡單,但是W3C上給出了一大段的詳細說明,介紹存在和使用時候的一些問題。如圖:
圖片出處連結:www.w3school.com.cn/cssref/pr_t…
看的心慌慌,但其實很多情景還是可以使用的。
但也別以為僅僅把對齊方式改為justify就可以了,事實上還不行。因為text-align:justify
不處理塊內的最後一行文字(包括塊內僅有一行文字的情況,這時既是第一行也是最後一行),所以,我們可以用偽類來解決。當然,在後面加一個行內空標籤來代替最後一行,這種實際上也能解決,但是因為這樣違反了結構表現分離的原則,所以我覺得不要醬紫做哈。
<style> ul li { list-style: none; } a { text-decoration:none; color: black; font-size: 14px; } span { margin: 0 10px; } .hotsearch dd { float: left; line-height: 24px; margin-right: 30px; overflow: hidden; text-align: justify; width: 5em; } .hotsearch dd:after { content: " "; display: inline-block; width: 90px; } .test1 { text-align:justify; width: 90px; display: inline-block; } .test1:after { content: " "; display: inline-block; width: 90px; } .box { width: 235px; } .box input { float: right; }</style>
<body> <ul class="box"> <li><div class="test1">姓名</div><input type="text"></li> <li><div class="test1">畢業院校</div><input type="text"></li> <li><div class="test1">工作單位</div><input type="text"></li> <li><div class="test1">所在地</div><input type="text"></li> </ul> <div class="main"> <span style="font-size:12px;"> <dl class="hotsearch" style="width:300px;"> <dt>熱門搜尋</dt> <dd><a href="#" target="_blank" ref="nav" class="w3">荷花</a></dd> <dd><a href="#" target="_blank" ref="nav" class="w4">向日葵</a></dd> <dd><a href="#" target="_blank" ref="nav" class="w3">鬱金香</a></dd> <dd><a href="#" target="_blank" ref="nav" class="w2">鹿角海棠</a></dd> <dd><a href="#" target="_blank" ref="nav" class="w2">六月雪</a></dd> <dd><a href="#" target="_blank" ref="nav" class="w3">大花蕙蘭</a></dd> </dl> </span> </div></body>
複製程式碼
需要注意的是demo中test1
類名下的所有元素都會平分空間來兩邊對齊,所有如果冒號、輸入框用label修飾之類的話,就不能完美兩邊對齊排版。
3、通過letter-spacing
來達到兩端對齊
letter-spacing
屬性定義了在文字字元框之間插入多少空間。利用這點就能用來實現兩端對齊。
<style> .f2 { letter-spacing: 2em; margin-right: -1em; } .f3 { letter-spacing: 0.5em; margin-right: 0.5em; } .f4 { margin-right: 1em; }</style>
<body> <ul class="box"> <li><label class="f2">姓名</label><input type="text"></li> <li><label class="f4">畢業院校</label><input type="text"></li> <li><label class="f4">工作單位</label><input type="text"></li> <li><label class="f3">所在地</label><input type="text"></li> </ul></body>
複製程式碼
上述程式碼,f4其實是可以省略的,因為我這裡調整了下輸入框和旁邊文字的間距所以寫出了。因為letter-spacing
的值是通過計算得到的,所以通常情況下字元最多的類是不用給letter-spacing
的。
letter-spacing
的計算公式為:設y個字兩端對齊,x為最大字數
(x-y)/ (y-1)
margin-right
則是用來控制與右邊元素的邊距的。
綜上,本菜雞會的解決辦法如上。若有錯誤或問題歡迎交流,有其他方法也可交流。第一次寫文章,還望有緣看到的各位看官海涵???