另類提示框


我這里說的提示框,就是當用戶將鼠標移動到需要提示的圖標時,就會在這圖標的位置出現一個提示框了。

咦,那這有什么好說的呢?

如果你來實現這一效果,你會怎么做呢?

初步的做法嘛,就是利用PS制作一張提示框內容區域的png圖片和一張指向位置的箭頭png圖片,然后利用這張圖片作為提示背景,里面輸入指定內容唄。

恩,想法簡單粗暴,那我們就來初步實現以下吧。

首先你得有兩張上述說的圖片,圖片制作結果如下:

     

      圖一                圖二         

好了,圖片有了,接下來,就是將這兩張圖片作為背景。

我的想法是,兩張圖片利用兩個div,將圖二(三角形圖片)嵌套在圖一(矩形方框)里,然后達到這一提示框的效果。

<!DOCTYPE html>
    <head>
        <title>tip</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <style>
            #liuTip {
                background:url(img/title_back.png) 0 10px no-repeat;<!--圖一:內容區-->
                width:220px;
                height:112px;
                overflow:auto;
                position:absolute;
                display:block;
            }
            #liuTip div {
                background:url(img/title_arrow.png) 0 0 no-repeat;<!--圖二:箭頭區-->
                width:40px;
                height:11px;
            }
        </style>
    </head>
    <body>
        <!--提示框-->
        <div id="liuTip">
            <div></div>
        </div>
        <!--提示框結束-->
    </body>
</html>

運行代碼,效果如下:

        圖三

這樣,一個簡單的提示框就出來了。

但是,大家發現沒,這樣子的話,內容框(圖一)是恆定不變的哦。

也就是說,你每次用一個提示框,你就得去制作一張單獨的內容框(圖一),以符合特定的內容。

哎,尼瑪,是不是煩了點,如果我想寫一個適合於所有內容的提示框呢?

那我們就一起來改善改善它。

還記得大明湖畔的薇薇么,background有個repeat呢。

是不是知道了點撒。

想法:將提示框拆分成上、中、下三個區域,上下區域不變,中間區域拆分成一個片段,高度隨內容區域的多少,而自動變換。

尼瑪,這到底是什么意思?

見下圖:

        圖四

        圖五

        圖六 

這樣你就可以利用repeat-y實現解決不必為單獨的內容制作單獨的body框的問題了。

但是,有木有發現,如果我將其拆分成上中下三個區域,高度隨內容變大后,會很難看滴。

所以,我將其拆分成左中右三個區域,這樣不管內容變多少,寬度隨之改變,一樣美觀的。

圖片見下:

                    

  圖七      圖八      圖九                    

哈哈,好了,拆分后,再組裝的思想,就是這樣了。最后利用repeat-x就可以實現寬度隨內容而變。

下面是實現代碼:

<!DOCTYPE html>
    <head>
        <title>tip2</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <style>
            .tip {
                overflow:hidden;
            }
            .tipHead {
                height:77px;
                width:16px;
                background:url(localizerLeft.gif) no-repeat;<!--圖七:頭-->
                float:left;
            }
            .tipBody {
                height:77px;
                width:200px;
                background:url(localizerMid.gif) repeat-x;<!--圖八:腰-->
                float:left;
            }
            .tipTail {
                height:77px;
                width:10px;
                background:url(localizerRight.gif) no-repeat;<!--圖九:尾-->
                float:left;
            }
        </style>
    </head>
    <body>
        <div class="tip">
            <div class="tipHead"></div>
            <div class="tipBody"></div>
            <div class="tipTail"></div>
        </div>
    </body>
</html>

運行上述代碼,結果如下:

 

        圖十

不知道你有沒有看上述的代碼,建議你看一看,不然講不下去咯。。。

上述代碼看過后,發現有點不爽。

提示框應該會經常用吧,那干嘛不把它封裝成一個插件呢!!這樣就不必每次用它,都去寫一遍或者copy一下,絕對影響效率,心情啊!!!

目前用的jQuery比較多,所以這里就初步講講jQuery插件封裝咯。

思路:

1、  提供相應屬性,讓操作者可以改變;如果操作者沒有改變,使用默認屬性。

2、  利用提供的屬性,繪制出相對應的提示框。

詳情見下代碼:

(function ($){
  var tip = function( p, ths ){
  var _$ths = $(ths);
  var _$parent = _$ths.parent();
  _$ths = _$ths.detach(); 
  /*
    p合並自定義屬性,默認包括以下屬性設置:
      width 提示框內容區域的寬度,number
      content 提示框中的提示內容
  */
  p = $.extend({
      width: 200,
      content:'sample'
    }, p);
  /*
    Draw:繪制提示框的函數
    param: ths --> 提示框this
  */
  var Draw = function(){
    var children = '<div class="tipHead"></div>'
            +'<div class="tipBody">'+p.content+'</div>'
            +'<div class="tipTail"></div>';
    //將children加入到提示框中
    _$ths.append( children );
    //動態設置提示框的樣式和內容區域的寬度
    _$ths.addClass('tip').find('.tipBody').width( p.width );
    _$parent.append(_$ths);
  };//End_Draw
  return (function(){
      Draw();
      _$parent = null;
      _$ths = null;
    })();
  };
  /*
    $.fn.tip:提示框插件,用於提示用戶
    Param: property --> 自定義提示框的相關信息
  */
  $.fn.tip = function( property ) {
    tip( property, this );        
  };//End_$.fn.timeProcess  
})(jQuery);

 

拓展閱讀:

純CSS實現

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM