js实现移动蒙版层

移动蒙版层

可在整个页面拖动方块,但方块不能超出页面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>移动蒙版层案例</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    body {
      position: relative;
    }

    .container {
      position: relative;
      top: 10px;
      left: 10px;
      width: 800px;
      height: 800px;
      background-color: #368;
    }

    .mask {
      position: absolute;
      width: 400px;
      height: 280px;
      padding: 20px;
      background-color: #690;
      box-shadow: 0 0 8px #222;
      cursor: move;
    }
  </style>
</head>

<body>

 
    <div class="mask">

    </div>
 

  <script src='js/common.js'></script>
  <script>
    var oMask = $('.mask')


    var eventTypeMap = {
      isDown : false,
      startPos : {
        x : 0,
        y : 0,
        left : 0,
        top : 0
      },
      targetEle : null,
      limit : {
        maxLeft :window.innerWidth - oMask.offsetWidth,
        maxTop : window.innerHeight - oMask.offsetHeight,
      },
      'mousedown': function (e) {
        this.isDown = true
        this.targetEle = e.target
        this.startPos.x = e.clientX,
        this.startPos.y = e.clientY
        this.startPos.left = getPosition(oMask).left
        this.startPos.top = getPosition(oMask).top
      },
      'mousemove': function (e) {
        if(this.isDown === true) {
          var diffX = e.clientX - this.startPos.x
          var diffY = e.clientY - this.startPos.y
          var diffLeft = this.startPos.left + diffX
          var diffTop = this.startPos.top + diffY
          diffLeft = Math.max(0, diffLeft)
          diffLeft = Math.min(this.limit.maxLeft, diffLeft)
          diffTop = Math.max(0, diffTop)
          diffTop = Math.min(this.limit.maxTop, diffTop)
          setStyle(oMask, {
            top : diffTop + 'px',
            left : diffLeft + 'px',
           
          })
          if (e.clientX < 0 || e.clientY < 0) {
            isDown = false;
          }
        }
      },
      'mouseup': function (e) {
        this.isDown = false
        this.targetEle = null
      },
    }
 
    oMask.addEventListener('mousedown' , drawEle, false)
    document.addEventListener('mousemove' , drawEle, false)
    document.addEventListener('mouseup' , drawEle, false)
    
    function drawEle (e) {
      if(eventTypeMap[e.type] && typeof eventTypeMap[e.type] === 'function') {
        eventTypeMap[e.type](e)
      }
    }
  </script>
</body>

</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS实现留言板的过程如下: 首先,我们需要在HTML中创建一个留言板的容器,可以是一个div元素,然后在CSS中设置其样式,包括显示位置、大小、背景颜色等。 接下来,在JS中,我们可以通过事件监听,例如点击事件,来触发弹出留言功能。可以通过给留言板容器添加一个点击事件监听器,当点击事件发生时,触发弹出留言的逻辑。 弹出留言的逻辑可以通过JS动态创建一个留言框的元素,可以是一个文本输入框加上一个发送按钮。创建元素的过程可以使用DOM操作,通过createElement方法来创建元素节点,然后通过appendChild方法将其添加到留言板容器中。 接着,我们可以通过拖拽事件监听器来实现拖住移动蒙版的功能。可以通过给蒙版元素添加一个鼠标按下事件监听器,在鼠标按下时获取鼠标的位置坐标。然后在鼠标移动事件监听器中,计算鼠标位置的偏移量,并将蒙版元素的位置跟随鼠标移动进行相应的更新,可以通过设置蒙版元素的定位属性来实现。 最后,我们可以在JS中添加一层蒙版元素,用于遮挡页面的其他内容,以便实现点击弹出留言板时,将焦点限制在留言板内。可以通过给蒙版元素设置一些样式,例如半透明的背景颜色,来实现这一效果。 综上所述,就是用JS实现留言板的基本思路和步骤。通过事件监听和DOM操作,我们可以实现点击弹出留言功能,拖住移动蒙版等功能,以提升留言板的交互性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值