鼠标拖拽删除

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        ul,li{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        #box{
            width: 400px;
            height: 420px;
            background-color: pink;
            padding-top: 30px;
            margin: auto;
        }
        .title,.end{
            width: 300px;
            margin: auto;
        }
        input{
            width: 280px;
            height: 80px;
            border-radius: 10px;
            padding: 0 10px;
            margin: 0;
            border:0;
        }
        .text{
            display: inline-block;
            width: 300px;
            height: 30px;
            border-radius: 10px;
            background-color: red;
            text-align: center;
            line-height: 30px;
            margin-top: 15px;
        }
        .end{
            margin-top: 10px;
        }
        li{
            width: 100%;
            height: 30px;
            overflow: hidden;
            line-height: 30px;
        }
        .row{
            float: left;
        }
        .delete{
            float: right;
            cursor: pointer;
        }
    </style>
</head>
<body>
<div id="box">
    <div class="title">
        <input type="text">
        <span class="text">提交</span>
    </div>
    <ul class="end"></ul>
</div>
<script>

    //获取需要操作的元素
    var inp = document.querySelector('input');
    var btn = document.querySelector('.text');
    var end = document.querySelector('.end');


    //添加点击事件
    btn.onclick = function () {

        //如果没有输入内容时要做的事情
        if(inp.value == ''){

            alert('请输入内容');
            return;

        }

        //生成输入的内容
        end.innerHTML  = '<li><span class="row">' inp.value '</span><span class="delete">删除</span></li>';

        //清空value值
        inp.value = '';
    }

    //点击事件
    end.onclick = function(ev){
        var ss = ev.target;
        //绑定事件  利用父级删除子级;
        if(ss.getAttribute('class')=='delete'){
            end.removeChild(ss.parentNode);
        }

    }

</script>


</body>
</html>

更多专业前端知识,请上 【猿2048】www.mk2048.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,实现了鼠标拖拽放大缩小矩形,并且考虑了鼠标在不同位置时的提示信息,以及多次添加矩形的情况。代码基于Qt的QWidget进行绘制。 ```cpp #include <QtWidgets> class RectItem : public QGraphicsItem { public: RectItem(const QRectF& rect, int layerIndex, QGraphicsItem* parent = nullptr) : QGraphicsItem(parent), m_rect(rect), m_layerIndex(layerIndex) { setFlag(QGraphicsItem::ItemIsSelectable, true); setFlag(QGraphicsItem::ItemIsMovable, true); setAcceptHoverEvents(true); setToolTip(QString("Layer %1").arg(m_layerIndex)); } QRectF boundingRect() const override { return m_rect; } void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override { Q_UNUSED(option); Q_UNUSED(widget); painter->drawRect(m_rect); } private: QRectF m_rect; int m_layerIndex; }; class GraphicsView : public QGraphicsView { public: GraphicsView(QWidget* parent = nullptr) : QGraphicsView(parent) { setRenderHint(QPainter::Antialiasing); setDragMode(QGraphicsView::RubberBandDrag); } protected: void mousePressEvent(QMouseEvent* event) override { if (event->button() == Qt::LeftButton) { m_lastPos = event->pos(); m_rectItem = nullptr; } QGraphicsView::mousePressEvent(event); } void mouseMoveEvent(QMouseEvent* event) override { if (event->buttons() & Qt::LeftButton) { if (!m_rectItem) { m_rectItem = new RectItem(QRectF(m_lastPos, event->pos()), m_layerIndex++, scene()->foregroundBrush().color(), scene()->foregroundBrush().color().darker(150), scene()); m_rectItem->setToolTip(QString("Layer %1\nDrag to move\nShift+drag to resize").arg(m_rectItem->data(Qt::UserRole).toInt())); } else { QRectF rect = QRectF(m_lastPos, event->pos()).normalized(); m_rectItem->setRect(rect); } } else { QGraphicsItem* item = scene()->itemAt(mapToScene(event->pos()), QTransform::fromScale(1, 1)); if (item && item->type() == QGraphicsItem::UserType + 1) { setCursor(Qt::SizeAllCursor); } else { setCursor(Qt::ArrowCursor); } } QGraphicsView::mouseMoveEvent(event); } void mouseReleaseEvent(QMouseEvent* event) override { if (event->button() == Qt::LeftButton && m_rectItem) { if (m_rectItem->rect().width() < 10 || m_rectItem->rect().height() < 10) { delete m_rectItem; } else { m_rectItem->setSelected(true); } m_rectItem = nullptr; } QGraphicsView::mouseReleaseEvent(event); } void keyPressEvent(QKeyEvent* event) override { if (event->key() == Qt::Key_Delete) { foreach(QGraphicsItem* item, scene()->selectedItems()) { if (item->type() == QGraphicsItem::UserType + 1) { delete item; } } } QGraphicsView::keyPressEvent(event); } private: QPoint m_lastPos; RectItem* m_rectItem = nullptr; int m_layerIndex = 0; }; int main(int argc, char* argv[]) { QApplication app(argc, argv); QGraphicsScene scene; scene.setBackgroundBrush(QBrush(Qt::gray, Qt::CrossPattern)); GraphicsView view; view.setScene(&scene); view.setFixedSize(800, 600); view.show(); return app.exec(); } ``` 代码中,RectItem是矩形的图形项,继承自QGraphicsItem。GraphicsView是继承自QGraphicsView的自定义视图,用于显示和操作矩形。其中,矩形的可拖拽、可缩放等操作都是在GraphicsView中实现的。同时,为了区分不同的矩形,每个矩形都有一个layerIndex属性,用于显示在不同的层中。 代码中还考虑了两个细节: 1. 鼠标在矩形的不同位置时,鼠标的提示信息不同。 2. 可以多次添加矩形,多个矩形之间能够区分不同层。 运行代码后,可以看到一个灰色背景的视图,可以通过鼠标拖拽放大缩小矩形。可以通过鼠标滚轮进行视图缩放,也可以通过鼠标左键拖拽视图进行移动。可以通过按Delete键删除选中的矩形。同时,每个矩形的ToolTip中会显示它所在的层。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值