亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

屬于你的jQuery提示框(Tip)插件

2019-11-20 10:45:32
字體:
來源:轉載
供稿:網友

插件可以滿足常用的提示顯示,支持12個方向,支持邊框、背景色、文本顏色自定義,支持位置微調、層級微調、寬度間距等參數調整。

先看看效果:

tips:提示信息組件
參數:

  • msg:'asdf',內容
  • dire:2,方向
  • w:250,寬度
  • _x:0,橫向偏移
  • _y:0,縱向偏移
  • zIndex:100000,層級
  • borderColor:#FFF,邊框顏色
  • bgColor:#FFF,背景顏色
  • useHover:true是否使用懸浮顯示
  • color:默認提示文字顏色
  • padding:邊距

javascript代碼:

(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);

CSS:

.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;}page:<div class="test">  <span data-tip-msg="我是測試數據<br>我是測試數據<br>我是測試數據">我是測試數據</span></div><script>  $('.test span').tips();</script>

效果:


以上就是一款簡簡單單的jQuery提示框(Tip)插件,希望大家可應用到自己的項目中,有所收獲。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产婷婷香蕉久久久久久| 亚洲国产成人精品女人久久久| 国产精品揄拍500视频| 亚洲精品第一页| 久久久久久亚洲精品| 亚洲天天在线日亚洲洲精| 欧美极品第一页| 亚洲电影免费观看| 国内精品小视频| 国产成人精品电影| 亚洲xxx大片| 91精品久久久久久久久久久久久| 性欧美视频videos6一9| 久久综合伊人77777| 日韩成人久久久| 国产乱人伦真实精品视频| 国产精品极品在线| 亚洲欧美日韩精品久久奇米色影视| 欧美大片欧美激情性色a∨久久| 亚洲欧美综合精品久久成人| 亚洲网在线观看| 国产精品三级在线| 欧美性生交大片免费| 欧美裸身视频免费观看| 尤物九九久久国产精品的特点| 国产成人精品av| 欧美精品亚州精品| 日韩免费看的电影电视剧大全| 久久深夜福利免费观看| 欧美黄色片在线观看| 国产精品久久久久999| 在线精品播放av| 欧美丰满片xxx777| 97超级碰碰碰| 亚洲人成在线观看网站高清| 久久久人成影片一区二区三区观看| 欧美夜福利tv在线| 亚洲精品免费网站| 欧美激情中文字幕乱码免费| 这里只有视频精品| 日韩欧美在线视频日韩欧美在线视频| 亚洲午夜小视频| 国产盗摄xxxx视频xxx69| 成人欧美一区二区三区在线| 欧美孕妇孕交黑巨大网站| 亚洲精品网址在线观看| 欧美日韩人人澡狠狠躁视频| 国产啪精品视频| 国产免费一区二区三区在线观看| 久久男人的天堂| 成人网欧美在线视频| 欧美精品亚州精品| 亚洲欧洲在线观看| 高清欧美电影在线| 久久久精品久久久久| 亚洲美女www午夜| 在线电影av不卡网址| 日韩成人av网址| 日韩av综合网| 69av成年福利视频| 91久久国产精品| 欧美日韩国产成人高清视频| 亚洲精品一区二区久| 欧美在线一区二区视频| 成人免费直播live| 欧美日韩另类视频| 亚洲人成电影网站色www| 亚洲午夜精品视频| 欧美一区二区三区免费观看| 欧美成人免费全部| 精品国产欧美一区二区五十路| 国产91在线高潮白浆在线观看| 日韩免费在线观看视频| 久久精品视频在线播放| www日韩欧美| 久久久久www| 国产欧美欧洲在线观看| 法国裸体一区二区| 国产女人18毛片水18精品| 国产精品99久久久久久白浆小说| 中文字幕不卡在线视频极品| 亚洲天堂视频在线观看| 92国产精品久久久久首页| 欧美精品videosex牲欧美| 亚洲综合小说区| 国内精品国产三级国产在线专| 日韩欧美一区二区在线| 国产美女精彩久久| 综合欧美国产视频二区| 91视频88av| 国产成人精品在线视频| 国产精品久久久久久久久久ktv| 91精品综合久久久久久五月天| 精品香蕉在线观看视频一| 超薄丝袜一区二区| 午夜精品一区二区三区av| 久久久久久91香蕉国产| 欧美电影院免费观看| 91啪国产在线| 日韩免费av片在线观看| 国产精品视频自在线| 九九精品在线视频| 欧美亚洲另类在线| 欧美在线影院在线视频| 色综合久久天天综线观看| 亚洲人午夜色婷婷| 亚洲国产毛片完整版| 国产精品久久久久久久久久尿| yellow中文字幕久久| 国产91露脸中文字幕在线| 日韩欧美在线视频日韩欧美在线视频| 欧美丝袜美女中出在线| 欧美激情免费在线| 成人有码在线播放| 日韩最新免费不卡| 两个人的视频www国产精品| 精品二区三区线观看| 国产欧美久久一区二区| 国产美女被下药99| 欧美一性一乱一交一视频| 亚洲成人激情在线观看| 亚洲女人初尝黑人巨大| 亚洲一区二区三区777| 精品亚洲一区二区三区四区五区| 欧美成年人网站| 亚洲成人av在线播放| 精品在线小视频| 91色中文字幕| 国自产精品手机在线观看视频| 国产精品久久77777| 国产成人久久久| 国产日韩在线亚洲字幕中文| 欧美一级淫片aaaaaaa视频| 欧美日韩一区二区免费在线观看| 成人中文字幕在线观看| 成人中文字幕+乱码+中文字幕| 97香蕉超级碰碰久久免费软件| 日本精品久久中文字幕佐佐木| 国产精品视频网站| 2019av中文字幕| 国产精品久久久久久久久久东京| 亚洲欧美一区二区三区四区| 欧美理论在线观看| 欧美午夜电影在线| 在线观看日韩专区| 成人网在线免费看| 久久综合久中文字幕青草| 国产精品777| 亚洲国产精品va在线看黑人动漫| 国产精品18久久久久久首页狼| 日韩精品免费在线视频| 国产精品手机播放| 精品福利在线看| 日韩av免费看网站| 色www亚洲国产张柏芝| 日韩免费在线播放| 日韩动漫免费观看电视剧高清| 亚洲一区国产精品| 国产精品色悠悠| 欧美一区二区影院| 久久精品男人天堂| 国产精品美女999| 欧美日韩中国免费专区在线看| 国产精品女人网站|