另類提示框

来源:http://www.cnblogs.com/giggle/archive/2016/04/11/5375561.html
-Advertisement-
Play Games

我這裡說的提示框,就是當用戶將滑鼠移動到需要提示的圖標時,就會在這圖標的位置出現一個提示框了。 咦,那這有什麼好說的呢? 如果你來實現這一效果,你會怎麼做呢? 初步的做法嘛,就是利用PS製作一張提示框內容區域的png圖片和一張指向位置的箭頭png圖片,然後利用這張圖片作為提示背景,裡面輸入指定內容唄 ...


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

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

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

初步的做法嘛,就是利用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);

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 移動設備已經成為在任何時間的一部分工作。在小型和中型組織人員使用個人平板電腦和智能手機業務。開源社區在這個移動應用工作的增長起到了關鍵作用。有許多開放源代碼的應用程式,可以幫助提高你的創造力。今天我們所列舉的10大開源工具,你會在工作中找到有用的。 1.Convertigo 這是用於開發和部署應用程 ...
  • PC的早期階段,也是傳統的C/S模式居多,後進化到B/S模式,並產生了SaaS、雲計算等概念和應用。從客戶端進化到瀏覽器最大好處是客戶端無需更新,減少了大量的更新成本,只需伺服器端進行更新。這也是為什麼現在流行webQQ, google docs, photoshop網頁版的原因。現在同時很多軟體廠 ...
  • 瀏覽器的事件模型 DOM第0級事件模型 他的屬性提供了關於當前正被處理的已觸發事件的大量信息。這包括一些細節,比如在哪個元素上觸發的事件、滑鼠事件的坐標以及鍵盤事件中單擊了哪個鍵。 當觸發 dom 樹中一個元素上的事件時,事件模型會檢查這個元素是否已經創建了特定的事件處理器。如果是,就會調用已創建的 ...
  • 序言 在今天,JavaScript已經成為了網頁編輯的核心。尤其是過去的幾年,互聯網見證了在SPA開發、圖形處理、交互等方面大量JS庫的出現。 如果初次打交道,很多人會覺得js很簡單。確實,對於很多有經驗的工程師,或者甚至是初學者而言,實現基本的js功能幾乎毫無障礙。但是JS的真實功能卻比很多人想象 ...
  • 選擇器的優先順序關係到元素應用哪個樣式。在CSS2.1的規範(http://www.w3.org/TR/2009/CR-CSS2-20090908/cascade.html#specificity)中是這樣描述的: 如果聲明來自於“style”屬性,而不是帶有選擇器的規則,則記為 1,否則記為 0 ( ...
  • 摘要: 最近閑來無事就把以前做的cordova項目整理了下,發現網上很少有詳細完整的配置教程,所以自己就總結了下分享給大家。 項目地址:https://github.com/baixuexiyang/hybrid 環境搭建: 1.安裝node.js下載安裝node.js,https://nodejs ...
  • 雖然jquery的較新的api已經很好用了, 但是在實際工作還是有做二次封裝的必要,好處有:1,二次封裝後的API更加簡潔,更符合個人的使用習慣;2,可以對ajax操作做一些統一處理,比如追加隨機數或其它參數。同時在工作中,我們還會發現,有一些ajax請求的數據,對實時性要求不高,即使我們把第一次請... ...
  • 一、HTML 元素 HTML 元素以開始標簽起始 HTML 元素以結束標簽終止 元素的內容是開始標簽與結束標簽之間的內容 某些 HTML 元素具有空內容(empty content) 空元素在開始標簽中進行關閉(以開始標簽的結束而結束) 大多數 HTML 元素可擁有屬性 嵌套的 HTML 元素 HT ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...