h5 實(shí)現(xiàn)向左平滑,出現(xiàn)按鈕操作匿醒,封裝組件场航,模擬購(gòu)物車左滑刪除。react實(shí)現(xiàn)

需求

默認(rèn)隱藏按鈕廉羔,左滑顯示按鈕溉痢,react實(shí)現(xiàn)。

實(shí)現(xiàn)思路

用絕對(duì)定位把元素設(shè)為負(fù)值以隱藏元素憋他,滑動(dòng)的時(shí)候适室,用translate改變按鈕的位置。

基礎(chǔ)知識(shí)

1.觸摸事件

touchstart事件:事件對(duì)象event举瑰,包含手指觸摸的位置
touchmove事件:事件對(duì)象event,包含手指滑動(dòng)的位置
touchend事件:事件對(duì)象event蔬螟,包含手指離開屏幕的位置
click事件:點(diǎn)擊事件此迅,和觸摸事件沖突

2. 觸摸事件和點(diǎn)擊事件的,先后觸發(fā)順序

在屏幕上點(diǎn)擊旧巾,先后觸發(fā)事件


圖層 2.png

在屏幕上滑動(dòng)耸序,先后觸發(fā)事件


圖層 3.png

注:從上圖中我們可以看出,click時(shí)間是在touchstart之后觸發(fā)的鲁猩】补郑滑動(dòng)手勢(shì)是不會(huì)觸發(fā)click事件的

react實(shí)現(xiàn)

樣式部分:

.role_li {
  overflow: hidden;
  @extend %flex;
  justify-content: space-between;
  align-items: center;
  height: 150px;
  padding-left: 42px;
  padding-right: 36px;
  position: relative;
  .left {
    width: 100%;
  }
  .role_name {
    color: #000000;
    font-weight: 600;
    font-size: 28px;
  }
  .server_name {
    color: #b6b6b6;
    font-size: 24px;
  }
  .right {
    @extend %flex-center;
    position: absolute;
    top: 0;
    height: 100%;
    width: 150px;
    right: 0;
  }
}
state = {
          moveDistance: 0,
          move: 0,
          startX: 0,
          distance: 70,
        };
        handleTouchstart = (e) => {
          console.log("滑動(dòng)開始了");
          console.log(e.targetTouches[0].clientX);
          this.setState({
            moveDistance: 0,
            move: 0,
            startX: e.targetTouches[0].clientX,
          });
        };
        handleTouchMove = (e) => {
          console.log(e.targetTouches[0].clientX);
          console.log("滑動(dòng)了");
          this.state.move = this.state.startX - e.targetTouches[0].clientX;
          if (this.state.move > 0) {
            // e.preventDefault();
            this.state.moveDistance = Math.pow(this.state.move, 0.8);
            this.setState({
              moveDistance: this.state.move,
            });
          }
        };
        handleTouchEnd = (e) => {
          console.log("滑動(dòng)結(jié)束了");
          if (this.state.moveDistance > this.state.distance / 2) {
            this.setState({
              moveDistance: this.state.distance,
            });
          } else {
            this.setState({
              moveDistance: 0,
            });
          }
        };
<ul className="role_list">
                <li className="role_li">
                  <div
                    className="left"
                    onTouchEnd={this.handleTouchEnd}
                    onTouchMove={this.handleTouchMove}
                    onTouchStart={this.handleTouchstart}
                  >
                    <p className="role_name">澈澈澈澈澈兒</p>
                    <p className="server_name">iOS-QQ2服-萬(wàn)水依山</p>
                  </div>
                  <div
                    className="right"
                    style={{
                      width: `${this.state.distance}px`,
                      right: `${-this.state.distance}px`,
                      transition: `300ms`,
                      transform: `translate3d(${-this.state
                        .moveDistance}px,0, 0)`,
                    }}
                  >
                    <span className="del_ico"></span>
                  </div>
                </li>
              </ul>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市廓握,隨后出現(xiàn)的幾起案子搅窿,更是在濱河造成了極大的恐慌,老刑警劉巖隙券,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件男应,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡娱仔,警方通過(guò)查閱死者的電腦和手機(jī)沐飘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人耐朴,你說(shuō)我怎么就攤上這事借卧。” “怎么了筛峭?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵铐刘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蜒滩,道長(zhǎng)滨达,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任俯艰,我火速辦了婚禮捡遍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竹握。我一直安慰自己画株,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布啦辐。 她就那樣靜靜地躺著谓传,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芹关。 梳的紋絲不亂的頭發(fā)上续挟,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音侥衬,去河邊找鬼诗祸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛轴总,可吹牛的內(nèi)容都是我干的直颅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼怀樟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼功偿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起往堡,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤械荷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后虑灰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體养葵,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年瘩缆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了关拒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖着绊,靈堂內(nèi)的尸體忽然破棺而出谐算,到底是詐尸還是另有隱情,我是刑警寧澤归露,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布洲脂,位于F島的核電站,受9級(jí)特大地震影響剧包,放射性物質(zhì)發(fā)生泄漏恐锦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一疆液、第九天 我趴在偏房一處隱蔽的房頂上張望一铅。 院中可真熱鬧,春花似錦堕油、人聲如沸潘飘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)卜录。三九已至,卻和暖如春眶明,著一層夾襖步出監(jiān)牢的瞬間艰毒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工搜囱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丑瞧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓犬辰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親冰单。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幌缝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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