整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          html開發筆記20-合并單元格-列和行

          、什么是合并單元格?

          一個表格中分為 行 和 列 ,有時候你經常在網頁中看到類似這樣的表格,有時候是合并了列,有時候是合并了行。那么這個是怎么做的?也是通過下面的方法實現的。

          二、怎么合并?

          向單元格添加屬性即可實現,合并 列 和 行的屬性不一樣

          1、合并列的屬性:clospan="2" //要合并幾列數字就是幾

          2、合并行的屬性:rowspan="2" //同理,要合并幾行數字就是幾

          3、合并后的單元格(行或列)必然會自動多出來一個,需要手動刪掉。

          4、重點:合并單元格只和 td 標簽有關系:

          (1)合并列:是左右合并,在左側的 td 標簽中添加 colspan="2" 要合并的 td 的數量。

          (2)合并行:是上下合并,在上面的 td 標簽中添加 rowspan="2" 要合并的td的數量。

          (3)合并完后刪除多余的 td 標簽。

          三、兩個屬性的用法

          1、合并 列 的用法:

          (1)首先確定你要合并的單元格在第幾行第幾列,然后找到它,從他的td標簽中添加屬性。

          例如要合并第4行的,第4和第5列:

          
          <tr>
              <td>第三節</td>
              <td>html</td>
              <td>css</td>
              <td colspan="2">php</td> <!-- 合并 列 的用法-->
              <td>php</td>
            </tr>

          2、合并 行 的用法:

          例如下面:合并第3行和第4行的第1列。

          完整代碼:↓

          考自下列文章

          https://blog.csdn.net/u013558749/article/details/82257168 (element-ui 實現行合并)
          https://www.cnblogs.com/guwufeiyang/p/12850088.html	(合并后樣式的處理)

          目標樣式

          合并后樣式


          來源數據

          • 獲取到后臺返回的數據再經過前端處理
          • 注意 [processId] [dimensionTag] 是參與合并的關鍵字段
          [
              {
                  "processId": "1499255834195238914",
                  "currentProcessInfoId": "1499255834245570561",
                  "flowType": "01",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "01",
                  "dimensionName": "重點-測試",
                  "dimensionTag": "1499255834195238914重點-測試",
                  "nature": "01",
                  "name": "1212",
                  "statusRemark": "1212",
                  "scoreStand": "1212",
                  "source": "1212",
                  "weight": 0.3,
                  "status": "Y",
                  "remark": "-",
                  "index": 1,
                  "rowIndex": 0
              },
              {
                  "processId": "1499255834195238914",
                  "currentProcessInfoId": "1499255834245570561",
                  "flowType": "01",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "01",
                  "dimensionName": "日常-測試",
                  "dimensionTag": "1499255834195238914日常-測試",
                  "nature": "01",
                  "name": "TEST",
                  "statusRemark": "100",
                  "scoreStand": "100",
                  "source": "100",
                  "weight": 0.3,
                  "status": "Y",
                  "remark": "-",
                  "index": 1,
                  "rowIndex": 1
              },
              {
                  "processId": "1499255834195238914",
                  "currentProcessInfoId": "1499255834245570561",
                  "flowType": "01",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "01",
                  "dimensionName": "日常-測試",
                  "dimensionTag": "1499255834195238914日常-測試",
                  "nature": "01",
                  "name": "12",
                  "statusRemark": "12",
                  "scoreStand": "12",
                  "source": "12",
                  "weight": 0.3,
                  "status": "Y",
                  "remark": "-",
                  "index": 1,
                  "rowIndex": 2
              },
              {
                  "processId": "1499255834195238914",
                  "currentProcessInfoId": "1499255834245570561",
                  "flowType": "01",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "01",
                  "dimensionName": "管理指標",
                  "dimensionTag": "1499255834195238914管理指標",
                  "nature": "02",
                  "name": "12",
                  "statusRemark": "12",
                  "scoreStand": "12",
                  "source": "12",
                  "weight": 0.1,
                  "status": "Y",
                  "remark": "-",
                  "index": 1,
                  "rowIndex": 3
              },
              {
                  "processId": "1499255834996350977",
                  "currentProcessInfoId": null,
                  "flowType": "02",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "00",
                  "dimensionName": "重點-測試",
                  "dimensionTag": "1499255834996350977重點-測試",
                  "nature": "01",
                  "name": "1212",
                  "statusRemark": "1212",
                  "scoreStand": "1212",
                  "source": "1212",
                  "weight": 0.3,
                  "status": "-",
                  "remark": "-",
                  "index": 2,
                  "rowIndex": 4
              },
              {
                  "processId": "1499255834996350977",
                  "currentProcessInfoId": null,
                  "flowType": "02",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "00",
                  "dimensionName": "日常-測試",
                  "dimensionTag": "1499255834996350977日常-測試",
                  "nature": "01",
                  "name": "TEST",
                  "statusRemark": "100",
                  "scoreStand": "100",
                  "source": "100",
                  "weight": 0.3,
                  "status": "-",
                  "remark": "-",
                  "index": 2,
                  "rowIndex": 5
              },
              {
                  "processId": "1499255834996350977",
                  "currentProcessInfoId": null,
                  "flowType": "02",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "00",
                  "dimensionName": "日常-測試",
                  "dimensionTag": "1499255834996350977日常-測試",
                  "nature": "01",
                  "name": "12",
                  "statusRemark": "12",
                  "scoreStand": "12",
                  "source": "12",
                  "weight": 0.3,
                  "status": "-",
                  "remark": "-",
                  "index": 2,
                  "rowIndex": 6
              },
              {
                  "processId": "1499255834996350977",
                  "currentProcessInfoId": null,
                  "flowType": "02",
                  "userName": "xxx",
                  "itcode": "xxx",
                  "pernr": "xxx",
                  "approveStatus": "00",
                  "dimensionName": "管理指標",
                  "dimensionTag": "1499255834996350977管理指標",
                  "nature": "02",
                  "name": "12",
                  "statusRemark": "12",
                  "scoreStand": "12",
                  "source": "12",
                  "weight": 0.1,
                  "status": "-",
                  "remark": "-",
                  "index": 2,
                  "rowIndex": 7
              }
          ]

          將數據按照字段[processId] [dimensionTag]進行處理

          // 按照dimensionTag合并行
          getDimensionNumber() {
            this.dimensionIndexArr = []
            let DimensionObj = {}
            this.dataList.forEach((element, index) => {
              element.rowIndex = index
              if (DimensionObj[element.dimensionTag]) {
                DimensionObj[element.dimensionTag].push(index)
              } else {
                DimensionObj[element.dimensionTag] = []
                DimensionObj[element.dimensionTag].push(index)
              }
            })
            for (let k in DimensionObj) {
              if (DimensionObj[k].length > 1) {
                this.dimensionIndexArr.push(DimensionObj[k])
              }
            }
          },
          // 按照processId合并行
          getRecordNumber() {
            this.recordIndexArr=[]
            let OrderObj = {}
            this.dataList.forEach((element, index) => {
              element.rowIndex = index
              if (OrderObj[element.processId]) {
                OrderObj[element.processId].push(index)
              } else {
                OrderObj[element.processId] = []
                OrderObj[element.processId].push(index)
              }
            })
            for (let k in OrderObj) {
              if (OrderObj[k].length > 1) {
                this.recordIndexArr.push(OrderObj[k])
              }
            }
          },

          根據頁面展示需要,控制哪一些列上的數據需要進行合并

          objectSpanMethod({row, column, rowIndex, columnIndex}) {
            if (columnIndex === 0 || columnIndex === 1 || columnIndex >= 9) {
              for (let i = 0; i < this.recordIndexArr.length; i++) {
                let element = this.recordIndexArr[i]
                for (let j = 0; j < element.length; j++) {
                  let item = element[j]
                  if (rowIndex == item) {
                    if (j == 0) {
                      return {
                        rowspan: element.length,
                        colspan: 1
                      }
                    } else if (j != 0) {
                      return {
                        rowspan: 0,
                        colspan: 0
                      }
                    }
                  }
                }
              }
            }
            if (columnIndex === 2) {
              for (let i = 0; i < this.dimensionIndexArr.length; i++) {
                let element = this.dimensionIndexArr[i]
                for (let j = 0; j < element.length; j++) {
                  let item = element[j]
                  if (rowIndex == item) {
                    if (j == 0) {
                      return {
                        rowspan: element.length,
                        colspan: 1
                      }
                    } else if (j != 0) {
                      return {
                        rowspan: 0,
                        colspan: 0
                      }
                    }
                  }
                }
              }
            }
          },

          處理樣式

          • 完成合并后會改變框架的樣式,需要修復


          樣式錯亂

          • 在el-table上添加 [row-class-name] [@cell-mouse-enter] [@cell-mouse-leave]并實現對應方法
          <el-table
            ref="table"
            v-loading="dataListLoading"
            :data="dataList"
            border
            :span-method="objectSpanMethod"
            :row-class-name="tableRowClassName"
            @cell-mouse-enter="cellMouseEnter"
            @cell-mouse-leave="cellMouseLeave"
            style="width: 100%;margin-top: 16px"
          >
              .......
          </el-table>
          tableRowClassName({row, rowIndex}) {
            let arr = this.hoverOrderArr
            for (let i = 0; i < arr.length; i++) {
              if (rowIndex === arr[i]) {
                return 'success-row'
              }
            }
          },
          cellMouseEnter(row, column, cell, event) {
            this.rowIndex = row.rowIndex
            this.hoverOrderArr = []
            this.recordIndexArr.forEach((element) => {
              if (element.indexOf(this.rowIndex) >= 0) {
                this.hoverOrderArr = element
              }
            })
          },
          cellMouseLeave(row, column, cell, event) {
            this.rowIndex = '-1'
            this.hoverOrderArr = []
          },
          <style scoped>
          /deep/ .el-table .success-row {
            background: #ecf4fe;
          }
          </style>

          完整代碼

          格是組織和顯示數據的一種有效方式,無論是在文檔中還是網頁上。良好的表格設計可以提高信息的可讀性和易理解性。本文將詳細介紹如何創建和格式化表格,并提供一些實例。

          創建表格

          在Word或類似文檔編輯器中創建表格

          1. 插入表格:打開文檔編輯器,例如Microsoft Word,找到“插入”選項卡,點擊“表格”,選擇需要的行數和列數。
          2. 輸入數據:點擊表格中的單元格,開始輸入數據。可以使用Tab鍵在單元格之間跳轉。
          3. 調整行列:根據需要調整行高和列寬。在Word中,可以通過拖動表格邊框來調整,或者點擊右鍵選擇“表格屬性”進行精確設置。

          在HTML中創建表格

          <table>
            <tr>
              <th>Header 1</th>
              <th>Header 2</th>
            </tr>
            <tr>
              <td>Data 1</td>
              <td>Data 2</td>
            </tr>
            <tr>
              <td>Data 3</td>
              <td>Data 4</td>
            </tr>
          </table>
          

          • <table> 標簽用于創建表格。
          • <tr> 標簽定義表格中的行。
          • <th> 標簽定義表頭單元格,通常加粗居中顯示。
          • <td> 標簽定義標準單元格。

          格式化表格

          格式化表格包括調整表格的樣式、布局和顏色等,以提高其可讀性和美觀性。

          文檔編輯器中的格式化

          1. 邊框樣式:可以為表格或單個單元格設置邊框樣式、顏色和寬度。在Word中,選擇表格,然后在“設計”選項卡中選擇邊框樣式。
          2. 單元格填充:為了區分不同的行或列,可以對單元格進行顏色填充。在Word中,選擇單元格或行列,然后在“布局”選項卡中選擇“填充”。
          3. 文本對齊:文本對齊方式可以設置為左對齊、居中或右對齊。選擇單元格后,在“布局”選項卡中選擇對齊方式。
          4. 合并單元格:有時需要將多個單元格合并為一個單元格以顯示標題或其他信息。選擇要合并的單元格,然后點擊“合并單元格”。

          HTML中的格式化

          在HTML中,格式化通常通過CSS完成。

          <style>
            table {
              width: 100%;
              border-collapse: collapse;
            }
            th, td {
              border: 1px solid black;
              padding: 8px;
              text-align: left;
            }
            th {
              background-color: #f2f2f2;
            }
            tr:nth-child(even) {
              background-color: #f9f9f9;
            }
          </style>
          

          • border-collapse 設置為 collapse 以消除單元格之間的間隙。
          • th, td 設置了邊框、填充和文本對齊。
          • th 設置了表頭的背景色。
          • tr:nth-child(even) 為偶數行設置了條紋效果。

          實例

          文檔編輯器實例

          假設我們需要創建一個3x3的表格,顯示一個小型團隊的成員信息。

          1. 插入一個3行3列的表格。
          2. 輸入數據:姓名、職位、郵箱。
          3. 設置第一行為表頭,加粗并填充淡藍色背景。
          4. 設置所有單元格的文本為居中對齊。
          5. 為表格添加外邊框,并為行添加細邊框。

          HTML實例

          <!DOCTYPE html>
          <html>
          <head>
          <style>
            table {
              width: 50%;
              border-collapse: collapse;
              margin: 25px 0;
            }
            th, td {
              border: 1px solid #ddd;
              padding: 8px;
              text-align: left;
            }
            th {
              background-color: #4CAF50;
              color: white;
            }
            tr:nth-child(even) {
              background-color: #f2f2f2;
            }
          </style>
          </head>
          <body>
          
          <table>
            <tr>
              <th>Name</th>
              <th>Position</th>
              <th>Email</th>
            </tr>
            <tr>
              <td>Alice</td>
              <td>Manager</td>
              <td>alice@example.com</td>
            </tr>
            <tr>
              <td>Bob</td>
              <td>Developer</td>
              <td>bob@example.com</td>
            </tr>
            <tr>
              <td>Charlie</td>
              <td>Designer</td>
              <td>charlie@example.com</td>
            </tr>
          </table>
          
          </body>
          </html>
          

          在這個HTML實例中,我們創建了一個帶有條紋效果的表格,表頭有綠色背景和白色文字,每個單元格都有適當的填充和邊框。

          結論

          創建和格式化表格是一項基本技能,無論是在文檔編輯器還是HTML中。一個良好格式化的表格不僅能有效傳達信息,還能提升整體文檔或網頁的美觀性和專業性。通過實踐這些技巧和使用示例作為參考,你可以創建出既實用又吸引人的表格。


          主站蜘蛛池模板: 精品久久一区二区三区| 亚洲电影国产一区| 精品人妻少妇一区二区三区| 国产精品久久久久一区二区三区 | 无码少妇一区二区浪潮免费| 色一情一乱一区二区三区啪啪高| 国产日韩精品一区二区三区在线 | 天天躁日日躁狠狠躁一区| 成人免费一区二区无码视频| 精品国产日韩亚洲一区91| 国产一区二区三区内射高清| 波多野结衣在线观看一区| 欲色影视天天一区二区三区色香欲| 中文字幕一区二区三区四区 | 亚洲视频一区在线观看| 无码日韩精品一区二区免费| 国产精品盗摄一区二区在线| 中文字幕久久亚洲一区| 无码人妻久久久一区二区三区 | 日本一区二三区好的精华液 | 久久伊人精品一区二区三区| 日韩一区二区三区射精| 一区二区日韩国产精品| 欧洲无码一区二区三区在线观看| 无码人妻一区二区三区免费手机| 国产一区二区三区在线| 精品无码一区二区三区爱欲 | 视频在线一区二区三区| 久久婷婷色一区二区三区| 成人精品一区二区电影 | 亚洲无线码在线一区观看| 精品无码av一区二区三区| 亚州AV综合色区无码一区| 日韩有码一区二区| 中文字幕一区二区三匹| 国产伦精品一区二区免费| 亚洲欧美日韩中文字幕一区二区三区| 无码毛片一区二区三区中文字幕 | 久久国产精品一区二区| 成人精品一区二区三区电影| 久久国产免费一区|