最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

完美實(shí)現(xiàn)仿QQ空間評論回復(fù)特效

 更新時間:2015年05月06日 09:22:00   投稿:hebedich  
這篇文章主要介紹了完美實(shí)現(xiàn)仿QQ空間評論回復(fù)特效,非常的實(shí)用,附上實(shí)例代碼給大家,有需要的小伙伴參考下吧。

評論回復(fù)是個很常見的東西,但是各大網(wǎng)站實(shí)現(xiàn)的方式卻不盡相同。大體上有兩種方式

1.

像優(yōu)酷這種最常見,在輸入框中@要回復(fù)的人,這種方式下,用戶可以修改@。

新浪微博則是在這個基礎(chǔ)上,彈出好友菜單。這種方式的好處是不需要任何js,css處理兼容。

2.

像qq空間這種,對回復(fù)的人整個刪除。本屌感覺這種方式比較好,但這種方式有些兼容性上的細(xì)節(jié),這個后面會詳細(xì)說明。

事實(shí)上,qq空間的這種實(shí)現(xiàn)在效果上是兼容了ie和現(xiàn)代瀏覽器的,做的非常好。上面是chrome

ie8

ie7

ie6就不上圖片了,太卡了,都懂得,最后本屌會附上最終例子的,當(dāng)然也兼容ie6。

下面就說說怎么實(shí)現(xiàn)的。

先看看qq空間是怎么做的

chrome

上面可以看到,qq空間是在button中加上文字,這樣在刪除的時候?qū)Ρ换貜?fù)的用戶名就能整個刪除了。

不過這樣做還不夠,首先是樣式,需要把button設(shè)置成inline-block,

消除button默認(rèn)的透明背景,邊框,當(dāng)然還有padding,margin設(shè)為0

復(fù)制代碼 代碼如下:
button{ border: 0; background:none; }

這時在ie6,7中插入會發(fā)現(xiàn),似乎還存在padding,而且還很大

所以還需要加上overflow: visible;

另外屬性contenteditable設(shè)置成為false,否則光標(biāo)會跳到button里面,

然后在ie8下會發(fā)現(xiàn),輸入的時候如果有回車,然后在依次刪除的過程中,會發(fā)現(xiàn)button標(biāo)簽刪不掉,光標(biāo)會跑到button標(biāo)簽前面,而且再次按右光標(biāo)鍵或用鼠標(biāo)點(diǎn)擊button標(biāo)簽右邊都無法讓光標(biāo)跑到button標(biāo)簽右邊。事實(shí)上,qq空間在ie8中也有這個問題

ie8

而在ie6,7下,就沒有這個問題

ie7

ie6

這里針對ie8需要對文本框綁定keydown事件回調(diào)check_comment,對ie6,7綁定了也沒有問題,這里就統(tǒng)一的對ie綁定。

function getPositionForTextArea(ctrl) { //獲取光標(biāo)位置
      var CaretPos = 0; 
      if(document.selection) {
        ctrl.focus(); 
        var Sel = document.selection.createRange(); 
        var Sel2 = Sel.duplicate(); 
        Sel2.moveToElementText(ctrl); 
        var CaretPos = -1; 
        while(Sel2.inRange(Sel)){ 
          Sel2.moveStart('character'); 
          CaretPos++; 
        } 
      }else if(ctrl.selectionStart || ctrl.selectionStart == '0'){
        CaretPos = ctrl.selectionStart; 
      } 
      return (CaretPos); 
    }
      vm.check_comment=function(e,i){
        var a=getPositionForTextArea($('reply'+i));
        if(e.keyCode==8&&a<3){
          var pat = new RegExp("^<p><button .*?>.*?</button>&nbsp;</p>$",'i');
          if(pat.test(this.innerHTML))
            this.innerHTML='';
        }
      };

光標(biāo)位置<3表明光標(biāo)前面就是button標(biāo)簽了,這時就可以清空輸入框了。注意這里為了嚴(yán)謹(jǐn),用正則表達(dá)式驗證是不是button標(biāo)簽.

另外在正則表達(dá)式中button標(biāo)簽外包裹p標(biāo)簽,是因為ie在按回車換行時,會默認(rèn)自動對前面的行包裹p標(biāo)簽。當(dāng)然,一開始在輸入框也要在button標(biāo)簽外包裹p標(biāo)簽。

題外話

qq空間在ff上用的是img標(biāo)簽

之前一直以為qq空間在現(xiàn)代瀏覽器上統(tǒng)一用的是img標(biāo)簽,寫的時候才發(fā)現(xiàn)在chrome中用的是button標(biāo)簽,于是就在chrome下試了一下插入img標(biāo)簽,發(fā)現(xiàn)怎么也弄不掉邊框,而且刪除的時候,綁定中光標(biāo)位置的判斷也會和ie不一致,因為現(xiàn)代瀏覽器換行默認(rèn)插入<br>,于是索性對chrome也用button標(biāo)簽。

另外在我的例子中,ff中插入button標(biāo)簽的話,輸入框不容易獲得焦點(diǎn)。本屌也懶得去改了,仍然是在ff中插入img標(biāo)簽,對應(yīng)的keydown回調(diào)

        if(!!-[1,]&&e.keyCode==8&&$('reply'+i).childNodes.length==2){//ff
          this.innerHTML='';
          return;
        }

只用判斷輸入框的子節(jié)點(diǎn)個數(shù)就可以了。

最終效果

chrome

ff

ie8

ie7

ie6

附上例子下載

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • xml 與javascript結(jié)合的問題解決方法

    xml 與javascript結(jié)合的問題解決方法

    xml 與javascript結(jié)合的問題解決方法...
    2007-03-03
  • js簡易版購物車功能

    js簡易版購物車功能

    這篇文章主要為大家分享了js簡易版的購物車,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • js電信網(wǎng)通雙線自動選擇技巧

    js電信網(wǎng)通雙線自動選擇技巧

    網(wǎng)站打開的速度快是相當(dāng)重要的baidu.com不管你是用的什么網(wǎng)絡(luò),都打開的很快
    2008-11-11
  • uniapp中常用的事件處理方法詳解

    uniapp中常用的事件處理方法詳解

    在UniApp中事件處理非常重要,通過事件處理可以實(shí)現(xiàn)用戶與應(yīng)用程序之間的交互,這篇文章主要給大家介紹了關(guān)于uniapp中常用的事件處理方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • JS中filter( )數(shù)組過濾器的使用

    JS中filter( )數(shù)組過濾器的使用

    這篇文章主要介紹了filter() 數(shù)組過濾的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • js全選實(shí)現(xiàn)和判斷是否有復(fù)選框選中的方法

    js全選實(shí)現(xiàn)和判斷是否有復(fù)選框選中的方法

    這篇文章主要介紹了js全選實(shí)現(xiàn)和判斷是否有復(fù)選框選中的方法,涉及javascript操作復(fù)選框的技巧,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-02-02
  • uniapp頁面回到頂部兩種實(shí)現(xiàn)方法

    uniapp頁面回到頂部兩種實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于uniapp頁面回到頂部兩種實(shí)現(xiàn)方法的相關(guān)資料,在uniapp中要實(shí)現(xiàn)回到頂部的效果有兩種方法實(shí)現(xiàn),文中給出了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-08-08
  • JS實(shí)現(xiàn)兩個大數(shù)(整數(shù))相乘

    JS實(shí)現(xiàn)兩個大數(shù)(整數(shù))相乘

    大數(shù),即超出語言所能表示的數(shù)字最大范圍的數(shù)字,那么如何實(shí)現(xiàn)兩個大數(shù)相乘呢?下面有個不錯的方法,大家可以參考下
    2014-04-04
  • 微信小程序?qū)崿F(xiàn)簡單搜索框

    微信小程序?qū)崿F(xiàn)簡單搜索框

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)簡單搜索框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • JS Input里添加小圖標(biāo)的兩種方法

    JS Input里添加小圖標(biāo)的兩種方法

    大家在做網(wǎng)站的時候,經(jīng)常需要在input里面添加小圖標(biāo)功能,看似功能很簡單,但是實(shí)現(xiàn)起來還是有點(diǎn)技巧的,下面小編給大家介紹下JS Input里添加小圖標(biāo)的兩種方法,需要的朋友參考下吧
    2017-11-11

最新評論

扶沟县| 阳信县| 朝阳区| 海丰县| 聊城市| 阜南县| 兴国县| 周至县| 焦作市| 崇明县| 水城县| 长武县| 辽源市| 巫山县| 博乐市| 阳曲县| 平武县| 安溪县| 会昌县| 天门市| 名山县| 平顶山市| 错那县| 通渭县| 那曲县| 梁河县| 玛纳斯县| 石林| 黄大仙区| 泸溪县| 岳阳县| 铁力市| 库尔勒市| 南靖县| 同心县| 钟祥市| 阳原县| 和政县| 承德市| 高邮市| 昌宁县|