2016年8月7日 星期日

BS3 Tooltips - Part 2

BS3 Tooltips - Part 2

簡介

這篇解說如何用 Javascript 直接建立 BS3 的 tooltip。用法很簡單,就如同在 jQuery 中建立一個元件的方式一樣,建立元件時,傳入的參數必須是一個 Javascript 的物件,物件中包含所有要設定的參數及其值,請參考文章下方的 Javascript 程式碼。

以下為各參數及其允許值,以下大多數的參數亦可以用 data-* 的自訂屬性在 HTML 程式碼中設定,只有少數幾個屬性,當其值為 Javascript 物件時,受限於 HTML5 對自訂屬性的限制,是不能在 data-* 中設定的。

animation
Boolean 值, 設定為 true 時,提示框顯示時有動畫效果,反之則無。
delay
允許值為一 Javascript 物件,如 {show: 500, hide:300} 設定顯示及取消時的歷時,單位為 ms。允許值亦可為一數值,為數值時,顯示及取消歷時都同樣設定為此數值。
html
Boolean 值,設定為 true 時,允許在 title 參數中置入 html 程式碼並顯示,反之則只能使用一般文字。
placement
值可為字串或函式。若為字串,允許值為 "top", "right", "bottom", "left" 及 "auto",若為函式,則由函式運算後傳回代表位置的字串值。
selector
允許值為 CSS3 篩選器的字串值,用以委任 (delegate) 要顯示提示框的元件;這個屬性值只用在顯示提示框的元件為動態加入 DOM 文件中的時候才有意義。
title
依 html 屬性的設定,允許值為 html 字串或純文字。提示框的內容。如果在 HTML 程式碼中已設定 title 屬性的值,則優先以其設定值為提示框的內容,如果不曾設定,才會以此處的設定值做為提示框的內容。
trigger
允許值為字串,設定顯示提示框的條件。允許值為 "hover"(預設), "click", "focus" 及 "manual"。
container
允許值為 CSS3 的篩選字串。將提示框的 DOM 元件指派給特定的元件。使用這個屬性設定時,螢幕上是看不出任何變化的,必須打開「開發者工具」檢視元件 (element) 頁面才能看出有何不同,提示框的 DOM 元件會出現在 container 指定的內容中。我到目前還想不出這有什麼作用。
template
允許值為字串,提示框的 html 範本,預設為 ''。程式設計師可以依需要修改範本內容。
viewport
允許值為一個 Javascript 物件。用來規範提示框顯示時的位置,這個屬性的使用時的行為模式比較複雜,最好寫個程式好好測一下。Javascript 物件中的屬性有二:
selector
允許值為 CSS3 籂選器的字串值,限制提示框所顯示的範圍為篩選元件所佔據的空間;預設值為 body。
padding
允許值只能為正整數值,單位為 px。設定提示框內容的偏移量,當 placement 為 "top" 及 "bottom" 時,提示框的內容向左偏移;當 placement 為 "left" 及 "right" 時,提示框的內容向下偏移。這樣,可以有限度的調整箭頭和提示框的相對位置。偏移量則由 viewport 中的 selector 屬性中篩選的元件作為基準。

範例

CSS

<style>
html {
    width:100%;
    height:100%;
}
body {
    margin: 0 auto;
    max-width: 1000px;
    padding: 20px;
}
#demo {
    width: 400px;
    height: 400px;
    padding: 50px;
}
</style>

#demo{} 將介面元件略向螢幕中心移動,以便顯示提示框。

HTML

<body>
    
</body>

在 HTML 程式碼中建立一個有提示框的按鈕,不論是用 HTML 建立或是用 Javascript 建立,data-toggle="tooltip" 這個屬性是一定要設定的。

Script

<script>
"use strict"
$(function(){
    $(document).ready(function(){
        var opts ={
            animation: true,
            delay: {
                show: 500,
                hide: 300
            },
            html: true,
            template: '',
            title: "

Here is a large tooltip

", trigger: "click", placement: "bottom", viewport:{ selector: "#demo", padding: 0 } }; $('[data-toggle="tooltip"]').tooltip(opts); }); }); </script>

第 12 行,用 style 屬性變更了提示框箭頭和內容的底色和文字的顏色。這裡要特別注意,因為箭頭是用 border 做出來的,因此四個方向的箭頭只㤦用了 border 邊線的一邊;因此,當 placement 改變時,要相對應改變 border-*-color 的屬性名稱。

沒有留言:

張貼留言