整合營銷服務商

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

          免費咨詢熱線:

          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列。

          完整代碼:↓

          .說明:

          推薦指數:★★★★

          通俗易懂。

          2.效果圖


          3.一個含有內部的css的html,名叫:風車-1.html代碼:

          <!--注釋法-->
          <!--第1步:聲明:可以大小寫均可以:doctype=DOCTYPE-->
          <!--doctype html-->
          <!DOCTYPE html>
          
          <!--第2步:html包起來,默認lang=‘en’,所以也可以刪除-->
          <!--像這樣:html-->
          <html>
          <html lang="en"-->
              <!--第2-1步:head部分設置-->
              <head>
                  <!--第2-1-1步:固定格式meta和title設置-->
                  <meta charset="UTF-8">
                  <!--網頁名字自己隨意取-->
                  <title>大風車DIY1</title>
                  <!--第2-1-2步:css的設置,因為簡單所以直接寫在html的單個文件里-->
                  <!--也可以作為外部文件引起css文件-->
                  <style>
                      #box {
                          width: 10px;
                          height: 10px;
                          margin: 5px auto;
                          position: relative;
                      }
          
                      #main {
                          width: 400px;
                          height: 400px;
                          animation: dfc 1s linear infinite;
                      }
          
                      /*這是css的注釋方法*/
                      /*風車的每一扇葉的設置,因為4個扇葉的設置是一樣的,所以用這樣*/
                      /*4個扇葉的共性設置*/
                      .css1,
                      .css2,
                      .css3,
                      .css4 {
                          width: 200px;
                          height: 100px;
                          border: 1px solid blue;
                          border-radius: 100px 100px 0 0;
                          position: absolute;
                          /*4個扇葉的顏色漸變設置*/
                          background-image: linear-gradient(green, yellow);
                      }
                      /*扇葉1的個性設置*/
                      .css1 {
                          top: 100px;
                      }
                      /*扇葉2的個性設置*/
                      .css2 {
                          top: 50px;
                          left: 150px;
                          -webkit-transform: rotate(90deg);
                          -moz-transform: rotate(90deg);
                          -ms-transform: rotate(90deg);
                          -o-transform: rotate(90deg);
                          transform: rotate(90deg);
                      }
                      /*扇葉3的個性設置*/
                      .css3 {
                          top: 200px;
                          left: 200px;
                          -webkit-transform: rotate(180deg);
                          -moz-transform: rotate(180deg);
                          -ms-transform: rotate(180deg);
                          -o-transform: rotate(180deg);
                          transform: rotate(180deg);
                      }
                      /*扇葉4的個性設置*/
                      .css4 {
                          top: 250px;
                          left: 50px;
                          -webkit-transform: rotate(270deg);
                          -moz-transform: rotate(270deg);
                          -ms-transform: rotate(270deg);
                          -o-transform: rotate(270deg);
                          transform: rotate(270deg);
                      }
          
                      /*中間的圓形的設置*/
                      .ssss {
                          width: 100px;
                          height: 100px;
                          border-radius: 100%;
                          position: absolute;
                          top: 150px;
                          left: 150px;
                          z-index: 10;
                          /*請注意下面css的顏色設置,可以是小寫的英文字母,也可以是大寫的,還可以是十六進制*/
                          /*中間圓的漸變顏色設置*/
                          background-image: radial-gradient(pink, blue);
                      }
                      /*風車的豎直桿的設置*/
                      .hhh {
                          width: 2px;
                          height: 250px;
                          background-image: radial-gradient(black, RED);
                          position: absolute;
                          top: 200px;
                          left: 199px;
                          z-index: -1;
                      }
                      /*運動的功能定義*/
                      @keyframes dfc {
                          0% {
                              -webkit-transform: rotate(0deg);
                              -moz-transform: rotate(0deg);
                              -ms-transform: rotate(0deg);
                              -o-transform: rotate(0deg);
                              transform: rotate(0deg);
                          }
                          25% {
                              -webkit-transform: rotate( 90deg);
                              -moz-transform: rotate( 90deg);
                              -ms-transform: rotate( 90deg);
                              -o-transform: rotate( 90deg);
                              transform: rotate( 90deg);
                          }
                          50% {
                              -webkit-transform: rotate(180deg);
                              -moz-transform: rotate(180deg);
                              -ms-transform: rotate(180deg);
                              -o-transform: rotate(180deg);
                              transform: rotate(180deg);
                          }
                          75% {
                              -webkit-transform: rotate(270deg);
                              -moz-transform: rotate(270deg);
                              -ms-transform: rotate(270deg);
                              -o-transform: rotate(270deg);
                              transform: rotate(270deg);
                          }
                          100% {
                              -webkit-transform: rotate(360deg);
                              -moz-transform: rotate(360deg);
                              -ms-transform: rotate(360deg);
                              -o-transform: rotate(360deg);
                              transform: rotate(360deg);
                          }
                      }
                  </style>
              </head>
              <!--第2-2步:body部分設置-->
              <body>
                  <div id="box">
                      <!--box的div容器里面有風車桿和main的4個運動的扇葉-->
                      <div id="main">
                          <!--main里的css是要一起運動的-->
                          <div class="css1"></div>
                          <div class="css2"></div>
                          <div class="css3"></div>
                          <div class="css4"></div>
                          <div class="ssss"></div>
                      </div>
                      <!--風車的桿是不動的,所以單獨放在一個div容器中-->
                      <div class="hhh"></div>
                  </div>
          
              </body>
          
          </html>

          4.如何將css拆開,單獨呢?大型項目都是css單獨一個文件夾,里面一大堆css文件。

          4.1 建一個fengche.css文件,將下面代碼復制進去,和風車-2.html放在同一個文件夾中。

          fengche.css的代碼:

          #box {
          width: 10px;
          height: 10px;
          margin: 5px auto;
          position: relative;
          }
          
          #main {
          width: 400px;
          height: 400px;
          animation: dfc 1s linear infinite;
          }
          
          /*這是css的注釋方法*/
          /*風車的每一扇葉的設置,因為4個扇葉的設置是一樣的,所以用這樣*/
          /*4個扇葉的共性設置*/
          .css1,
          .css2,
          .css3,
          .css4 {
          width: 200px;
          height: 100px;
          border: 1px solid blue;
          border-radius: 100px 100px 0 0;
          position: absolute;
          /*4個扇葉的顏色漸變設置*/
          background-image: linear-gradient(green, yellow);
          }
          /*扇葉1的個性設置*/
          .css1 {
          top: 100px;
          }
          /*扇葉2的個性設置*/
          .css2 {
          top: 50px;
          left: 150px;
          -webkit-transform: rotate(90deg);
          -moz-transform: rotate(90deg);
          -ms-transform: rotate(90deg);
          -o-transform: rotate(90deg);
          transform: rotate(90deg);
          }
          /*扇葉3的個性設置*/
          .css3 {
          top: 200px;
          left: 200px;
          -webkit-transform: rotate(180deg);
          -moz-transform: rotate(180deg);
          -ms-transform: rotate(180deg);
          -o-transform: rotate(180deg);
          transform: rotate(180deg);
          }
          /*扇葉4的個性設置*/
          .css4 {
          top: 250px;
          left: 50px;
          -webkit-transform: rotate(270deg);
          -moz-transform: rotate(270deg);
          -ms-transform: rotate(270deg);
          -o-transform: rotate(270deg);
          transform: rotate(270deg);
          }
          
          /*中間的圓形的設置*/
          .ssss {
          width: 100px;
          height: 100px;
          border-radius: 100%;
          position: absolute;
          top: 150px;
          left: 150px;
          z-index: 10;
          /*請注意下面css的顏色設置,可以是小寫的英文字母,也可以是大寫的,還可以是十六進制*/
          /*中間圓的漸變顏色設置*/
          background-image: radial-gradient(pink, blue);
          }
          /*風車的豎直桿的設置*/
          .hhh {
          width: 2px;
          height: 250px;
          background-image: radial-gradient(black, RED);
          position: absolute;
          top: 200px;
          left: 199px;
          z-index: -1;
          }
          /*運動的功能定義*/
          @keyframes dfc {
          0% {
              -webkit-transform: rotate(0deg);
              -moz-transform: rotate(0deg);
              -ms-transform: rotate(0deg);
              -o-transform: rotate(0deg);
              transform: rotate(0deg);
          }
          25% {
              -webkit-transform: rotate( 90deg);
              -moz-transform: rotate( 90deg);
              -ms-transform: rotate( 90deg);
              -o-transform: rotate( 90deg);
              transform: rotate( 90deg);
          }
          50% {
              -webkit-transform: rotate(180deg);
              -moz-transform: rotate(180deg);
              -ms-transform: rotate(180deg);
              -o-transform: rotate(180deg);
              transform: rotate(180deg);
          }
          75% {
              -webkit-transform: rotate(270deg);
              -moz-transform: rotate(270deg);
              -ms-transform: rotate(270deg);
              -o-transform: rotate(270deg);
              transform: rotate(270deg);
          }
          100% {
              -webkit-transform: rotate(360deg);
              -moz-transform: rotate(360deg);
              -ms-transform: rotate(360deg);
              -o-transform: rotate(360deg);
              transform: rotate(360deg);
          }
          }

          4.2 風車-2.html的代碼:注意修改部分。

          
          <!DOCTYPE html>
          <html>
          <html lang="en"-->
              <head>
                  <meta charset="UTF-8">
                  <title>大風車DIY2</title>
                  <!--注意放在同一個文件夾下,本機是deepin的linux系統,win可能不同-->
                  <link rel="stylesheet" href="./fengche.css" />
              </head>
              <body>
                  <div id="box">
                      <div id="main">
                          <div class="css1"></div>
                          <div class="css2"></div>
                          <div class="css3"></div>
                          <div class="css4"></div>
                          <div class="ssss"></div>
                      </div>
                      <div class="hhh"></div>
                  </div>
          
              </body>
          </html>

          怎么樣?通俗易懂吧,看了后,立馬入門。

          考自下列文章

          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>

          完整代碼


          主站蜘蛛池模板: 国产色综合一区二区三区| 色窝窝无码一区二区三区| 亚洲无圣光一区二区| 91福利一区二区| 久久国产精品亚洲一区二区| 3d动漫精品啪啪一区二区免费| 日韩精品无码中文字幕一区二区| AV无码精品一区二区三区宅噜噜| 国产一区二区三区91| 麻豆文化传媒精品一区二区| 国产成人精品一区二区A片带套| 国产精品无码一区二区三区免费| 一区二区三区无码高清视频| 日韩人妻无码一区二区三区综合部 | 波多野结衣一区二区三区高清av| 日韩免费无码一区二区视频| 精品国产一区二区三区AV性色| 日韩人妻无码一区二区三区99| 精品3d动漫视频一区在线观看| 人妻aⅴ无码一区二区三区| 精品免费AV一区二区三区| 亚洲AV乱码一区二区三区林ゆな| 国产综合精品一区二区| 色婷婷综合久久久久中文一区二区| 丰满人妻一区二区三区视频| 中文字幕在线不卡一区二区| 精品一区二区三区中文字幕 | 久久综合九九亚洲一区| 中文字幕一区日韩在线视频| 国产伦精品一区二区三区免费下载 | 精品无码国产AV一区二区三区 | 精品国产AⅤ一区二区三区4区 | 亚洲av区一区二区三| 亚洲综合一区国产精品| 亚洲一区二区三区四区视频 | 色视频综合无码一区二区三区 | 人妻无码第一区二区三区| 日韩精品一区二区三区大桥未久 | 成人免费观看一区二区| 美女啪啪一区二区三区| 国产一区视频在线|