其實這種需求還是蠻常見的,主要用於產品列表頁面,用於產品圖片下面,顯示產品的名稱。
想要實現的效果為:
未知文字長度,當文字長度小於盒子寬度,也就是一行時,文字居中。
當文字長度大於盒子的寬度,會自動換行,成為多行文字,此時文字左對齊。
1、利用行內元素:
我首先想到了這個思路,思路如下:
讓P居中,P中的文字左對齊:(P的父級text-align:center; P自身text-align:left;)
P的寬度根據文字的寬度伸縮,當文字為一行時,則P的寬度小於LI的寬度,居中;則看上去文字是局中的。
當大於一行時,P的寬度和LI的寬度是一致的,文字就居左了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文字測試</title>
<style type="text/css">
*{margin: 0;padding: 0;list-style: none;font-weight: normal;font-style: normal;} body {font-size:16px;font-family:tahoma,Helvetica, Arial,"\5FAE\8F6F\96C5\9ED1";line-height: 1.5;} ul {width: 500px; margin: 100px auto; overflow: hidden;} /*代碼開始*/ li { /* 這些都不重要 */
float: left;width: 150px;background: #fafafa;height: 50px;margin-right: 10px; /* 重點 */ text-align: center; } /* 重點 */ display: inline-block使P的寬度根據文字的寬度伸縮 p { display: inline-block; text-align: left; } </style>
</head>
<body>
<ul>
<li><p>一行文字</p></li>
<li><p>這里是比較長的兩行文字</p></li>
</ul>
</body>
</html>
效果:
2、利用萬能的表格
HTML代碼和解決方法一是一致的。主要是利用了table的牛逼特性:未知寬度的table 也是可以左右對齊的!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文字測試</title>
<style type="text/css">
*{margin: 0;padding: 0;list-style: none;font-weight: normal;font-style: normal;} body {font-size:16px;font-family:tahoma,Helvetica, Arial,"\5FAE\8F6F\96C5\9ED1";line-height: 1.5;} ul {width: 500px; margin: 100px auto; overflow: hidden;} /*代碼開始*/ li { /* 這些都不重要 */
float: left;width: 150px;background: #fafafa;height: 50px;margin-right: 10px; } /* 重點 */ p { display: table; margin: 0 auto; } </style>
</head>
<body>
<ul>
<li><p>一行文字</p></li>
<li><p>這里是比較長的兩行文字</p></li>
</ul>
</body>
</html>