1. 程式人生 > >模仿bootstrap做的 js tooltip (新增滑鼠跟隨功能)

模仿bootstrap做的 js tooltip (新增滑鼠跟隨功能)

主要思路:

使用jquery hover方法,當進入時顯示tooltip,移出時隱藏tooltip
當設定為滑鼠跟隨時,使用mousemove事件顯示tooltip
根據tooltip顯示位置設定,計算tooltip應顯示位置

使用方法:

<span class="ztip" title="hello tooltip">普通Tooltip</span>
<span class="ztip" title="#divInfo">HTML內容</span> (獲取divInfo的內容顯示)
<span class="ztip ztip-track" title="hello tooltip track">滑鼠跟蹤Tooltip</span>
<span class="ztip" title="hello tooltip" data-ztip-arrow="top">top</span>
<span class="ztip" title="hello tooltip" data-ztip-arrow="bottom">bottom</span>
<span class="ztip" title="hello tooltip" data-ztip-arrow="left">left</span>
<span class="ztip" title="hello tooltip" data-ztip-arrow="right">right</span>

程式碼如下:

  1 <!DOCTYPE html>
  2 <html lang="zh-CN">
  3 <head>
  4 <meta charset="utf-8">
  5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6 <meta name="renderer" content="webkit">
  7 <meta name="viewport" content="width=device-width, initial-scale=1"
> 8 <title>JS tooltip</title> 9 <style> 10 /* css style */ 11 body{ 12 width:1000px; 13 margin:10px auto; 14 } 15 .ztip{ 16 color:blue; 17 } 18 #ztip{ 19 display:none; 20 position:absolute; 21 background-color:#000; 22 color:#fff; 23
padding:3px 5px; 24 font-size:12px; 25 border-radius:3px; 26 font-family:"Courier New" consolas; 27 display: inline-block; 28 text-align:center; 29 } 30 #ztip:after { 31 content:''; 32 position: absolute; 33 width: 0; 34 height: 0; 35 border-color: transparent; 36 border-style: solid; 37 } 38 #ztip.top:after { 39 bottom: 0; 40 left: 50%; 41 margin-left: -5px; 42 margin-bottom: -5px; 43 border-width: 5px 5px 0; 44 border-top-color: #000; 45 } 46 #ztip.bottom:after { 47 top: 0; 48 left: 50%; 49 margin-left: -5px; 50 margin-top: -5px; 51 border-width: 0 5px 5px; 52 border-bottom-color: #000; 53 } 54 #ztip.left:after { 55 top: 50%; 56 right: 0; 57 margin-top: -5px; 58 margin-right: -5px; 59 border-width: 5px 0 5px 5px; 60 border-left-color: #000; 61 } 62 #ztip.right:after { 63 top: 50%; 64 left: 0; 65 margin-top: -5px; 66 margin-left: -5px; 67 border-width: 5px 5px 5px 0; 68 border-right-color: #000; 69 } 70 #ztip.track{ 71 text-align:left; 72 } 73 #ztip.track:after { 74 display:none; 75 } 76 </style> 77 <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> 78 </head> 79 <body> 80 <h1 style="text-align:center;">JS tooltip</h1> 81 82 <div> 83 Tight pants next level keffiyeh you probably haven't heard of them. 84 <span class="ztip" title="#divInfo">HTML內容</span> 85 booth beard raw denim letterpress vegan messenger bag stumptown. 86 Farm-to-table seitan, mcsweeney's 87 <span class="ztip" title="hello tooltip">普通Tooltip</span> 88 sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. 89 Beard stumptown, cardigans banh mi lomo 90 <span class="ztip ztip-track" title="hello tooltip track">滑鼠跟蹤Tooltip</span> 91 . Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really 92 <span class="ztip" title="hello tooltip" data-ztip-arrow="top">top</span> 93 <span class="ztip" title="hello tooltip" data-ztip-arrow="bottom">bottom</span> 94 <span class="ztip" title="hello tooltip" data-ztip-arrow="left">left</span> 95 <span class="ztip" title="hello tooltip" data-ztip-arrow="right">right</span> 96 artisan whatever keytar, scenester <br>farm-to-table 97 <span class="ztip" data-ztip-width="100" title="hello tooltip<br>hello tooltip">折行Tooltip</span> 98 Austin twitter handle freegan cred raw denim single-origin coffee viral. 99 </div> 100 101 <div id="divInfo" style="display:none;"> 102 hello <b>hello</b><br> 103 <span style="color:red;">紅色內容</span> 104 </div> 105 106 <script> 107 $(function(){ 108 var ztipEl = null; 109 $('.ztip').hover(function(){ 110 // 顯示tooltip 111 112 // 建立顯示物件 113 if (!ztipEl) 114 { 115 ztipEl = $('<div id="ztip"></div>'); 116 $('body').append(ztipEl); 117 } 118 119 // 獲取內容 120 var tip = $(this).data('ztip'); 121 if (tip == '') return; 122 if (tip.indexOf('#') === 0) 123 { 124 tip = $(tip).html(); 125 } 126 else 127 { 128 tip = tip.replace(/\\n/, '<br>'); 129 tip = tip.replace(/\n/, '<br>'); 130 } 131 ztipEl.html(tip); 132 133 // 是否滑鼠跟隨 134 if ($(this).hasClass('ztip-track')) 135 { 136 ztipEl.addClass('track'); 137 } 138 else 139 { 140 ztipEl.removeClass('track'); 141 var arrowClass = $(this).data('ztip-arrow')||'top'; 142 ztipEl.removeClass('top').removeClass('bottom').removeClass('left').removeClass('right'); 143 ztipEl.addClass(arrowClass); 144 var top = 0, left = 0; 145 if (arrowClass == 'top') 146 { 147 top = $(this).offset().top - ztipEl.outerHeight() - 5; 148 left = $(this).offset().left + $(this).width() / 2 - ztipEl.outerWidth() / 2; 149 } 150 else if (arrowClass == 'bottom') 151 { 152 top = $(this).offset().top + $(this).height() + 5; 153 left = $(this).offset().left + $(this).width() / 2 - ztipEl.outerWidth() / 2; 154 } 155 else if (arrowClass == 'left') 156 { 157 top = $(this).offset().top + $(this).height() / 2 - ztipEl.outerHeight() / 2; 158 left = $(this).offset().left - ztipEl.outerWidth() - 5; 159 } 160 else if (arrowClass == 'right') 161 { 162 top = $(this).offset().top + $(this).height() / 2 - ztipEl.outerHeight() / 2; 163 left = $(this).offset().left + $(this).width() + 5; 164 } 165 ztipEl.css({ 166 'top': Math.round(top) + 'px', 167 'left': Math.round(left) + 'px', 168 }); 169 ztipEl.show(); 170 } 171 }, function(){ 172 // 隱藏 173 ztipEl.hide(); 174 }).mousemove(function(e){ 175 // 跟隨滑鼠移動 176 if (!ztipEl.hasClass('track')) return; 177 e = e || window.event; 178 var x = e.pageX || e.clientX + document.body.scroolLeft; 179 var y = e.pageY || e.clientY + document.body.scrollTop; 180 var top = y + 10; 181 var left = x + 5; 182 ztipEl.css('top', top + 'px'); 183 ztipEl.css('left', left + 'px'); 184 ztipEl.show(); 185 }).each(function(){ 186 // 獲取顯示內容,並移除title 187 $(this).data('ztip', $(this).attr('title')); 188 $(this).attr('title', ''); 189 }); 190 }); 191 </script> 192 193 </body>

相關推薦

模仿bootstrapjs tooltip (新增滑鼠跟隨功能)

主要思路: 使用jquery hover方法,當進入時顯示tooltip,移出時隱藏tooltip當設定為滑鼠跟隨時,使用mousemove事件顯示tooltip根據tooltip顯示位置設定,計算tooltip應顯示位置 使用方法: <span class="ztip" title="hello

bootstrap+vue.js實現簡單的購物車功能

因為此前做過一段時間Django的後端開發,前端方面的知識一直非常欠缺,總覺得前端的知識太繁雜,無從下手。最近工作比較閒,就研究了一陣子,從最基礎的html、js開始看,這個星期學習了一下vue.js,覺得真是棒極了。這篇是使用bootstrap+vue.js實

原生js如何一個鏈式運動,JavaScript怎麼滑鼠跟隨效果

<!DOCTYPE html>   <html>       <head>           <meta charset="utf-8" />           <title></title>           <style

JS特效教程:給網站新增滑鼠點選彈出指定漢字特效

網站新增滑鼠點選彈出指定漢字特效,就是滑鼠點選站點任何位置,都會隨機彈出我們指定的一組漢字中的一個。比如指定“文明,自由,民主,公正,和諧”等,點選滑鼠時就會隨機顯示這一組的某個詞語,見下圖: 給網站新增滑鼠點選彈出指定漢字特效的操作辦法 這個特效不單單適用於 WordPress 部落

滑鼠跟隨效果 vue或者js通用

this.$refs.tooltip.getBoundingClientRect() => 用於獲取某個元素相對於視窗的位置集合。集合中有top, right, bottom, left等屬性。 滑鼠跟隨:e.clientX - this.$refs.tooltip.getBoundingClient

js滑鼠跟隨事件及位置獲取

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <sc

如何 給 文章 新增 標籤 以及 如何 讓 js 中的資料 跟隨 form 表單 一起提交到 後臺

設計思路 檔案和,標籤的關係,多對多的關係。 需要一個標籤表,和,文章標籤中間表。 文章和,標籤的關係,多對多的關係。 一個標籤對應多篇文章,一篇文章對應多個標籤 。 標籤,增刪改查,可以在後臺管理。 這個文章標籤中間表,是如果1篇文章有幾個標籤,就有幾條資料,只是對應同一個文章id

js給div新增滑鼠懸停事件

新任務:給表格上的某列新增滑鼠懸浮事件 但是表格是由omGrid生成的,無法修改 所以只能先獲取,再新增事件 先用firebug看清表格結構:\ 是div class="innerCo1 " class還是有空格的,為此還糾結了下.. js程式碼: var obj =

js實現滑鼠跟隨效果

在平時開發中,實現滑鼠跟隨效果並不是很常見,但是在一些個人部落格和個人網站中這個效果有時候會用到 有些遊戲網站中也會用到這個效果。這裡分享的是一個例子。程式碼如下,, 注意我這裡跟隨的是一個圖片,也可以根據需要把圖片改成自己需要的 <!DOCTYPE html>

為網頁背景新增一個跟隨滑鼠的動態變幻線條

這是一個基於canvas繪製的網頁背景效果。 特點: 1.不依賴任何框架或者內庫,如不依賴 jQuery; 2.使用原生的 javascript,只有1.6 kb,如果開啟 gzip,可以更小; 3.使用外鏈非常容易實現,配置簡單,即使你不是web開發者,也能簡單

Bootstrapjs插件之輪播(carousel)

使用 設置 jpg div idt alt code str ini 輪播請查看下面演示樣例,基本已經涵蓋最經常使用的一個輪播 <!DOCTYPE html> <html lang="en"> <head> <meta

jquery+bootstrap一個開關(互斥選擇)

utf jquer class role 選擇 span chrome query back 知識點:js中的return 不能使js程序停止或者跳出執行,會繼續往下執行。要想讓js程序停止或者跳出 可以用 return false 就可以了。 代碼: <!-----

Bootstrap簡單的網站首頁

Bootstrap 簡單網站首頁 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-

Bootstrap fileinput.js,最好用的檔案上傳元件

本篇介紹如何使用bootstrap fileinput.js(最好用的檔案上傳元件)來進行圖片的展示,上傳,包括springMVC後端檔案儲存。 一、demo 二、外掛引入 <link type="text/css" rel="stylesheet" h

BootStrop--bootstrap-paginator.js 分頁 外掛 的使用

樣式圖 引入資源 <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.min.js"></script> <link type="text

js原生新增clsss

function hasClass(element,Hclass){ //判斷是否有 '要新增的class' var patt=new RegExp(Hclass) return patt.test(element.className) } function addClass(e

Vue.js less 新增支援和遇到的問題

本文出自: http://blog.csdn.net/wyk304443164 用的 vue-cli 腳手架 複製的 "less": "^2.7.1", "less-loader": "^2.2.3", 這個安裝之後。彈出 DeprecationWa

js動態新增表格和刪除表格

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script language="JavaS

js動態新增select標籤的option

js程式碼: var featureLayerURLTest=[["http://192.168.15.174:6080/arcgis/rest/services/Sample/GQYDGH/FeatureServer/0","線圖層1"]]; function createSelectOp

js怎樣新增、移除、移動、複製、建立和查詢節點

參考:http://www.w3school.com.cn/xmldom/dom_nodes_get.asp (1)建立新節點 var para=document.createElement(“p”); //建立新的 元素 var node=document.createTextN