首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使反作用力带模态可拉?

如何使反作用力带模态可拉?
EN

Stack Overflow用户
提问于 2019-10-01 03:36:17
回答 3查看 6.2K关注 0票数 3

如何使反应带模式可拖?我试过使用react-draggable插件,但它不能正常工作。它只是整个模态的内部部分。下面给出了我的代码。

如果我将< Draggable >组件使用到< Modal >标记的内部部分,那么它将被工作并移动标题文本和正文文本。如果有谁能帮我的话,应该是全模态的。

代码语言:javascript
运行
AI代码解释
复制
import React, { Component } from "react";
import { Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap";
import Draggable from "react-draggable";

class DraggableModal extends Component {
 render() {
    return (
      <div>
      <Draggable>
        <Modal
          isOpen={this.state.showModal}
          toggle={() => {
            this.setState({ showModal: false });
            this.props.modalClose();
          }}
        >
          <ModalHeader
            className="modal-header bg-primary modal-title text-white"
            toggle={() => {
              this.setState({ showModal: false });
              this.props.modalClose();
            }}
          >
            Test Header
          </ModalHeader>
          {this.state.loading ? <Spinner /> : ""}
          <ModalBody
            style={{
              height: modalSettings.modalBodyHeight + "px"
            }}
          >
            <div
              className="form-group row"             
            >
              <div className="formRow col-sm-12">{this.renderData()}</div>
            </div>
          </ModalBody>
        </Modal>
        </Draggable>
      </div>
    );
  }

}

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-01 05:28:27

在给定的链接中发现了一些问题。

您已经分别用ModalModalHeaderModalBody包装了Draggable

ModalHeader & ModalBody包装Draggable是没有用的,只会造成令人发怒的行为。你得把它拿掉。

您可能需要用Draggable包装您的Draggable

您的Modal不会因为transform属性而被拖动,

代码语言:javascript
运行
AI代码解释
复制
.modal-dialog {
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%) !important;
    transform: translate(-50%, -50%) !important;
    min-width: 500px !important;
}

在这里,您已经应用了!important

Draggable内部只使用transform属性。当您用Draggable包装任何元素时,它将应用此CSS

代码语言:javascript
运行
AI代码解释
复制
touch-action: none;
transform: translate(0px, 0px);

根据拖动/游标的位置,它将更新transform属性。由于您已经在!important属性上应用了transform,此更新将没有任何效果,因此您的Modal不会被拖动。

因此,通过删除CSS of modal-dialog ,您的代码将运行。

另一个建议是您已经为您的CSS编写了自定义Modal

您需要在您的项目bootstrap中添加(reactstrap只从引导获取CSS ),它将为Modal提供CSS,这样您就不需要编写自定义CSS

代码语言:javascript
运行
AI代码解释
复制
npm i bootstrap --save

您可以在bootstrap.min.css文件中添加index.js

代码语言:javascript
运行
AI代码解释
复制
import 'bootstrap/dist/css/bootstrap.min.css';

演示

注意:如果您希望您的Modal位于屏幕中心,则可以添加自定义CSS

票数 3
EN

Stack Overflow用户

发布于 2021-05-31 04:50:11

最简单的解决方案

您只需要用包装您的Modal代码就可以了

解决方案的步骤

  1. 使用NPM安装react-draggable
代码语言:javascript
运行
AI代码解释
复制
npm i react-draggable
  1. react-draggable导入组件:
代码语言:javascript
运行
AI代码解释
复制
import Draggable from 'react-draggable';
  1. 用此reacstrap包装Draggable模式
代码语言:javascript
运行
AI代码解释
复制
<Draggable>
  <Modal
    isOpen={this.props.isModalOpen}
    toggle={this.props.toggleModal}
    className="gray-header-modal md"
  >
    <ModalHeader>
      <label className="modal-header-title text-dark">Modal Title</label>
      <img
        src="/images/close.png"
        alt="close"
        width="20px"
        className="closeIcon"
        onClick={this.props.toggleModal}
      />
    </ModalHeader>
    <ModalBody>
      <Row>
        <Col>
          // Modal body
        </Col>
      </Row>
    </ModalBody>
  </Modal>
</Draggable>
票数 1
EN

Stack Overflow用户

发布于 2022-04-13 04:32:05

我的解决方案是更好和非常简单,因为你可以拖模式,只有头,所以也是文本标记在模态内是可能的。

handle类名指定要用作启动拖动的句柄的选择器。

代码语言:javascript
运行
AI代码解释
复制
import { Modal, ModalHeader, ModalBody } from "reactstrap";
import Draggable from "react-draggable";

...

<Draggable handle=".handle">
  <Modal size="lg" toggle={function noRefCheck(){}}>
    <ModalHeader toggle={function noRefCheck(){}} className="handle">
      Modal Title
    </ModalHeader>
    <ModalBody>
      Modal Body
    </ModalBody>
  </Modal>
</Draggable>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58184008

复制
相关文章
如何使 Grafana as code
Grafana Dashboard 可以做很多事情,但您知道其实是可以通过代码来配置管理 Grafana Dashboard 的吗?本文是 Grafana Labs 软件开发工程师 Malcolm Holmes 和 Inuits 的开源顾问 Julien Pivotto 在 FOSDEM 2020 上的 topic 演讲记录。演讲中,两人讨论了如何使用代码来管理您的 Grafana 实例,并介绍了一些使用 Jsonnet[1] 的秘诀和技巧以及 Grafonnet[2](一个用于生成 Grafana Dashboard 的 Jsonnet 库)。
郭旭东
2020/12/30
1.7K0
如何使 Grafana as code
如何带新人?
前言 前两天有个入行不久的朋友跟我说,他刚入职了一家新公司,感觉开展工作遇到很多困扰,恰好我最近在梳理团队管理方面的思路。所以有了今天这篇文章。今天的分享的主题是如何带领新人,以及新人入职初期该怎么做。所分享的内容大都是个人的看法,不能保证有多科学,只是希望对刚成为测试经理或者刚入行的童鞋有所帮助,也欢迎来交流看法。 一、测试经理如何带新人 新人有两种,一种是刚入行的测试新手,还有一种是刚进入一家新公司,但本身是有经验的老手。 对于测试新手来说,作为测试经理需要做的大致是前
张树臣
2018/05/15
2.1K0
如何使zuul支持websocket
公司要把以前一个老的项目通过zuul来路由装发(ps:老项目作为微服务中的一个子服务),而这个老项目里面有用到websocket消息推送,然而不幸的是zuul1对websocket的支持并不友好。百度了一些案例,本来开开心心以为可以得到解决方案,可惜到头来是一场梦。百度出来的例子大多数通过自定义zuul过滤器并设置超时时间来支持webscoket,于是照猫画虎,终究没使老项目的websocket通过zuul来代理推送。
lyb-geek
2018/07/26
9K0
如何使JavaScript更高效
传统的 Web 页面不会包含很多脚本,至少不会太影响 Web 页面的性能。然而,Web 页面变得越来越像应用程序,脚本对其的影响也越来越大。随着越来越多的应用采用 Web 技术开发,脚本性能的提升就变得越来越重要。
疯狂的技术宅
2019/03/28
1.7K0
如何使iOS后台运行代码
最近在开发一个关于校园的项目,其中有这么一个需求:学生晚上8:00第一次打完卡后在当天夜晚11:00时需要再一次上传学生当前地理位置,判断是否还在宿舍(MMP防不胜防)。但是最后一次上传是不需要学生操作的,APP默默的执行。
用户6094182
2019/08/23
1.9K0
如何使iOS后台运行代码
译文|大数据如何使企业受益?
本文由CDA数据分析研究院翻译,转载必须获得本站、原作者、译者的同意,拒绝任何不表明译者及来源的转载! 一、对大数据的阐释 大数据有巨大的潜力可使任何行业的企业受益,这绝不仅是巨量的数据使然。数据集的组合将给企业以真正的洞察力,这种能力可用于市场决策和改进其财务状况中。在你能够理解大数据如何使你的公司受益之前,重要的是了解究竟什么是大数据。大数据可以用3个以V开头的词来最好地进行阐释——数量(Volume)、速度(Velocity)和种类(Variety)。 数量 据估计,世界上的数据总量每2年就会翻一倍
CDA数据分析师
2018/02/23
1.1K0
如何使页面交互更流畅
本篇是基于 FDCon2019 上《让你的网页更丝滑by刘博文》的复盘文。该课题也是博主感兴趣的领域, 后续会结合 React 的 Schedule 与该文进行进一步整合, 个人博客
牧云云
2019/05/26
9930
如何使Ubuntu的语言变成中文??
当我们打开Ubuntu系统后,一些英语稍差一点的同学是不是用这个系统用起来感觉有点吃力呢?要是Ubuntu系统会讲中文就好了。那如何让Ubuntu这个系统学会中文呢?接下来就有我来带你们一步步的让自己的Ubuntu系统学会中文吧!! ## (注意:可能有些步骤需要输入你的登录密码!!!)
种花家的奋斗兔
2020/11/13
4.3K0
如何使Ubuntu的语言变成中文??
如何使你的开源项目成功[每日前端夜话0xD0]
你已经为一个有趣的问题工作了几个月,现在决定启动一个开源项目。你在 README.md 中编写了一些说明,并发布了1.0版。
疯狂的技术宅
2019/10/14
1.1K0
如何使你的开源项目成功[每日前端夜话0xD0]
如何使程序在Linux后台运行
这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:
阿凡亮
2020/04/14
8.9K0
如何使python脚本运行在daemon
有一个很好的库可以完成这一功能,可惜因为文档少所以网上例子不太多 库名:python-daemon 可以通过Pip来安装 最简单的使用方式 import daemon with daemon.DaemonContext(): print "your code" 当然代码块中最好放一个长时间执行并写日志到某个路径的代码,方便观察代码的执行情况 简单但是缺乏必要的控制,比如 如果我们想保证无论多次执行程序都只保证系统内只有一个改程序的进程的话就需要pid文件来控制这时候可以使用这个库带的另一个类Da
py3study
2020/01/08
2.3K0
如何使特定的数据高亮显示?
当表格里数据比较多时,很多时候我们为了便于观察数据,会特意把符合某些特征的数据行高亮显示出来。这不,公司的HR小姐姐就有这个需求,说她手头上有一份招聘数据,她想把“薪水”超过20000的行突出显示出来,应该怎么操作呢?
猴子聊数据分析
2020/02/26
5.7K0
如何看regulator使能的情况
查看/d/regulator/regulator_summary有所有电源的信息,如
233333
2023/03/11
1.1K0
如何看regulator使能的情况
如何用本机使虚拟机上网[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144225.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
1.4K0
如何使内网ip能够实现HTTPS访问
 在公司内部网络研发过程中,是使用的内部服务器进行发布,因此访问的ip也是内部的ip。这时候如果想对应用采用https访问的话,就需要配置对应的证书,但是市面上的证书需要使用到域名,并且基本都是基于互联网进行的认证,这种场景,在实际内网环境下,就变得难受,既不方便切换https后的调试,也不方便验证是否https配置都能成功,基于上述的情况,想到在内部服务器上生成证书,并且证书的认证地址也指向到ip,经过查找相关资料,遇到同样问题的还不少,现给出经过实际验证可行的方法。
IT小马哥
2023/04/27
3.4K0
如何使你的 WordPress BLOG 吸引订阅!
在这篇文章中我要和大家分享一下,如何能够使你的WordPress BLOG 吸引更多的订阅者。 🙂 不论我们是否出于自愿,我们几乎都是各种社会团体、组织或者集团的一分子。可以说我们都比较倾向于和我们的同僚们保持一致。有时候组织的决定使我们几乎无法抗拒的选择了和大多数人一样的行为方法,即使这背离我们的初衷。 因此,我们无须再从心理学的角度去深究这个问题,显然这个说法是正确的。那么为什么我们不对此加以利用呢?你的 WordPress BLOG 能够从不断增加的订阅量中获益,也给了你更多的机会去陈述你的观点
Denis
2023/04/13
4430
如何制作带图片的条码
在使用条码软件制作标签时,很多信息内容我们通过数据库就可以实现批量打印。但是如果需要在标签上添加相对应的图片,而且图片数量很多,该如何实现批量打印呢?如果将图片逐个导入标签内进行打印,费力还容易出错。这时只需将图片放在一个文件夹里,通过条码软件生成一个数据库,就可以实现批量打印了。下面,将详细介绍具体操作方法。
神奇像素科技
2021/11/05
3.2K0
如何制作带图片的条码
点击加载更多

相似问题

Tkinter :使帆布可拉

13

如何使离子滚动条可拉?

21

带注释的可拉圆

13

带线圈的可拉拔尺寸

14

反作用力模态不显示

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档