jQuery許願牆程式碼例項

antzone發表於2017-04-12

曾經流行過一段時間的許願牆,形式大家都不會陌生。

下面就通過javascript程式碼實現此功能,程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
body {
  background: -webkit-linear-gradient(top, rgb(203, 235, 219) 0%, rgb(55, 148, 192) 120%);
  background: -moz-linear-gradient(top, rgb(203, 235, 219) 0%, rgb(55, 148, 192) 120%);
  overflow: hidden;
  font-family: '微軟雅黑', font-size: 16px;
  height: 1500px;
}
.item {
  width: 200px;
  height: 200px;
  line-height: 30px;
  -webkit-border-bottom-left-radius: 20px 500px;
  -webkit-border-bottom-right-radius: 500px 30px;
  -webkit-border-top-right-radius: 5px 100px;
  box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.2);
  -webkit-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.2);
  -moz-box-shadow: 0 2px 10px 1px rgba(0, 0, 0, 0.2);
}
#container p {
  height: 80px;
  margin: 30px 10px;
  overflow: hidden;
  word-wrap: break-word;
  line-height: 1.5;
}
#container a {
  position: relative;
  left: 150px;
  color: red;
  font-size: 14px;
}
input {
  display: block;
  height: 30px;
  padding: 0 1em;
  line-height: 30px;
  width: 300px;
  margin: 85px auto;
  font-size: 20px;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script>
(function ($) {
  var container;
  // 可選顏色
  var colors = ['#96C2F1', '#BBE1F1', '#E3E197', '#F8B3D0', '#FFCC00'];
 
  //建立許願頁
  var createItem = function (text) {
    var color = colors[parseInt(Math.random() * 5, 10)]
    $('<div class="item"><p>' + text + '</p><a href="#">關閉</a></div>').css({ 'background': color }).appendTo(container).drag();
  };
 
  // 定義拖拽函式
  $.fn.drag = function () {
    var $this = $(this);
    var parent = $this.parent();
    var pw = parent.width();
    var ph = parent.height();
    var thisWidth = $this.width() + parseInt($this.css('padding-left'), 10) + parseInt($this.css('padding-right'), 10);
    var thisHeight = $this.height() + parseInt($this.css('padding-top'), 10) + parseInt($this.css('padding-bottom'), 10);
 
    var x, y, positionX, positionY;
    var isDown = false;
 
    var randY = parseInt(Math.random() * (ph - thisHeight), 10);
    var randX = parseInt(Math.random() * (pw - thisWidth), 10);
 
 
    parent.css({
      "position": "relative",
      "overflow": "hidden"
    });
 
    $this.css({
      "cursor": "move",
      "position": "absolute"
    }).css({
      top: randY,
      left: randX
    }).mousedown(function (e) {
      parent.children().css({
        "zIndex": "0"
      });
      $this.css({
        "zIndex": "1"
      });
      isDown = true;
      x = e.pageX;
      y = e.pageY;
      positionX = $this.position().left;
      positionY = $this.position().top;
      return false;
    });
 
 
    $(document).mouseup(function (e) {
      isDown = false;
    }).mousemove(function (e) {
      var xPage = e.pageX;
      var moveX = positionX + xPage - x;
 
      var yPage = e.pageY;
      var moveY = positionY + yPage - y;
 
      if (isDown == true) {
        $this.css({
          "left": moveX,
          "top": moveY
        });
      } else {
        return;
      }
      if (moveX < 0) {
        $this.css({
          "left": "0"
        });
      }
      if (moveX > (pw - thisWidth)) {
        $this.css({
          "left": pw - thisWidth
        });
      }
      if (moveY < 0) {
        $this.css({
          "top": "0"
        });
      }
      if (moveY > (ph - thisHeight)) {
        $this.css({
          "top": ph - thisHeight
        });
      }
    });
  };
 
  // 初始化
  var init = function () {
    container = $('#container');
    // 繫結關閉事件
    container.on('click', 'a', function () {
      $(this).parent().remove();
    }).height(($(window).height() - 200) < 0 ? 520 : ($(window).height() - 200))
      .width(($(window).width() - 200) < 0 ? '100%' : $(window).width());
 
    var tests = ['螞蟻部落一', '螞蟻部落二', '螞蟻部落三', '螞蟻部落四', '螞蟻部落五'];
    $.each(tests, function (i, v) {
      createItem(v);
    });
 
    // 繫結輸入框
    $('#input').keydown(function (e) {
      var $this = $(this);
      if (e.keyCode == '13') {
        var value = $this.val();
        if (value) {
          createItem(value);
          $this.val('');
        }
      }
    });
  };
  $(function () {
    init();
  });
})(jQuery);
</script>
</head>
<body>
<div id="container" style="height:520px;"></div>
<input id="input" type="text" placeholder="隨便說說吧..." />
</body>
</html>

相關文章