jquery tip插件代码实例

快乐打工仔 分类:实例代码

分享一段代码实例,它实现了tip插件功能。

并且能够自由定义弹出的方位。

代码实例如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.pipipi.net/" />
<title>前端教程网</title>
<style>
.tip{
  width: 200px;
  text-align: center;
  position: relative;
  border:1px solid #ccc;
  height: 50px;
  line-height: 50px;
  left: 50%;
  margin-top: 50px;
  transform: translateX(-50%);
}
.tip-container{
  position: absolute;
  box-shadow: 2px 2px 5px #f9f9f9;
  z-index: 999;
  display: none;
}
.tip-container .tip-point-top,
.tip-container .tip-point-bottom,
.tip-container .tip-point-left,
.tip-container .tip-point-right{
  border:1px solid #dcdcdc;
  position: relative;
  background: white;
}
.tip-content{
  padding:5px 10px;
  background: white;
  font-size: 12px;
  line-height: 1.7;
  font-family: "Helvetica Neue",Helvetica,Arial,"MicroSoft YaHei";
}
.tip-container .tip-point-top::after,
.tip-container .tip-point-top::before,
.tip-container .tip-point-bottom::after,
.tip-container .tip-point-bottom::before{
  content:"";
  position: absolute;
  border:solid transparent;
  left: 50%;
  width: 0;
  height: 0;
  transform: translate3d(-50%,0,0);
  -webkit-transform: translate3d(-50%,0,0);
}
.tip-container .tip-point-right::after,
.tip-container .tip-point-right::before,
.tip-container .tip-point-left::after,
.tip-container .tip-point-left::before{
  content:"";
  position: absolute;
  border:solid transparent;
  top: 50%;
  width: 0;
  height: 0;
  transform: translate3d(0,-50%,0);
  -webkit-transform: translate3d(0,-50%,0);
}
/*tip-point-top*/
.tip-container .tip-point-top::after{
  border-top-color: #fff;
  top: 100%;
  border-width: 5px;
}
.tip-container .tip-point-top::before {
  border-top-color: #dcdcdc;
  top: 100%;
  border-width: 7px;
}
/*tip-point-bottom*/
.tip-container .tip-point-bottom::after{
  border-bottom-color: #fff;
  bottom: 100%;
  border-width: 5px;
}
.tip-container .tip-point-bottom::before {
  border-bottom-color: #dcdcdc;
  bottom: 100%;
  border-width: 7px;
}
/*tip-point-right*/
.tip-container .tip-point-right::after{
  border-right-color: #fff;
  right: 100%;
  border-width: 5px;
}
.tip-container .tip-point-right::before {
  border-right-color: #dcdcdc;
  right: 100%;
  border-width: 7px;
}
/*tip-point-left*/
.tip-container .tip-point-left::after{
  border-left-color: #fff;
  left: 100%;
  border-width: 5px;
}
.tip-container .tip-point-left::before {
  border-left-color: #dcdcdc;
  left: 100%;
  border-width: 7px;
}
</style>
</head>
<body>
<div class="tip" data-tip="前端教程网欢迎您" data-mode="top">前端教程网欢迎您</div>
<div class="tip" data-tip="本站url地址是www.pipipi.net"  data-mode="bottom">www.pipipi.net</div>
<div class="tip" data-tip="分享和互助式本站的宗旨" data-mode="right">分享和互助式本站的宗旨</div>
<div class="tip" data-tip="没有人一开始就是高手" data-mode="left">没有人一开始就是高手</div>
</body>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script>
<script>
(function($, window, document, undefined) {
  var modePos;
  $.fn.tip = function(options) {
    var set = $.extend({
      "mode": "bottom",
      "speed": 300,
      "tipText": "提示内容"
    }, options);
    if (!modePos) {
      //策略模式
      //算法
      modePos = {
        top: function(t, tip) {
          return {
            left: t.offset().left + (t.width() - tip.width()) / 2 + "px",
            top: t.offset().top - tip.height() - 12 + "px"
          }
        },
        bottom: function(t, tip) {
          return {
            left: this.top(t, tip).left,
            top: t.offset().top + t.height() + 12 + "px"
          }
        },
        left: function(t, tip) {
          return {
            left: t.offset().left - tip.width() - 12 + "px",
            top: t.offset().top + (t.height() - tip.height()) / 2 + "px"
          }
        },
        right: function(t, tip) {
          return {
            left: t.offset().left + t.width() + 12 + "px",
            top: t.offset().top + (t.height() - tip.height()) / 2 + "px"
          }
        }
      };
    }
 
    function Tip(_this) {
      var _that = $(_this);
      var _mode = set.mode;
      var tipText = set.tipText;
      var _tip = ".tip-container";
      if (_that.data("mode")) {
        _mode = _that.data("mode");
      }
      if (_that.data("tip")) {
        tipText = _that.data("tip");
      }
      _that.css("cursor", "pointer");
      _that.hover(function() {
        var _tipHtml = '<div class="tip-container"><div class="tip-point-'
          + _mode + '"><div class="tip-content">'
          + tipText + '</div></div></div>';
        _that.removeAttr("title alt");
        $("body").append(_tipHtml);
        $(_tip).css(modePos[_mode](_that, $(_tip))).fadeIn(set.speed);
      }, function() {
        $(".tip-container").remove();
      });
    }
    return this.each(function() {
      return new Tip(this);
    });
  }
})(jQuery, window, document);
$(".tip").tip();    
</script>
</html>

jquery tip插件代码实例,这样的场景在实际项目中还是用的比较多的,关于jquery tip插件代码实例就介绍到这了。

jquery tip插件代码实例属于前端实例代码,有关更多实例代码大家可以查看

一线大厂高级前端编写,前端初中阶面试题,帮助初学者应聘,需要联系微信:javadudu

回复

我来回复
  • 暂无回复内容