Vue實(shí)現(xiàn)拖拽升級(jí)(九宮格拖拽)

感謝參考原文-http://bjbsair.com/2020-03-27/tech-info/7202.html

基于Vue實(shí)現(xiàn)拖拽升級(jí)(九宮格拖拽)

前言

在本文中將會(huì)用Vue完成九宮格拖拽效果讶迁,同時(shí)介紹一下網(wǎng)格布局佛寿。具體代碼以及demo可以點(diǎn)以下超鏈接進(jìn)入

效果實(shí)例

基于Vue實(shí)現(xiàn)拖拽升級(jí)(九宮格拖拽)

Demo

簡(jiǎn)單了解Grid布局(網(wǎng)格布局)

什么是網(wǎng)格布局

CSS網(wǎng)格布局(又稱(chēng)“網(wǎng)格”),是一種二維網(wǎng)格布局系統(tǒng)效斑。CSS在處理網(wǎng)頁(yè)布局方面一直做的不是很好。一開(kāi)始我們用的是table(表格)布局,然后用float(浮動(dòng))擦秽,position(定位)和inline-block(行內(nèi)塊)布局合呐,但是這些方法本質(zhì)上是hack暮的,遺漏了很多功能,例如垂直居中淌实。后來(lái)出了flexbox(盒子布局)冻辩,解決了很多布局問(wèn)題猖腕,但是它僅僅是一維布局,而不是復(fù)雜的二維布局恨闪,實(shí)際上它們(flexbox與grid)能很好的配合使用倘感。Grid布局是第一個(gè)專(zhuān)門(mén)為解決布局問(wèn)題而創(chuàng)建的CSS模塊.

基于Vue實(shí)現(xiàn)拖拽升級(jí)(九宮格拖拽)

grid

簡(jiǎn)單說(shuō)說(shuō)網(wǎng)格布局的屬性

  • display: grid: 生成塊級(jí)網(wǎng)格 inline-grid: 生成行內(nèi)網(wǎng)格 subgrid: 如果網(wǎng)格容器本身是網(wǎng)格項(xiàng)(嵌套網(wǎng)格容器),此屬性用來(lái)繼承其父網(wǎng)格容器的列咙咽、行大小老玛。
  • grid-template-columns 設(shè)置網(wǎng)格列大小
  • grid-template-rows 設(shè)置網(wǎng)格行大小
  • grid-template-areas 設(shè)置網(wǎng)格區(qū)域
  • grid-column-gap 設(shè)置網(wǎng)格列間距
  • grid-row-gap 設(shè)置網(wǎng)格行間距
  • grid-gap 縮寫(xiě)形式 grid-gap: <grid-row-gap> <grid-column-gap>
  • justify-items 水平方向?qū)R方式(在這里只是簡(jiǎn)單說(shuō)明) start: 左對(duì)齊 end: 右對(duì)齊 center: 居中對(duì)齊 stretch: 填滿(mǎn)(默認(rèn))
  • align-items 垂直方向?qū)R方式 start: 頂部對(duì)齊 end: 底部對(duì)齊 center: 居中對(duì)齊 stretch:填滿(mǎn)(默認(rèn))

當(dāng)然,如果看不懂也不要緊钧敞,這里有一篇個(gè)人十分喜歡的網(wǎng)格布局的文章蜡豹。里面介紹得十分詳細(xì)「瓤粒可以供大家深入學(xué)習(xí)網(wǎng)格布局內(nèi)容镜廉。

傳送門(mén):Grid布局指南

http://www.reibang.com/p/d183265a8dad

實(shí)現(xiàn)九宮格布局

/*css*/  
  
  .container{  
    position: relative;   /*實(shí)現(xiàn)定位,使得滑塊定位相對(duì)于此*/  
    display: grid;        /*定義網(wǎng)格布局*/  
    width: 300px;  
    height: 300px;  
    grid-template-columns: 100px 100px 100px;     /*實(shí)現(xiàn)九宮格愚战,行列各三*/  
    grid-template-rows: 100px 100px 100px;  
    grid-template-areas: "head1 head2 head3"      /*定義個(gè)格子的名稱(chēng)娇唯,方便計(jì)算*/  
                          "main1 main2 main3"  
                          "footer1 footer2 footer3";  
    border: 1px solid #000;  
    margin: 0 auto;  
  }  
  .block{  
    position: absolute;     /*相對(duì)于container定位*/  
    width: 100px;  
    height: 100px;  
    display: flex;        /*flex布局,使得文字在中央*/  
    justify-content: center;  
    justify-items: center;  
    align-items: center;  
    align-content: center;  
    user-select: none;      /*用戶(hù)不可選定文字*/  
    background: olivedrab;  
    border: 1px solid #000  
  }  

//app.vue  
  
<div id="app">  
  <div class="container">  
    <transition >  
      <div class="block animated"  :style="{top:this.positionY,left:this.positionX,gridArea:'main2'}" @mousedown="move" ref="block">  
        {{positionX}}  
        {{positionY}}  
      </div>  
    </transition>  
  </div>  
</div>  

實(shí)現(xiàn)拖拽的JS代碼部分

在這里我選取一些核心代碼出來(lái)講解凤巨。代碼有所省略视乐,因?yàn)榇a著實(shí)有點(diǎn)長(zhǎng),太占篇幅而且沒(méi)多大意義敢茁,如果需要瀏覽全部代碼可以點(diǎn)擊上面的Demo連接佑淀。

<script>  
//引入animate.css 沒(méi)有手撕css動(dòng)畫(huà),直接用了animate.css實(shí)現(xiàn)我們的動(dòng)畫(huà)效果  
import animate from 'animate.css';  
  
export default {  
  name: 'app',  
  data () {  
    return {  
      positionX:0,      //定義方塊的兩個(gè)坐標(biāo)  
      positionY:0,  
    }  
  },  
  methods:{  
    move(e){  
      let oDiv = e.target;      //獲取點(diǎn)擊的目標(biāo)元素  
      let gDiv = e.path[1];     //獲取點(diǎn)擊元素的父級(jí)元素  
        
      /*獲取點(diǎn)擊時(shí)的偏移位置彰檬,在這里要注意一下  
      **由于我們用的是網(wǎng)格布局,每在一個(gè)格子中相對(duì)位置都是相對(duì)格子來(lái)算的伸刃,不是相對(duì)于父級(jí)盒子左上角  
      **也就是說(shuō)當(dāng)你把方塊移動(dòng)到九個(gè)格子中任意一個(gè)時(shí),方塊的位置都是top:0和left:0  
      */  
        
      //所以這里我們直接取鼠標(biāo)點(diǎn)擊的位置減去點(diǎn)擊盒子的偏移位置逢倍,也就是0  
      let disX = e.clientX - 0;       
      let disY = e.clientY - 0;  
      document.onmousemove = (e)=>{  
        
        //當(dāng)拖動(dòng)時(shí)捧颅,算出的值就剛好是方塊的top和left值  
        let left = e.clientX - disX;  
        let top = e.clientY - disY;  
        switch (oDiv.style.gridArea){  
          case "head1 / head1 / head1 / head1":this.rangeOfHead1(left,top,oDiv);break;    //實(shí)現(xiàn)head1的移動(dòng)范圍  
          case "head2 / head2 / head2 / head2":this.rangeOfHead2(left,top,oDiv);break;    //實(shí)現(xiàn)head2的移動(dòng)范圍  
          case "head3 / head3 / head3 / head3":this.rangeOfHead3(left,top,oDiv);break;    //實(shí)現(xiàn)head3的移動(dòng)范圍  
          case "main1 / main1 / main1 / main1":this.rangeOfMain1(left,top,oDiv);break;    //實(shí)現(xiàn)main1的移動(dòng)范圍  
          ...  
        }  
      };  
      document.onmouseup = (e)=>{  
        //當(dāng)鼠標(biāo)抬起時(shí),我們要做的事  
        //通過(guò)點(diǎn)擊位置和父級(jí)元素的偏移判斷方塊在哪個(gè)區(qū)域  
        if(e.clientY-gDiv.offsetTop<100&&e.clientX-gDiv.offsetLeft<100){  
          
          //將方塊移動(dòng)到該區(qū)域中  
          this.changeBlock("head1",oDiv);   
            
        }else if(e.clientY-gDiv.offsetTop>100&&e.clientX-gDiv.offsetLeft<100&&e.clientY-gDiv.offsetTop<200){  
          this.changeBlock("main1",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>200&&e.clientX-gDiv.offsetLeft<100){  
          this.changeBlock("footer1",oDiv);  
        }else if(e.clientY-gDiv.offsetTop<100&&e.clientX-gDiv.offsetLeft>100&&e.clientX-gDiv.offsetLeft<200){  
          this.changeBlock("head2",oDiv);  
        }else if(e.clientY-gDiv.offsetTop<100&&e.clientX-gDiv.offsetLeft>200){  
          this.changeBlock("head3",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>100&&e.clientX-gDiv.offsetLeft>200&&e.clientY-gDiv.offsetTop<200){  
          this.changeBlock("main3",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>200&&e.clientX-gDiv.offsetLeft>200){  
          this.changeBlock("footer3",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>200&&e.clientX-gDiv.offsetLeft>100&&e.clientX-gDiv.offsetLeft<200){  
          this.changeBlock("footer2",oDiv);  
        }else {  
          this.changeBlock("main2",oDiv);  
        }  
        document.onmousemove=null;      //需要把事件監(jiān)聽(tīng)取消  
        document.onmousedown = null;    //需要把事件監(jiān)聽(tīng)取消  
          
        //當(dāng)然较雕,不能忘記我們的動(dòng)畫(huà)hhh  
        oDiv.className = "block animated wobble";  
        let removeClass = setTimeout(()=>{  
          oDiv.className = "block animated";  
        },500);  
  
      };  
    },  
    rangeOfHead1(x,y,oDiv){     //判斷head1格子中的可以移動(dòng)范圍  
      if(x>=200){  
        x=200;  
      }else if(x<=0){  
        x=0;  
      }  
      if(y>=200){  
        y=200;  
      }else if(y<=0){  
        y=0;  
      }  
      oDiv.style.left = x + 'px';  
      oDiv.style.top = y + 'px';  
      this.positionX = x;  
      this.positionY = y;  
  
    },  
    rangeOfHead2(x,y,oDiv){     //判斷head2格子中的可以移動(dòng)范圍  
      if(x>=100){  
        x=100;  
      }else if(x<=-100){  
        x=-100;  
      }  
      if(y>=200){  
        y=200;  
      }else if(y<=0){  
        y=0;  
      }  
      oDiv.style.left = x + 'px';  
      oDiv.style.top = y + 'px';  
  
      this.positionX = x;  
      this.positionY = y;  
  
    },  
    ...  
    changeBlock(blockName,oDiv){    //將方塊移入到對(duì)應(yīng)的區(qū)域中  
      this.positionX = 0;  
      this.positionY = 0;  
      oDiv.style.gridArea=blockName;  
    }  
  },  
}  
</script>  

總結(jié)

到這里我們把九宮格拖拽實(shí)現(xiàn)了碉哑,同時(shí)學(xué)習(xí)了Grid(網(wǎng)格布局)×两總的做下來(lái)扣典,發(fā)現(xiàn)用網(wǎng)格布局做網(wǎng)格拖拽更加費(fèi)事,但是為了后續(xù)可以方便一些慎玖,也只好搗鼓下來(lái)了贮尖。到這里我們就把基于Vue的九宮格拖拽實(shí)現(xiàn)了,有問(wèn)題或者發(fā)現(xiàn)錯(cuò)誤的請(qǐng)指正趁怔,謝謝大家

珍惜淡定的心境湿硝,苦過(guò)后更加清感謝參考原文-http://bjbsair.com/2020-03-27/tech-info/7202/

基于Vue實(shí)現(xiàn)拖拽升級(jí)(九宮格拖拽)

前言

在本文中將會(huì)用Vue完成九宮格拖拽效果薪前,同時(shí)介紹一下網(wǎng)格布局。具體代碼以及demo可以點(diǎn)以下超鏈接進(jìn)入

效果實(shí)例

基于Vue實(shí)現(xiàn)拖拽升級(jí)(九宮格拖拽)

Demo

簡(jiǎn)單了解Grid布局(網(wǎng)格布局)

什么是網(wǎng)格布局

CSS網(wǎng)格布局(又稱(chēng)“網(wǎng)格”)关斜,是一種二維網(wǎng)格布局系統(tǒng)示括。CSS在處理網(wǎng)頁(yè)布局方面一直做的不是很好。一開(kāi)始我們用的是table(表格)布局蚤吹,然后用float(浮動(dòng))例诀,position(定位)和inline-block(行內(nèi)塊)布局,但是這些方法本質(zhì)上是hack裁着,遺漏了很多功能,例如垂直居中拱她。后來(lái)出了flexbox(盒子布局)二驰,解決了很多布局問(wèn)題,但是它僅僅是一維布局秉沼,而不是復(fù)雜的二維布局桶雀,實(shí)際上它們(flexbox與grid)能很好的配合使用。Grid布局是第一個(gè)專(zhuān)門(mén)為解決布局問(wèn)題而創(chuàng)建的CSS模塊.

基于Vue實(shí)現(xiàn)拖拽升級(jí)(九宮格拖拽)

grid

簡(jiǎn)單說(shuō)說(shuō)網(wǎng)格布局的屬性

  • display: grid: 生成塊級(jí)網(wǎng)格 inline-grid: 生成行內(nèi)網(wǎng)格 subgrid: 如果網(wǎng)格容器本身是網(wǎng)格項(xiàng)(嵌套網(wǎng)格容器)唬复,此屬性用來(lái)繼承其父網(wǎng)格容器的列矗积、行大小。
  • grid-template-columns 設(shè)置網(wǎng)格列大小
  • grid-template-rows 設(shè)置網(wǎng)格行大小
  • grid-template-areas 設(shè)置網(wǎng)格區(qū)域
  • grid-column-gap 設(shè)置網(wǎng)格列間距
  • grid-row-gap 設(shè)置網(wǎng)格行間距
  • grid-gap 縮寫(xiě)形式 grid-gap: <grid-row-gap> <grid-column-gap>
  • justify-items 水平方向?qū)R方式(在這里只是簡(jiǎn)單說(shuō)明) start: 左對(duì)齊 end: 右對(duì)齊 center: 居中對(duì)齊 stretch: 填滿(mǎn)(默認(rèn))
  • align-items 垂直方向?qū)R方式 start: 頂部對(duì)齊 end: 底部對(duì)齊 center: 居中對(duì)齊 stretch:填滿(mǎn)(默認(rèn))

當(dāng)然敞咧,如果看不懂也不要緊棘捣,這里有一篇個(gè)人十分喜歡的網(wǎng)格布局的文章。里面介紹得十分詳細(xì)休建≌Э郑可以供大家深入學(xué)習(xí)網(wǎng)格布局內(nèi)容。

傳送門(mén):Grid布局指南

http://www.reibang.com/p/d183265a8dad

實(shí)現(xiàn)九宮格布局

/*css*/  
  
  .container{  
    position: relative;   /*實(shí)現(xiàn)定位测砂,使得滑塊定位相對(duì)于此*/  
    display: grid;        /*定義網(wǎng)格布局*/  
    width: 300px;  
    height: 300px;  
    grid-template-columns: 100px 100px 100px;     /*實(shí)現(xiàn)九宮格茵烈,行列各三*/  
    grid-template-rows: 100px 100px 100px;  
    grid-template-areas: "head1 head2 head3"      /*定義個(gè)格子的名稱(chēng),方便計(jì)算*/  
                          "main1 main2 main3"  
                          "footer1 footer2 footer3";  
    border: 1px solid #000;  
    margin: 0 auto;  
  }  
  .block{  
    position: absolute;     /*相對(duì)于container定位*/  
    width: 100px;  
    height: 100px;  
    display: flex;        /*flex布局砌些,使得文字在中央*/  
    justify-content: center;  
    justify-items: center;  
    align-items: center;  
    align-content: center;  
    user-select: none;      /*用戶(hù)不可選定文字*/  
    background: olivedrab;  
    border: 1px solid #000  
  }  

//app.vue  
  
<div id="app">  
  <div class="container">  
    <transition >  
      <div class="block animated"  :style="{top:this.positionY,left:this.positionX,gridArea:'main2'}" @mousedown="move" ref="block">  
        {{positionX}}  
        {{positionY}}  
      </div>  
    </transition>  
  </div>  
</div>  

實(shí)現(xiàn)拖拽的JS代碼部分

在這里我選取一些核心代碼出來(lái)講解呜投。代碼有所省略,因?yàn)榇a著實(shí)有點(diǎn)長(zhǎng)存璃,太占篇幅而且沒(méi)多大意義仑荐,如果需要瀏覽全部代碼可以點(diǎn)擊上面的Demo連接。

<script>  
//引入animate.css 沒(méi)有手撕css動(dòng)畫(huà)有巧,直接用了animate.css實(shí)現(xiàn)我們的動(dòng)畫(huà)效果  
import animate from 'animate.css';  
  
export default {  
  name: 'app',  
  data () {  
    return {  
      positionX:0,      //定義方塊的兩個(gè)坐標(biāo)  
      positionY:0,  
    }  
  },  
  methods:{  
    move(e){  
      let oDiv = e.target;      //獲取點(diǎn)擊的目標(biāo)元素  
      let gDiv = e.path[1];     //獲取點(diǎn)擊元素的父級(jí)元素  
        
      /*獲取點(diǎn)擊時(shí)的偏移位置释漆,在這里要注意一下  
      **由于我們用的是網(wǎng)格布局,每在一個(gè)格子中相對(duì)位置都是相對(duì)格子來(lái)算的,不是相對(duì)于父級(jí)盒子左上角  
      **也就是說(shuō)當(dāng)你把方塊移動(dòng)到九個(gè)格子中任意一個(gè)時(shí)篮迎,方塊的位置都是top:0和left:0  
      */  
        
      //所以這里我們直接取鼠標(biāo)點(diǎn)擊的位置減去點(diǎn)擊盒子的偏移位置男图,也就是0  
      let disX = e.clientX - 0;       
      let disY = e.clientY - 0;  
      document.onmousemove = (e)=>{  
        
        //當(dāng)拖動(dòng)時(shí)示姿,算出的值就剛好是方塊的top和left值  
        let left = e.clientX - disX;  
        let top = e.clientY - disY;  
        switch (oDiv.style.gridArea){  
          case "head1 / head1 / head1 / head1":this.rangeOfHead1(left,top,oDiv);break;    //實(shí)現(xiàn)head1的移動(dòng)范圍  
          case "head2 / head2 / head2 / head2":this.rangeOfHead2(left,top,oDiv);break;    //實(shí)現(xiàn)head2的移動(dòng)范圍  
          case "head3 / head3 / head3 / head3":this.rangeOfHead3(left,top,oDiv);break;    //實(shí)現(xiàn)head3的移動(dòng)范圍  
          case "main1 / main1 / main1 / main1":this.rangeOfMain1(left,top,oDiv);break;    //實(shí)現(xiàn)main1的移動(dòng)范圍  
          ...  
        }  
      };  
      document.onmouseup = (e)=>{  
        //當(dāng)鼠標(biāo)抬起時(shí),我們要做的事  
        //通過(guò)點(diǎn)擊位置和父級(jí)元素的偏移判斷方塊在哪個(gè)區(qū)域  
        if(e.clientY-gDiv.offsetTop<100&&e.clientX-gDiv.offsetLeft<100){  
          
          //將方塊移動(dòng)到該區(qū)域中  
          this.changeBlock("head1",oDiv);   
            
        }else if(e.clientY-gDiv.offsetTop>100&&e.clientX-gDiv.offsetLeft<100&&e.clientY-gDiv.offsetTop<200){  
          this.changeBlock("main1",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>200&&e.clientX-gDiv.offsetLeft<100){  
          this.changeBlock("footer1",oDiv);  
        }else if(e.clientY-gDiv.offsetTop<100&&e.clientX-gDiv.offsetLeft>100&&e.clientX-gDiv.offsetLeft<200){  
          this.changeBlock("head2",oDiv);  
        }else if(e.clientY-gDiv.offsetTop<100&&e.clientX-gDiv.offsetLeft>200){  
          this.changeBlock("head3",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>100&&e.clientX-gDiv.offsetLeft>200&&e.clientY-gDiv.offsetTop<200){  
          this.changeBlock("main3",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>200&&e.clientX-gDiv.offsetLeft>200){  
          this.changeBlock("footer3",oDiv);  
        }else if(e.clientY-gDiv.offsetTop>200&&e.clientX-gDiv.offsetLeft>100&&e.clientX-gDiv.offsetLeft<200){  
          this.changeBlock("footer2",oDiv);  
        }else {  
          this.changeBlock("main2",oDiv);  
        }  
        document.onmousemove=null;      //需要把事件監(jiān)聽(tīng)取消  
        document.onmousedown = null;    //需要把事件監(jiān)聽(tīng)取消  
          
        //當(dāng)然逊笆,不能忘記我們的動(dòng)畫(huà)hhh  
        oDiv.className = "block animated wobble";  
        let removeClass = setTimeout(()=>{  
          oDiv.className = "block animated";  
        },500);  
  
      };  
    },  
    rangeOfHead1(x,y,oDiv){     //判斷head1格子中的可以移動(dòng)范圍  
      if(x>=200){  
        x=200;  
      }else if(x<=0){  
        x=0;  
      }  
      if(y>=200){  
        y=200;  
      }else if(y<=0){  
        y=0;  
      }  
      oDiv.style.left = x + 'px';  
      oDiv.style.top = y + 'px';  
      this.positionX = x;  
      this.positionY = y;  
  
    },  
    rangeOfHead2(x,y,oDiv){     //判斷head2格子中的可以移動(dòng)范圍  
      if(x>=100){  
        x=100;  
      }else if(x<=-100){  
        x=-100;  
      }  
      if(y>=200){  
        y=200;  
      }else if(y<=0){  
        y=0;  
      }  
      oDiv.style.left = x + 'px';  
      oDiv.style.top = y + 'px';  
  
      this.positionX = x;  
      this.positionY = y;  
  
    },  
    ...  
    changeBlock(blockName,oDiv){    //將方塊移入到對(duì)應(yīng)的區(qū)域中  
      this.positionX = 0;  
      this.positionY = 0;  
      oDiv.style.gridArea=blockName;  
    }  
  },  
}  
</script>  

總結(jié)

到這里我們把九宮格拖拽實(shí)現(xiàn)了栈戳,同時(shí)學(xué)習(xí)了Grid(網(wǎng)格布局)∧疡桑總的做下來(lái)子檀,發(fā)現(xiàn)用網(wǎng)格布局做網(wǎng)格拖拽更加費(fèi)事,但是為了后續(xù)可以方便一些乃戈,也只好搗鼓下來(lái)了褂痰。到這里我們就把基于Vue的九宮格拖拽實(shí)現(xiàn)了,有問(wèn)題或者發(fā)現(xiàn)錯(cuò)誤的請(qǐng)指正症虑,謝謝大家

珍惜淡定的心境缩歪,苦過(guò)后更加清

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谍憔,隨后出現(xiàn)的幾起案子匪蝙,更是在濱河造成了極大的恐慌,老刑警劉巖习贫,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逛球,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡苫昌,警方通過(guò)查閱死者的電腦和手機(jī)颤绕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)苗桂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)钱骂,“玉大人,你說(shuō)我怎么就攤上這事咖气≡露” “怎么了汗洒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)父款。 經(jīng)常有香客問(wèn)我溢谤,道長(zhǎng),這世上最難降的妖魔是什么憨攒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任世杀,我火速辦了婚禮,結(jié)果婚禮上肝集,老公的妹妹穿的比我還像新娘瞻坝。我一直安慰自己,他們只是感情好杏瞻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布所刀。 她就那樣靜靜地躺著衙荐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浮创。 梳的紋絲不亂的頭發(fā)上忧吟,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音斩披,去河邊找鬼溜族。 笑死,一個(gè)胖子當(dāng)著我的面吹牛垦沉,可吹牛的內(nèi)容都是我干的煌抒。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼乡话,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摧玫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起绑青,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屋群,沒(méi)想到半個(gè)月后闸婴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芍躏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年邪乍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片对竣。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庇楞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出否纬,到底是詐尸還是另有隱情吕晌,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布临燃,位于F島的核電站睛驳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏膜廊。R本人自食惡果不足惜乏沸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望爪瓜。 院中可真熱鬧蹬跃,春花似錦、人聲如沸铆铆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扼劈,卻和暖如春驻啤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荐吵。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工骑冗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人先煎。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓贼涩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親薯蝎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子遥倦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

推薦閱讀更多精彩內(nèi)容

  • 前言 在本文中將會(huì)用Vue完成九宮格拖拽效果,同時(shí)介紹一下網(wǎng)格布局占锯。具體代碼以及demo可以點(diǎn)以下超鏈接進(jìn)入 傳送...
    bb7bb閱讀 6,997評(píng)論 5 25
  • 效果實(shí)例 簡(jiǎn)單了解Grid布局(網(wǎng)格布局) 什么是網(wǎng)格布局 CSS網(wǎng)格布局(又稱(chēng)“網(wǎng)格”)袒哥,是一種二維網(wǎng)格布局系統(tǒng)...
    他方l閱讀 263評(píng)論 0 0
  • 效果實(shí)例 簡(jiǎn)單了解Grid布局(網(wǎng)格布局) 什么是網(wǎng)格布局 CSS網(wǎng)格布局(又稱(chēng)“網(wǎng)格”),是一種二維網(wǎng)格布局系統(tǒng)...
    HeroXin閱讀 304評(píng)論 0 1
  • 簡(jiǎn)介CSS網(wǎng)格布局(又稱(chēng)“網(wǎng)格”)消略,是一種二維網(wǎng)格布局系統(tǒng)堡称。CSS在處理網(wǎng)頁(yè)布局方面一直做的不是很好。一開(kāi)始我們用...
    _leonlee閱讀 65,047評(píng)論 25 173
  • 簡(jiǎn)介 CSS網(wǎng)格布局(又名“網(wǎng)格”)是一個(gè)二維的基于網(wǎng)格的布局系統(tǒng)艺演,其目的只在于完全改變我們?cè)O(shè)計(jì)基于網(wǎng)格的用戶(hù)界面...
    禮知白閱讀 668評(píng)論 0 0