純CSS實現文字一行居中,多行左對齊的方法


  其實這種需求還是蠻常見的,主要用於產品列表頁面,用於產品圖片下面,顯示產品的名稱。

  想要實現的效果為:

    未知文字長度,當文字長度小於盒子寬度,也就是一行時,文字居中。
    當文字長度大於盒子的寬度,會自動換行,成為多行文字,此時文字左對齊。

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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM