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 的屬性名稱。

沒有留言:
張貼留言