css 屬性

  • white-space:用于控制元素內(nèi)部inline | inline-block | 文本空白字符(例如空格、制表符和換行符)的處理方式。
    自動(dòng)換行:text-wrap: nowrap | wrap
    空白字符:空格、Tab、換行等
    該屬性取值主要有:
    pre: 文本空白換行會(huì)被保留, 按照換行符換行,不會(huì)自動(dòng)換行(text-wrap:nowrap);
    nowrap: 文本空白會(huì)合并, 換行符不換行, 不會(huì)自動(dòng)換行;
    pre-wrap:文本空白換行會(huì)被保留 按照換行符換行,會(huì)自動(dòng)換行(text-wrap:wrap);

  • overflow:用于控制元素內(nèi)容溢出時(shí)的處理方式,無論子元素是否是絕對(duì)定位overflow都能控制內(nèi)容溢出時(shí)的表現(xiàn)。
    該屬性取值主要有:
    visible: 內(nèi)容溢出容器時(shí)可見;
    hidden: 內(nèi)容溢出容器時(shí)被裁剪,隱藏;
    auto: 內(nèi)容溢出容器時(shí),添加滾動(dòng)條以允許用戶滾動(dòng)查看溢出內(nèi)容。
    當(dāng)overflow:auto且子元素超過父元素高度時(shí),父元素滾動(dòng),子元素會(huì)相應(yīng)的滾動(dòng),即便子元素是絕對(duì)定位也會(huì)跟著一起滾動(dòng)。如果想子元素固定在父元素底部且不隨父元素滾動(dòng)??梢詫⒆釉匾瞥龈冈?,放到其它位置,以便不受父元素滾動(dòng)的影響。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .container {
        position: relative;
      }
      #root {
        height: 200px;
        background: #333;
        overflow: visible;
      }
      .btn {
        height: 400px;
        background: #999;
        margin: 0 24px;
      }
      .abs {
        position: absolute;
        bottom: 0;
        left: 24px;
        right: 24px;
        height: 24px;
        background: #ccc;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div id="root">
        <div class="btn">btn</div>
      </div>
      <div class="abs">abs</div>
    </div>
  </body>
</html>

scrollHeight: 等于該元素在不使用滾動(dòng)條的情況下為了適應(yīng)視口中所用內(nèi)容所需的最小高度。包括元素的 padding,但不包括元素的 border 和 margin。
滾動(dòng)到底部:element.scrollTo({ top: root.scrollHeight, behavior: "smooth" });

父元素空間不足時(shí),table 會(huì)默認(rèn)收縮以適應(yīng)父元素,但收縮至最小時(shí)仍會(huì)溢出。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Table Overflow Example</title>
    <style>
      .parent-container {
        width: 500px;
        overflow: auto;
        border: 1px solid #ccc;
      }

      table {
        border-collapse: collapse;
      }

      th,
      td {
        padding: 8px;
        text-align: left;
        border: 1px solid #dddddd;
      }

      th {
        background-color: #f2f2f2;
      }
    </style>
  </head>
  <body>
    <div class="parent-container">
      <table>
        <thead>
          <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Age</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>1</td>
            <td>John Doe</td>
            <td>25</td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>

塊級(jí)元素,當(dāng)沒有設(shè)置寬度時(shí),寬度由父元素確定;行內(nèi)塊元素,當(dāng)沒有設(shè)置寬度時(shí),寬度可以無限寬。

 <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .container {
        padding: 10px;
        overflow: hidden;
        background: #666;
      }
      .c {
        display: inline-block;
        background: #999;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="c">1111111111112222222222333333333</div>
    </div>
  </body>
  • box-sizing:用于確定元素總寬度和高度的計(jì)算方式。
    該屬性取值主要有:
    border-box:寬度和高度屬性包括內(nèi)容、padding、border;
    content-box:這是默認(rèn)值,寬度和高度屬性僅包括內(nèi)容區(qū)域。
  • float: 主要用于圖文混排,文字會(huì)圍繞圖片。float 屬性指定的元素在容器的左側(cè)或右側(cè)放置,元素從文檔流中移除,但仍保持部分流動(dòng)性。
<div>
      <img src="./public/logo192.png" style="float: right; height: 20px;" />this
      is text... this is text... this is text...this is text...
    </div>
  • display:'inline': 內(nèi)聯(lián)元素的子元素是塊級(jí)元素,子元素的寬如果是百分比,則是基于非內(nèi)聯(lián)的祖先元素計(jì)算。
<style>
      .c {
        width: 200px;
      }
      .s2 {
        display: inline-block;
        width: 100%;
        background: #000;
      }
    </style>
<div class="c">
      <span class="s1">
        <span class="s2">123</span>
      </span>
    </div>
<!-- s2  基于c計(jì)算寬帶-->
  • 邏輯屬性:margin-inline-end等同于margin-right,表示行內(nèi)塊結(jié)束端外邊距。

典型場景

  • 元素不足以容納文本時(shí)截?cái)辔谋静@示省略號(hào)
      <div className="truncate-text">
      不加樣式自動(dòng)換行不加樣式自動(dòng)換行Linedddddddddddddddddddddddddddused
      </div>

.truncate-text {
  white-space: nowrap; /* 防止文本換行 */
  overflow: hidden;   /* 隱藏溢出的部分 */
  text-overflow: ellipsis; /* 使用省略號(hào)來表示截?cái)?*/
  width: 100px; /* 設(shè)置元素寬度,當(dāng)文本溢出時(shí)會(huì)被截?cái)?*/
}
  • antd 中的 Select 組件使用 flex布局會(huì)撐大空間。
    flex布局中使用flex屬性指定子元素的相對(duì)尺寸,當(dāng)空間不足時(shí)會(huì)溢出,如果指定width屬性即使空間不足也不會(huì)溢出。
<div style={{display:'flex',width:400}}>
  <div style={{width:100,flexShrink:0}}> fdafa</div>
  <div style={{ display: "inline-block", flex: 1,marginLeft:20,width:10 }}>
        <div style={{ display: "flex" }}>
          <span
            style={{
              display: "inline-block",
              overflow: "hidden",
              "white-space": "nowrap",
              "text-overflow": "ellipsis",
              flex: 1,
            }}
          >
           flex布局中使用flex屬性指定子元素的相對(duì)尺寸,當(dāng)空間不足時(shí)會(huì)溢出,如果指定width屬性即使空間不足也不會(huì)溢出。
          </span>
        </div>
      </div>
</div>
  • float屬性的元素,可能會(huì)影響其他元素的寬度。
    <div>
      <div style="background-color: red;">
        <button>btn</button>
        <button style="float: right; height: 40;">btn2</button>
      </div>
      <div>
        <div style="display: flex; flex-direction: column;background: green;">
          123
        </div>
      </div>
    </div>
<!-- element 寬度受 float 元素影響 -->
  • 圖片充滿容器,高不裁剪,左側(cè)不裁剪
// 圖片設(shè)計(jì):寬高比要大些,即寬要長些
    <div style={{ height: '100vh', overflow: 'hidden' }}>
      <img src={bg} style={{ objectFit: 'cover', objectPosition: 'left top' }} />
    </div>
// 計(jì)算過程:`objectFit: 'cover' ` 保持寬高比且只會(huì)裁剪高或?qū)挘绻麍D片的寬高比大于容器的寬高比則高度不會(huì)裁剪,會(huì)基于 objectPosition 裁剪寬度
  • table
    沒有指定table width時(shí),如果父元素足夠大table以自然舒展的方式展示;
    沒有指定table width時(shí),如果父元素小于table width,table先壓縮自身,如無法繼續(xù)壓縮則寬度超出父元素寬度;
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .container {
        width: 100px;
        border: 1px solid red;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <table>
        <tr>
          <th>Name</th>
          <th>Age</th>
          <th>Country</th>
        </tr>
        <tr>
          <td>Harry Depp</td>
          <td>28</td>
          <td>Britain</td>
        </tr>
        <tr>
          <td>John Smith</td>
          <td>35</td>
          <td>USA</td>
        </tr>
        <tr>
          <td>Ram Krishna</td>
          <td>19</td>
          <td>Nepal</td>
        </tr>
      </table>
    </div>
  </body>
</html>

設(shè)置table width在某些場景下是無效的,當(dāng)table壓縮至最小仍然無法容納內(nèi)容時(shí)table實(shí)際width 大于設(shè)置的width。
width:max-content可使table 寬度自適應(yīng),內(nèi)容不會(huì)被壓縮。 使用CSS的max-content值可以確保<table>在不壓縮內(nèi)容的前提下,展示其原有寬度,即使這意味著表格會(huì)超出其容器的寬度。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .table-container {
        width: 100%; /* 容器寬度,可以根據(jù)實(shí)際情況調(diào)整 */
        overflow-x: auto; /* 內(nèi)容超出時(shí)水平方向顯示滾動(dòng)條 */
      }

      table {
        width: max-content; /* 表格寬度根據(jù)內(nèi)容自適應(yīng),不會(huì)被壓縮 */
        border-collapse: collapse;
      }

      th,
      td {
        border: 1px solid #ccc;
        padding: 8px;
      }
    </style>
  </head>
  <body>
    <div class="table-container">
      <table>
        <thead>
          <tr>
            <th>標(biāo)題1</th>
            <th>標(biāo)題2</th>
            <th>標(biāo)題3</th>
            <th>其他</th>
            <!-- 根據(jù)需要添加更多的列 -->
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>內(nèi)容1</td>
            <td>內(nèi)容2</td>
            <td>內(nèi)容3</td>
            <td>更多內(nèi)容</td>
            <!-- 每一行內(nèi)容 -->
          </tr>
          <!-- 根據(jù)需要添加更多的行 -->
        </tbody>
      </table>
    </div>
  </body>
</html>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • CSS樣式規(guī)則 使用HTML時(shí),需要遵從一定的規(guī)范。CSS亦如此,要想熟練地使用CSS對(duì)網(wǎng)頁進(jìn)行修飾,首先需要了解...
    wrootlflvl閱讀 2,055評(píng)論 0 2
  • 一、 布局 1. display 設(shè)置或檢索對(duì)象是否及如何顯示。如果 display 設(shè)置為 none,float...
    zerojs閱讀 314評(píng)論 0 0
  • CSS背景 background-color:red background-image:url('paper.gi...
    專注寒冰三千歲閱讀 393評(píng)論 0 2
  • CSS3 動(dòng)畫屬性(Animation) CSS 背景屬性(Background) CSS 邊框?qū)傩裕˙order...
    艾瑞克曾閱讀 316評(píng)論 0 1
  • 1、-webkit-line-clamp 可以把 塊容器 中的內(nèi)容限制為指定的行數(shù)。并且在超過行數(shù)后,在最后一行顯...
    寒羽鹿閱讀 447評(píng)論 0 0

友情鏈接更多精彩內(nèi)容