jquery滑鼠懸浮彈出帶有箭頭的tips效果
本章節分享一段程式碼例項,它實現了滑鼠懸浮彈出提示視窗效果。
這樣的效果使用非常的頻繁,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> .tip-wrap { position: absolute; display: none; } .tip-arr-a, .tip-arr-b { position: absolute; width: 0; height: 0; line-height: 0; border-style: dashed; border-color: transparent; } .antzone { margin:200px; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> (function ($) { var defaults = { dire: 12, w: 250, _x: 0, _y: 0, borderColor: '#FFBB76', bgColor: '#FFFCEF', color: '#FF0000', padding: [5, 10], arrWidth: 10, useHover: true, zIndex: 100000 }; $.fn.tips = function (opt) { var tip, opts = $.extend({}, defaults, opt); if (this[0]) { opts.tag = this; if (opts.useHover) { opts.tag.hover(function () { tip = new Tip(opts); tip.show(); }, function () { tip.close(); }); } else { tip = new Tip(opts); tip.show(); } return this; } }; function Tip(opts) { this.dire = opts.dire; this.width = opts.w; this.zIndex = opts.zIndex; this.borderColor = opts.borderColor; this.bgColor = opts.bgColor; this.color = opts.color; this.padding = opts.padding; this.arrWidth = opts.arrWidth; this.offsetX = opts._x; this.offsetY = opts._y; this.tag = opts.tag; this.msg = opts.msg; this.wrap = $('<div class="tip-wrap"></div>'); this.innerArr = $('<div class="tip-arr-a"></div>'); this.outerArr = $('<div class="tip-arr-b"></div>'); this.init(); }; Tip.prototype = { init: function () { var msg = this.tag.data('tipMsg'); if (!this.msg) { this.msg = msg; } this.createTemp(); }, createTemp: function () { var t = this; t.createWrap(); t.setPosition(); }, createWrap: function () { var t = this; t.wrap.html(t.msg); var wrapCSS = { width: t.width, border: '1px solid ' + t.borderColor, 'border-radius': '5px', background: t.bgColor, color: t.color, padding: t.getPadding() }; t.outerArr.css(t.getArrStyle(t.dire, t.arrWidth, t.borderColor)); t.innerArr.css(t.getArrStyle(t.dire, t.arrWidth, t.bgColor)); t.wrap.prepend(t.innerArr).prepend(t.outerArr).css(wrapCSS); $('body').append(t.wrap); }, setPosition: function () { var t = this; var posObj = t.getPos(t.dire, t.getPosition(t.tag), t.getPosition(t.wrap), t.arrWidth), pos = posObj.pos, innerPos = posObj.innerPos, outerPos = posObj.outerPos; t.wrap.css({ top: pos.y, left: pos.x }); t.innerArr.css({ top: innerPos.y, left: innerPos.x }); t.outerArr.css({ top: outerPos.y, left: outerPos.x }); }, getPadding: function () { var t = this, pad = '0px', padArr = t.padding, len = padArr.length; switch (len) { case 1: pad = padArr[0] + 'px'; break; case 2: pad = padArr[0] + 'px ' + padArr[1] + 'px'; break; case 3: pad = padArr[0] + 'px ' + padArr[1] + 'px ' + padArr[2] + 'px'; break; case 4: pad = padArr[0] + 'px ' + padArr[1] + 'px ' + padArr[2] + 'px ' + padArr[3] + 'px'; break; } return pad; }, getPosition: function (tag) { return { t: tag.offset().top, l: tag.offset().left, h: tag.outerHeight(), w: tag.outerWidth() }; }, getArrStyle: function (dir, width, color) { var style; switch (dir) { case 11: case 12: case 1: style = { 'border-bottom-style': 'solid', 'border-width': '0px ' + width + 'px ' + width + 'px', 'border-bottom-color': color }; break; case 2: case 3: case 4: style = { 'border-left-style': 'solid', 'border-width': width + 'px 0px ' + width + 'px ' + width + 'px', 'border-left-color': color }; break; case 5: case 6: case 7: style = { 'border-top-style': 'solid', 'border-width': width + 'px ' + width + 'px 0px', 'border-top-color': color }; break; case 8: case 9: case 10: style = { 'border-right-style': 'solid', 'border-width': width + 'px ' + width + 'px ' + width + 'px 0px', 'border-right-color': color }; break; } return style || {}; }, getPos: function (d, tagPos, pos, arrWidth) { var _pos, _innerPos, _outerPos, l = tagPos.l, t = tagPos.t, w = tagPos.w, h = tagPos.h, ww = pos.w, hh = pos.h; switch (d) { case 0: case 1: _pos = { x: l + w / 2 + arrWidth + 20 + 1 - ww, y: t + h + arrWidth }; _outerPos = { x: ww - 2 - 20 - arrWidth * 2, y: -arrWidth }; _innerPos = { x: ww - 2 - 20 - arrWidth * 2, y: -arrWidth + 1 }; break; case 2: _pos = { x: l - ww - arrWidth, y: t + h / 2 - arrWidth - 20 - 1 }; _outerPos = { x: ww - 2, y: 20 }; _innerPos = { x: ww - 2 - 1, y: 20 }; break; case 3: _pos = { x: l - ww - arrWidth, y: t + h / 2 - hh / 2 }; _outerPos = { x: ww - 2, y: (hh - 2) / 2 - arrWidth }; _innerPos = { x: ww - 2 - 1, y: (hh - 2) / 2 - arrWidth }; break; case 4: _pos = { x: l - ww - arrWidth, y: t + h / 2 + arrWidth + 20 + 1 - hh }; _outerPos = { x: ww - 2, y: hh - 2 - 20 - arrWidth * 2 }; _innerPos = { x: ww - 2 - 1, y: hh - 2 - 20 - arrWidth * 2 }; break; case 5: _pos = { x: l + w / 2 + arrWidth + 20 + 1 - ww, y: t - arrWidth - hh }; _outerPos = { x: ww - 2 - 20 - arrWidth * 2, y: hh - 2 }; _innerPos = { x: ww - 2 - 20 - arrWidth * 2, y: hh - 2 - 1 }; break; case 6: _pos = { x: l + w / 2 - ww / 2, y: t - arrWidth - hh }; _outerPos = { x: (ww - 2) / 2 - arrWidth, y: hh - 2 }; _innerPos = { x: (ww - 2) / 2 - arrWidth, y: hh - 2 - 1 }; break; case 7: _pos = { x: l + w / 2 - 20 - arrWidth, y: t - arrWidth - hh }; _outerPos = { x: 20, y: hh - 2 }; _innerPos = { x: 20, y: hh - 2 - 1 }; break; case 8: _pos = { x: l + w + arrWidth, y: t + h / 2 + arrWidth + 20 + 1 - hh }; _outerPos = { x: -arrWidth, y: hh - 2 - 20 - arrWidth * 2 }; _innerPos = { x: -arrWidth + 1, y: hh - 2 - 20 - arrWidth * 2 }; break; case 9: _pos = { x: l + w + arrWidth, y: t + h / 2 - hh / 2 }; _outerPos = { x: -arrWidth, y: (hh - 2) / 2 - arrWidth }; _innerPos = { x: -arrWidth + 1, y: (hh - 2) / 2 - arrWidth }; break; case 10: _pos = { x: l + w + arrWidth, y: t + h / 2 - arrWidth - 20 - 1 }; _outerPos = { x: -arrWidth, y: 20 }; _innerPos = { x: -arrWidth + 1, y: 20 }; break; case 11: _pos = { x: l + w / 2 - 20 - arrWidth, y: t + h + arrWidth }; _outerPos = { x: 20, y: -arrWidth }; _innerPos = { x: 20, y: -arrWidth + 1 }; break; case 12: _pos = { x: l + w / 2 - ww / 2, y: t + h + arrWidth }; _outerPos = { x: (ww - 2) / 2 - arrWidth, y: -arrWidth }; _innerPos = { x: (ww - 2) / 2 - arrWidth, y: -arrWidth + 1 }; break; default: _pos = { x: 0, y: 0 }; } return { pos: _pos, innerPos: _innerPos, outerPos: _outerPos }; }, show: function () { this.wrap.show(); }, close: function () { this.wrap.remove(); } }; })(jQuery); $(document).ready(function () { $(".antzone span").tips(); }) </script> </head> <body> <div class="antzone"> <span data-tip-msg="螞蟻部落">螞蟻部落</span> </div> </body> </html>
相關文章
- css滑鼠懸浮彈出說明層效果CSS
- css滑鼠懸浮小圖彈出大圖效果CSS
- jQuery滑鼠懸浮翻牌效果詳解jQuery
- jQuery滑鼠懸浮聚焦效果詳解jQuery
- 滑鼠懸浮小圖彈出大圖效果詳解
- css滑鼠懸浮tips效果程式碼例項CSS
- css3滑鼠懸浮小球彈性效果CSSS3
- jQuery 滑鼠懸浮連結彈出跟隨圖片詳解jQuery
- jQuery彈出帶有遮罩視窗效果jQuery遮罩
- 滑鼠懸浮彈出滑鼠跟隨層程式碼例項
- 滑鼠懸浮連結彈出提示程式碼例項
- CSS 滑鼠懸浮動畫暫停效果CSS動畫
- css滑鼠懸浮下拉選單效果CSS
- jQuery滑鼠懸浮當前圖片高亮其他圖片灰暗效果jQuery
- js特效 對話方塊 懸浮箭頭JS特效
- CSS帶有箭頭的對話方塊效果CSS
- CSS滑鼠懸浮行背景變色效果CSS
- css滑鼠懸浮div背景變色效果CSS
- 滑鼠懸浮div實現旋轉效果
- CSS3滑鼠懸浮元素放大效果CSSS3
- CSS滑鼠懸浮圖片動畫放大效果CSS動畫
- CSS3 帶有箭頭圓角效果CSSS3
- 滑鼠懸浮連結出現音效效果程式碼例項
- jQuery跟隨滑鼠移動的彈出層效果jQuery
- 自定義滑鼠懸浮連結彈出提示程式碼例項
- CSS帶有三角小箭頭的矩形效果CSS
- CSS3滑鼠懸浮環裝遮罩效果CSSS3遮罩
- CSS3滑鼠懸浮div旋轉效果CSSS3
- 滑鼠懸浮實現環形旋轉效果
- CSS3滑鼠懸浮動畫按鈕效果CSSS3動畫
- CSS3連結<a>滑鼠懸浮動畫效果CSSS3動畫
- 滑鼠懸浮評分效果程式碼例項
- CSS滑鼠懸浮圖片模糊切換效果CSS
- 滑鼠懸浮圖片實現翻轉效果
- 滑鼠懸浮圖片實現縮放效果
- jQuery實現的滑鼠懸浮和選中實現表格行背景變色效果jQuery
- 滑鼠懸浮於連結<a>之上出現提示文字效果程式碼
- 滑鼠懸浮實現連結背景變色效果