css--實現一個文字少時居中,文字換行時居左的樣式


前言

  最近群里的小伙伴去面試,遇到這樣一個問題,面試官問:"用 css 對一行文字進行布局,當文字不夠換行的時候,這行文字要居中顯示,當文字出現換行的時候,這行文字要靠左顯示。",遇到這樣的需求一下束手無策,后來查下資料,哦,原來這樣,這里總結一下實現的具體方法。

正文

  1.需求分析與使用場景

  具體需求分析:未知文字的長度的時候,當文字的長度小於盒子的寬度的時候,也就是一行可以放的下的時候,文字居中,當文字長度大於盒子寬度的時候,文字要實現自動換行,成為多行文字,此時文字要求左對齊。其實這樣的需求在實際開發中也經常遇到,如下:

  2.實現方法

  下面針對文本框部分進行實現,不再添加圖片樣式。

  (1)通過行內樣式實現

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        .wrap {
            margin-top: 10px;
            width: 200px;
            height: 100px;
            padding: 5px;
            background-color: skyblue;
            text-align: center;
        }
        .content {
            display: inline-block;
            text-align: left;
            word-break: break-all;
        }

    </style>
</head>
<body>
    <div class="wrap">
        <span id="content" class="content">鴻星爾克</span>
    </div>
    <div class="wrap">
        <span id="content" class="content">鴻星爾克板鞋2021夏季新款紅星男鞋防滑耐磨休閑時尚經典塗鴉滑板鞋低幫旅游鞋</span>
    </div>
    <div class="wrap">
        <span id="content" class="content">鴻星爾克ERKE 男防滑耐磨休閑跑步鞋運動鞋</span>
    </div>
</body>
</html>

  實現效果如下:

  上面的代碼首先在外層包含框wrap中設置 text-algin:center;使得子元素能相對於父元素居中,然后子元素設置 display:inlne-block; 使得行內元素轉化為行內塊元素,此時可以給行內塊設置 text-algin:left;使得文字在容器中放不下的時候出現換行居左。

  (2)通過table表格實現

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        .wrap {
            margin-top: 10px;
            width: 200px;
            height: 100px;
            padding: 5px;
            background-color: skyblue;
        }
        .content {
            display: table;
            margin: 0 auto;
            word-break: break-all;
        }

    </style>
</head>
<body>
    <div class="wrap">
        <span id="content" class="content">鴻星爾克</span>
    </div>
    <div class="wrap">
        <span id="content" class="content">鴻星爾克板鞋2021夏季新款紅星男鞋防滑耐磨休閑時尚經典塗鴉滑板鞋低幫旅游鞋</span>
    </div>
    <div class="wrap">
        <span id="content" class="content">鴻星爾克ERKE 男防滑耐磨休閑跑步鞋運動鞋</span>
    </div>
</body>
</html>

  實現效果如上,這段代碼是通過了給子元素設置了display:table;

  (3)利用圖層覆蓋解決

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        div,span{
            padding: 0;
        }
        .wrap {
            margin-top: 10px;
            width: 200px;
            height: 100px;
            padding: 0 5px;
            background-color: skyblue;
            position: relative;
        }
        .content {
        }
        .hide{
            position: absolute;
            text-align: center;
            background: skyblue;
            overflow: hidden;
            height: 20px;
            left: 0;
            top: 0;
            width: 100%;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <span  class="content">鴻星爾克</span>
        <span  class="hide">鴻星爾克</span>
    </div>
    <div class="wrap">
        <span  class="content">鴻星爾克板鞋2021夏季新款紅星男鞋防滑耐磨休閑時尚經典塗鴉滑板鞋低幫旅游鞋</span>

        <span  class="hide">鴻星爾克板鞋2021夏季新款紅星男鞋防滑耐磨休閑時尚經典塗鴉滑板鞋低幫旅游鞋</span>
    </div>
    <div class="wrap">
        <span  class="content">鴻星爾克ERKE 男防滑耐磨休閑跑步鞋運動鞋</span>

        <span  class="hide">鴻星爾克ERKE 男防滑耐磨休閑跑步鞋運動鞋</span>
    </div>
</body>
</html>

  效果如下:

  上面這段代碼應該比較容易理解,但實現起來復雜,主要是重復寫兩次一樣的文字,都屬於行內元素,給hide的元素設置高度,當高度不夠的時候設置隱藏溢出部分,並設置絕對定位,用於顯示第一行數據,實現第一行居中效果,然后剩下行的顯示content的中的效果,最終合成想要的效果圖。這樣實現起來復雜但是思路最清晰。

寫在最后

   以上就是本文的全部內容,希望給讀者帶來些許的幫助和進步,方便的話點個關注,小白的成長之路會持續更新一些工作中常見的問題和技術點。


免責聲明!

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



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