創新實訓——010

本篇介紹頁面的樣式設計。

顏色

1、頁面的整體我選用偏黑色的灰色(#1e1e1e),可以在每一頁的style中添加
body{ background-color: #1e1e1e; }
2、字體顏色我選用和背景色對比鮮明的偏白色(#fff),可以在每一個有字顯示的標籤裏添加style='color:#fff'
3、這裏重點說明element-ui中的展開行裏面的顏色如何更改
展開行的樣式如下所示:
展開行
想要把表格和頁面顏色統一需要做如下操作:

<el-table
   :data="tableData"
   :header-cell-style="{background:'#1e1e1e',color:'#fff'}"
   :header-row-style="{background:'#1e1e1e',color:'#fff'}"
   :row-style="{background:'#1e1e1e',color:'#fff'}"
   :cell-style="{background:'#1e1e1e',color:'#fff'}"
   style="width: 100%">
   <el-table-column type="expand">
     <template slot-scope="props">
       <el-form label-position="left" inline class="demo-table-expand" style="color:#fff">
         <el-form-item label="日誌ID">
           <span>{{ props.row.id }}</span>
         </el-form-item>
         ……此處省略
       </el-form>
     </template>
   </el-table-column>
   <el-table-column
     label="日誌ID"
     prop="id"
     width="100">
   </el-table-column>
   <el-table-column
     label="訪問IP"
     prop="ip">
   </el-table-column>
   <el-table-column
     label="是否異常"
     prop="result"
     width="100">
   </el-table-column>
</el-table>
.el-table{
   background:#1e1e1e;
}
.el-table::before {
   height: 0px;
}
.el-table__expanded-cell{
   background: #1e1e1e;
}
.el-table th, .el-table tr {
   background-color: #1e1e1e;
}

效果如下所示:
展開行效果
表格以此類推。
另外展開表裏的樣式可以在<style>中如下設置:

.demo-table-expand {
   font-size: 0;
 }
 .demo-table-expand label {
   width: 90px;
   color: #99a9bf;
 }
 .demo-table-expand .el-form-item {
   margin-right: 0;
   margin-bottom: 0;
   width: 100%;
 }

佈局設計

佈局我這裏採用了element-ui的佈局方案,整體遵循左邊顯示圖表數據,右邊顯示詳細日誌信息的原則,採用柵欄佈局,示例如下圖所示:

<el-row :gutter="15">
      <!--graphForFirst和logFlush均爲自定義組件-->
      <el-col :span="12"><graphForFirst></graphForFirst></el-col>
      <el-col :span="12"><logFlush/></el-col>
</el-row>

效果如下圖所示:
佈局效果

滾動條

這裏我需要重點強調以下滾動條的配置,因爲這個困擾了我好長時間。
我們知道頁面的原滾動條是這樣的:
原滾動條
這與我們設計頁面不搭,顯得過於突兀,而像現在正在寫博客的CSDN的markdown編輯器的滾動條樣式就非常好看,而element-ui的樣式也非常好,舉例如下:

<el-col :span="14">
            <div style="height:630px">
                <el-scrollbar style="height:100%" ref="elScrollBar">
                    <div>
                        <自定義組件>
                    </div>
                </el-scrollbar>
            </div>
</el-col>
<style>
.el-scrollbar__wrap {
    overflow-x: hidden;/*隱藏橫向滾動軸*/
 }
</style>

效果如下所示:
新滾動條

實時日誌流前端實現

相比於其他組件的前端設計,實時日誌流的顯示比較棘手。
這裏我的做法是在redis裏存儲最新的一次日誌,然後前後端通過websocket不斷返回該值,並且判斷該值是否和上一值是否相等,如果相等則不添加到前端頁面,不相等則添加到dom中,如下所示:

mounted(){
      var namespace = '/theLogFlush';
      //this.socket = io.connect(location.protocol + '//' + document.domain + ':5000'  + namespace);
      this.socket = io.connect(location.protocol + '//localhost:5000'  + namespace);
      var that=this
      this.socket.on('theLogFlush', function(res) {
        console.log(res.data);
        if(that.msg!=res.data){
          that.msg=res.data
          document.getElementById('log').innerText+=res.data
          document.getElementById('log').innerHTML+='<br/>'
          that.updateScroll()
        }
      });
 }

效果如下:
實時日誌流
並且在日誌流不斷添加的過程中我們要保證滾動條是跟隨滾動的,可以這樣做:

<el-scrollbar style="height:100%" ref="elScrollBar">
        <div>
            <h5 id="log" style="color:green">實時訪問日誌……<br></h5>
        </div>
</el-scrollbar>
methods:{
      //使滾動條時時跟上
      updateScroll(){
          this.$refs['elScrollBar'].wrap.scrollTop = this.$refs['elScrollBar'].wrap.scrollHeight
      }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章