<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評(píng)論 - 915, 引用 - 0
    數(shù)據(jù)加載中……

    用AJAX實(shí)現(xiàn)氣泡提示


                                        文/陳剛 www.chengang.com.cn (轉(zhuǎn)載請(qǐng)注明)

    這個(gè)效果的實(shí)現(xiàn)是以網(wǎng)站http://www.panic.com/coda/為模仿對(duì)象(選擇Download可以看到氣泡提示效果),然后重新用Rails中的prototype.js來(lái)實(shí)現(xiàn)。

    HTML頁(yè)面的代碼:
    <span id="content_<%=o.id%>" style="display:none">
        
    <!-- Download Popup style=opacity: 0; visibility: hidden;-->
    <table style="top:500px; left:600px;" class="popup">
      <tbody>
        <tr>
          <td class="corner" id="topleft"></td>
          <td class="top"></td>
          <td class="corner" id="topright"></td>
        </tr>
        <tr>
          <td class="left"></td>
          <td><table class="popup-contents">
            <tbody>
                <tr>
                  <td><%=o.content%></td>
                </tr>
            </tbody>
          </table></td>
          <td class="right"></td>    
        </tr>
        <tr>
          <td id="bottomleft" class="corner"></td>
          <td class="bottom"><img src="/images/bubble-tail2.png" alt="popup tail" height="29" width="30"></td>
          <td class="corner" id="bottomright"></td>
        </tr>
      </tbody>
    </table>
    <!-- end download popup -->
    </span>


    CSS的代碼(涉及到的相關(guān)圖片:bubble.rar):
    /* Bubble pop-up */
    .popup {
        position: absolute;
        z
    -index: 50;
        border
    -collapse: collapse;
           
    /* width:500px;
        visibility: hidden; 
    */
    }

    .popup td.corner {height: 15px;    width: 19px;}
    .popup td#topleft { background
    -image: url(/images/bubble-1.png); }
    .popup td.top { background
    -image: url(/images/bubble-2.png); }
    .popup td#topright { background
    -image: url(/images/bubble-3.png); }
    .popup td.left { background
    -image: url(/images/bubble-4.png); }
    .popup td.right { background
    -image: url(/images/bubble-5.png); }
    .popup td#bottomleft { background
    -image: url(/images/bubble-6.png); }
    .popup td.bottom { background
    -image: url(/images/bubble-7.png); text-align: center;}
    .popup td.bottom img { display: block; margin: 
    0 auto; }
    .popup td#bottomright { background
    -image: url(/images/bubble-8.png); }

    .popup table.popup
    -contents {
        font
    -size: 12px;
        line
    -height: 1.2em;
        background
    -color: #fff;
        color: #
    666;
        font
    -family: "Lucida Grande""Lucida Sans Unicode""Lucida Sans", sans-serif;
        }

    table.popup
    -contents th {
        text
    -align: right;
        text
    -transform: lowercase;
        }
        
    table.popup
    -contents td {
        text
    -align: left;
        }

    然后給需要?dú)馀萏崾镜募由鲜髽?biāo)事件:
     <span class="l1" onmouseover="Element.show('content_<%=o.id%>')" onmouseout="Element.hide('content_<%=o.id%>')"><%=article_link_to(o.title,o.id)%></span>



    二、繼續(xù)改進(jìn)
    氣泡提示的外圍HTML表格代碼可以改由javascript來(lái)動(dòng)態(tài)生成,這樣可以縮小一些頁(yè)面的總HTML大小。

    HTML頁(yè)面代碼改為:
    <span id="content_<%=o.id%>" style="display:none"><%=o.content%></span>
    其他想法:本來(lái)打算把文章內(nèi)容(氣泡顯示的內(nèi)容),直接傳入javascript函數(shù)showPopup里。但由于其字符串較復(fù)雜,需要對(duì)一些特殊字符進(jìn)行轉(zhuǎn)義才可以當(dāng)成字符串傳入,而轉(zhuǎn)義需要通寫Rails方法來(lái)實(shí)現(xiàn),大量的字符搜索替換恐怕會(huì)增加服務(wù)器的負(fù)擔(dān)。所以這里還是用一個(gè)html元素暫存氣泡內(nèi)容。


    然后給需要?dú)馀萏崾镜募由鲜髽?biāo)事件。
        <span class="l1" onmouseover="showPopup('content_<%=o.id%>',event);" onmouseout="hidePopup()"><%=article_link_to(o.title,o.id)%></span>

    CSS的代碼不變。

    寫兩個(gè)javascript函數(shù):
    function showPopup(element_id,event){
      
    var div = createElement("div");  
      div.id 
    = "popup";
      
    //div.style.display="none";
      var popup = $(element_id);
      
    //取得鼠標(biāo)的絕對(duì)坐標(biāo)
      var evt = event ? event : (window.event ? window.event : null);  
      
    var x = Event.pointerX(evt)+5;
      
    var y = Event.pointerY(evt)+5;
      div.innerHTML
    ='\
            
    <table style="top:' + y + 'px; left:' + x + 'px;" class="popup">\
              
    <tbody>\
                
    <tr>\
                  
    <td class="corner" id="topleft"></td>\
                  
    <td class="top"></td>\
                  
    <td class="corner" id="topright"></td>\
                
    </tr>\
                
    <tr>\
                  
    <td class="left"></td>\
                  
    <td><table class="popup-contents">\
                    
    <tbody>\
                        
    <tr>\
                          
    <td>+ popup.innerHTML + '</td>\
                        
    </tr>\
                    
    </tbody>\
                  
    </table></td>\
                  
    <td class="right"></td>\
                
    </tr>\
                
    <tr>\
                  
    <td id="bottomleft" class="corner"></td>\
                  
    <td class="bottom"><!--<img src="/images/bubble-tail2.png" alt="popup tail" height="29" width="30">--></td>\
                  
    <td class="corner" id="bottomright"></td>\
                
    </tr>\
              
    </tbody>\
            
    </table>';
      document.body.appendChild(div);
      
    //Element.show("popup");
    }

    function hidePopup(){
      Element.remove(
    "popup");
    }

    function createElement(element) {
        if (typeof document.createElementNS != 'undefined') {
            return document.createElementNS('http://www.w3.org/1999/xhtml', element);
        }
        if (typeof document.createElement != 'undefined') {
            return document.createElement(element);
        }
        return false;
    }


    在javascript中漸顯Effect.Appear有一點(diǎn)問(wèn)題,所以就沒(méi)再用。

    效果如下圖所示:






    posted on 2007-07-31 15:32 陳剛 閱讀(4356) 評(píng)論(7)  編輯  收藏 所屬分類: Rails&Ruby

    評(píng)論

    # re: 用AJAX實(shí)現(xiàn)氣泡提示  回復(fù)  更多評(píng)論   

    喜歡
    2007-09-04 13:32 | yukui

    # re: 用AJAX實(shí)現(xiàn)氣泡提示  回復(fù)  更多評(píng)論   

    可是你寫的不夠詳細(xì)啊,我看的不是很明白啊!能不能寫的更加清楚一些啊,老兄!!!!!!
    2007-09-07 15:28 | xiaowei

    # re: 用AJAX實(shí)現(xiàn)氣泡提示  回復(fù)  更多評(píng)論   

    確實(shí)不夠詳細(xì),按照您的說(shuō)法做不成啊。o是什么對(duì)象?article_link_to是什么?
    2007-09-11 14:41 | guest

    # re: 用AJAX實(shí)現(xiàn)氣泡提示  回復(fù)  更多評(píng)論   

    原來(lái)是差了一個(gè)prototype.js,大家如果有再使用這個(gè)的時(shí)候,不要忘了找一個(gè)prototype.js導(dǎo)入哦。謝謝樓主。東西很不錯(cuò)!
    2007-09-11 16:23 | guest

    # re: 用AJAX實(shí)現(xiàn)氣泡提示  回復(fù)  更多評(píng)論   

    請(qǐng)問(wèn)能夠?qū)懙酶敿?xì)一點(diǎn)么?就像o.id之類的都是怎么來(lái)的?看不懂啊
    2007-10-17 17:07 | chengshuai

    # re: 用AJAX實(shí)現(xiàn)氣泡提示  回復(fù)  更多評(píng)論   

    如果方便的話能麻煩您把您文章中的源碼給我發(fā)一下么?我的郵箱
    chengshuai@yahoo.cn
    謝謝了!
    2007-10-17 17:08 | chengshuai

    # re: 用AJAX實(shí)現(xiàn)氣泡提示  回復(fù)  更多評(píng)論   

    如果方便的話能麻煩您把您文章中的源碼給我發(fā)一下么?我的郵箱
    lifuyun023@163.com
    謝謝了!
    2010-03-02 12:00 | 云中深海
    主站蜘蛛池模板: 亚洲av最新在线网址| 一区二区在线视频免费观看| 狠狠色婷婷狠狠狠亚洲综合| 免费无码A片一区二三区| a级片免费在线观看| 在线观看亚洲免费视频| 国产婷婷综合丁香亚洲欧洲| 亚洲高清在线播放| 亚洲日韩中文无码久久| 亚洲国产精品成人AV无码久久综合影院| 国产精品视频永久免费播放| 91精品国产免费| 日本免费高清视频| 国产性生大片免费观看性| 免费看一级高潮毛片| 在线观看国产一区亚洲bd| 国产亚洲玖玖玖在线观看| 亚洲伊人久久大香线蕉影院| 久久亚洲AV成人出白浆无码国产| 亚洲精品美女久久777777| 亚洲精品视频在线观看你懂的| 国产在线观看免费不卡| 浮力影院第一页小视频国产在线观看免费 | 亚洲Av综合色区无码专区桃色 | 成人一区二区免费视频| 无码AV动漫精品一区二区免费 | 免费看美女让人桶尿口| 成人a视频片在线观看免费| 大学生一级毛片免费看| 日本妇人成熟免费中文字幕| 18禁止看的免费污网站| 最近免费视频中文字幕大全| 青青草无码免费一二三区| 久久w5ww成w人免费| 四虎在线最新永久免费| 无码一区二区三区免费视频| 免费国产黄线在线观看| 好吊妞788免费视频播放| 国产精品久久香蕉免费播放| 四虎永久精品免费观看| 亚洲日韩中文字幕日韩在线|