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

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

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

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    用AJAX實現氣泡提示


                                        文/陳剛 www.chengang.com.cn (轉載請注明)

    這個效果的實現是以網站http://www.panic.com/coda/為模仿對象(選擇Download可以看到氣泡提示效果),然后重新用Rails中的prototype.js來實現。

    HTML頁面的代碼:
    <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的代碼(涉及到的相關圖片: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;
        }

    然后給需要氣泡提示的加上鼠標事件:
     <span class="l1" onmouseover="Element.show('content_<%=o.id%>')" onmouseout="Element.hide('content_<%=o.id%>')"><%=article_link_to(o.title,o.id)%></span>



    二、繼續改進
    氣泡提示的外圍HTML表格代碼可以改由javascript來動態生成,這樣可以縮小一些頁面的總HTML大小。

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


    然后給需要氣泡提示的加上鼠標事件。
        <span class="l1" onmouseover="showPopup('content_<%=o.id%>',event);" onmouseout="hidePopup()"><%=article_link_to(o.title,o.id)%></span>

    CSS的代碼不變。

    寫兩個javascript函數:
    function showPopup(element_id,event){
      
    var div = createElement("div");  
      div.id 
    = "popup";
      
    //div.style.display="none";
      var popup = $(element_id);
      
    //取得鼠標的絕對坐標
      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有一點問題,所以就沒再用。

    效果如下圖所示:






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

    評論

    # re: 用AJAX實現氣泡提示  回復  更多評論   

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

    # re: 用AJAX實現氣泡提示  回復  更多評論   

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

    # re: 用AJAX實現氣泡提示  回復  更多評論   

    確實不夠詳細,按照您的說法做不成啊。o是什么對象?article_link_to是什么?
    2007-09-11 14:41 | guest

    # re: 用AJAX實現氣泡提示  回復  更多評論   

    原來是差了一個prototype.js,大家如果有再使用這個的時候,不要忘了找一個prototype.js導入哦。謝謝樓主。東西很不錯!
    2007-09-11 16:23 | guest

    # re: 用AJAX實現氣泡提示  回復  更多評論   

    請問能夠寫得更詳細一點么?就像o.id之類的都是怎么來的?看不懂啊
    2007-10-17 17:07 | chengshuai

    # re: 用AJAX實現氣泡提示  回復  更多評論   

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

    # re: 用AJAX實現氣泡提示  回復  更多評論   

    如果方便的話能麻煩您把您文章中的源碼給我發一下么?我的郵箱
    lifuyun023@163.com
    謝謝了!
    2010-03-02 12:00 | 云中深海
    主站蜘蛛池模板: 日本免费人成视频播放| 91九色老熟女免费资源站| 好爽好紧好大的免费视频国产| 亚洲白色白色在线播放| 9277手机在线视频观看免费| 777亚洲精品乱码久久久久久| 免费观看在线禁片| 亚洲AV永久纯肉无码精品动漫| 中文字幕免费观看视频| 伊伊人成亚洲综合人网7777| 97国免费在线视频| 黄色视屏在线免费播放| 国产亚洲视频在线播放| 特级做A爰片毛片免费看无码 | 国语成本人片免费av无码| 亚洲av专区无码观看精品天堂| 91免费资源网站入口| 亚洲欧美成人综合久久久| 韩国欧洲一级毛片免费 | 成人国产网站v片免费观看| 自拍偷自拍亚洲精品被多人伦好爽 | 4hu四虎最新免费地址| 亚洲最大无码中文字幕| 亚洲国产精品成人| 99视频在线免费观看| 亚洲欧洲精品一区二区三区| 一个人免费观看在线视频www| 男男gvh肉在线观看免费| 久久精品国产亚洲一区二区| jjizz全部免费看片| 爱情岛论坛亚洲品质自拍视频网站| 中文字幕日韩亚洲| **aaaaa毛片免费同男同女| 亚洲国产AV一区二区三区四区| 在线观看亚洲精品福利片| 3d动漫精品啪啪一区二区免费| 亚洲乱码无人区卡1卡2卡3| 区久久AAA片69亚洲| 好男人www免费高清视频在线| 一区二区3区免费视频| 亚洲免费闲人蜜桃|