react-grid-layout:可拖拽缩放网格布局插件

react-grid-layout:可拖拽缩放网格布局插件,第1张

react-grid-layout

    React-Grid-Layout 是一个网格布局系统,具有响应性并支持断点(breakpoints)。断点布局可以由用户提供或自动生成。

RGL 仅支持 React,不支持 jQuery。

    使用npm安装 React-Grid-Layout:

    样式表:

    下面的示例将生成一个包含三个项目的网格,其中:

    1.    用户将无法拖动或调整项目大小 a

    2.    b 将被限制为最小宽度为 2 个网格块和最大宽度为 4 个网格块

    3.    用户将能够自由拖动和调整项目大小 c

可以选择直接在子项上设置布局属性

    <ResponsiveReactGridLayout>和<ReactGridLayout>采取width来计算拖动事件位置。在简单的情况下,WidthProvider可以使用HOC在初始化和窗口调整大小事件时自动确定宽度。

    // 除使用 <WidthProvider>情况外必填

     width: number,

    // 如果为 true,容器高度自适应内容

     autoSize: ?boolean = true ,

    //布局中的列数。

     cols: ?number = 12 ,

    // 取消拖拽时的css选择器

     draggableCancel: ?string = '' ,

    // 拖拽时的css选择器

     draggableHandle: ?string = '' ,

    // 紧凑排列类型

     compactType: ?( 'vertical' | 'horizontal' ) = 'vertical'

    // 布局,格式为数组对象,例如:

    // {x: number, y: number, w: number, h: number}

    // 布局中的索引必须与每个项目组件上使用的键匹配。

    // 如果您选择使用自定义键,则可以在布局中指定该键

    // 数组对象,如下所示:

    // {i: string, x: number, y: number, w: number, h: number}

    //如果父组件没有设置layout,则需要在子组件设置 data-grid

     layout: ?array = null ,

    //  [x, y] 的margin值

     margin: ?[number, number] = [ 10 , 10 ],

    //  [x, y] 的padding值

     containerPadding: ?[number, number] = margin,

    // 行高,可根据 breakpoints 改变

     rowHeight: ?number = 150 ,

    // 放置元素的配置。放置元素是一个从外部拖动某个元素时会出现的虚拟元素。

    //  i - 元素的id

    //  w - 元素的宽

    //  h - 元素的高

     droppingItem?: { i : string, w : number, h : number }

    // 是否可拖拽

     isDraggable: ?boolean = true ,

    //是否可重置大小

     isResizable: ?boolean = true ,

    //是否可设置边界

     isBounded: ?boolean = false ,

    // 使用 CSS3 translate() 替换position 的top/left ,可提升大约6倍性能

     useCSSTransforms: ?boolean = true ,

    //如果 ResponsiveReactGridLayout 或 ReactGridLayout 的父节点具有 "transform: scale(n)" 属性,应该设置缩放系数以避免拖动时出现渲染伪影。

     transformScale: ?number = 1 ,

    //是否允许重叠

     allowOverlap: ?boolean = false ,

    //如果为 true,则网格项在被拖动时不会改变位置

     preventCollision: ?boolean = false ,

    // 如果为true, 带有`draggable={true}`属性的放置元素可被放置在网格上

    //注意:如果使用 Firefox,应该添加

    // `onDragStart={e =>e.dataTransfer.setData('text/plain', ' ')}` 属性

    // 连同 `draggable={true}` 否则此功能将无法正常工作。

    // Firefox 需要 onDragStart 属性来进行拖动初始化

    // https://bugzilla.mozilla.org/show_bug.cgi?id=568313

     isDroppable: ?boolean = false ,

    // 重置大小时的 *** 作位置,默认右下

    // 可选值:

    // 's' - South handle (bottom-center)

    // 'w' - West handle (left-center)

    // 'e' - East handle (right-center)

    // 'n' - North handle (top-center)

    // 'sw' - Southwest handle (bottom-left)

    // 'nw' - Northwest handle (top-left)

    // 'se' - Southeast handle (bottom-right)

    // 'ne' - Northeast handle (top-right)

     resizeHandles: ? Array < 's' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne' >= [ 'se' ],

    // 自定义重置大小图标

      resizeHandle?: ReactElement < any >| ((resizeHandleAxis: ResizeHandleAxis , ref: ReactRef < HTMLElement > ) =>ReactElement < any > ),

    // 布局变化回调

     onLayoutChange: (layout: Layout ) =>void ,

    // 下面的所有回调都有签名(layout、oldItem、newItem、placeholder、e、element)。

    // 'start' 和 'stop' 回调为 'placeholder' 传递 `undefined`。

      type ItemCallback = (layout: Layout , oldItem: LayoutItem , newItem: LayoutItem , placeholder: LayoutItem , e: MouseEvent , element: HTMLElement ) =>void ,

    // 拖拽开始回调

     onDragStart: ItemCallback ,

    // 拖拽中回调

     onDrag: ItemCallback ,

    // 拖拽停止回调

     onDragStop: ItemCallback ,

    // 开始重置大小回调

     onResizeStart: ItemCallback ,

    // 重置大小中的回调

     onResize: ItemCallback ,

    // 重置大小结束回调

     onResizeStop: ItemCallback ,

    // 当元素从外部放入网格时的回调。

     onDrop : (layout: Layout , item: ? LayoutItem , e: Event ) =>void ,

    // 当一个元素从外面拖过网格时调用, 此回调应返回一个对象以动态更改 dropItem大小

     onDropDragOver : (e: DragOverEvent ) => ?({ | w?: number, h?: number | } | false ),

    // 可以使用它来代替常规 ref 和已弃用的 `ReactDOM.findDOMNode()` 函数

     innerRef: ? React . Ref< "div" > ,

    // Breakpoint名称是任意的,但是必须在cols 和 layouts 对象中匹配。

     breakpoints: ? Object = { lg : 1200 , md : 996 , sm : 768 , xs : 480 , xxs : 0 },

    // 列数

     cols: ? Object = { lg : 12 , md : 10 , sm : 6 , xs : 4 , xxs : 2 },

    //[x,y]的margin

     margin: [number, number] | {[breakpoint: $Keys < breakpoints > ]: [number, number]},

    // [x,y]的padding

     containerPadding: [number, number] | {[breakpoint: $Keys < breakpoints > ]: [number, number]},

    // 布局配置

     layouts: {[key: $Keys < breakpoints > ]: Layout },

    // breakpoint发生变更时的回调

     onBreakpointChange: (newBreakpoint: string, newCols: number) =>void ,

    // 布局发生变更时的回调

     onLayoutChange: (currentLayout: Layout , allLayouts: {[key: $Keys < breakpoints > ]: Layout }) =>void ,

    // 宽度改变时的回调,可以根据需要修改布局。

     onWidthChange: (containerWidth: number, margin: [number, number], cols: number, containerPadding: [number, number]) =>void

    { 

        // 组件id

         i : string, 

        // 以下单位为网格,不是px

         x : number, 

         y : number, 

         w : number, 

         h : number, 

         minW : ?number = 0 , 

         maxW : ?number = Infinity , 

         minH : ?number = 0 , 

         maxH : ?number = Infinity ,  

        // 如果为 true,则等于 `isDraggable: false, isResizable: false`。

         static : ?boolean = false , 

        // 如果为 false,则不可拖动。覆盖 `static`. 

         isDraggable : ?boolean = true , 

        // 如果为 false,则不可重置大小。覆盖 `static`. 

         isResizable : ?boolean = true ,  

        // 默认情况下,调整大小图标仅显示在右下(东南)角。 

        // 请注意,从顶部或左侧调整大小通常不直观。

         resizeHandles ?: ? Array < 's' | 'w' | 'e' | 'n' | 'sw' | 'nw' | 'se' | 'ne' >= [ 'se' ] 

        //如果为 true 且可拖动,则项目将仅在网格内移动。

         isBounded: ?boolean = false

    }

SublimeText:一款具有代码高亮、语法提示、自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受。相比于难于上手的Vim,浮肿沉重的Eclipse,VS,即便体积轻巧迅速启动的Editplus、Notepad++,在SublimeText面前大略显失色,无疑这款性感无比的编辑器是Coding和Writing最佳的选择,没有之一。原文首链,请移步这里如何优雅地使用SublimeText最后更新于2015.12.15晚(不能为简书文章添加目录?,额,折腾不出来,醉了),但目录结构还是可以有的:如何优雅地使用SublimeText之目录结构SublimeText2和3的对比SublimeText3安装插件SublimeText3插件推荐定制属于自己的快捷键Sublime不可不知的实用技巧定制属于自己的个性化主题Sublime锦上添花些许设置写在一路更来的结语SublimeText2和3的对比相比于2,SublimeText3就秒启动一项,就压倒性地胜利了。因此在之后的叙述中都以SublimeText3为主角。并且3一直在不断的完善更新,具体的差异可参看SublimeBlog.简单的说:ST3支持在项目目录里面寻找变量提供了对标签页更好地支持(的命令和快捷键)加快了程序运行的速度更新了API,使用Python3.3强烈推荐朋友们使用3!唯快不破,不解释。SublimeText3安装插件SublimeText的强大就是她拥有强大的课可扩展性。您可根据自己的需要安装不同的插件;这使得她变的无比强大的同时又不失轻便。插件安装方式一:直接安装:安装Sublimetext3插件很方便,可以直接下载安装包解压缩到Packages目录(菜单->preferences->packages)。插件安装方式二:使用PackageControl组件安装:按Ctrl+`调出console(注:安装有QQ输入法的这个快捷键会有冲突的,输入法属性设置-输入法管理-取消热键切换至QQ拼音)粘贴以下代码到底部命令行并回车:importurllib.request,ospf='PackageControl.sublime-package'ipp=sublime.installed_packages_path()urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()))open(os.path.join(ipp,pf),'wb').write(urllib.request.urlopen('Cmd+Shift+C快捷键。SublimeREPL这可能是对程序员很有用的插件。SublimeREPL允许你在SublimeText中运行各种语言(NodeJS,Python,Ruby,Scala和Haskell等等)。Ctags插件有童鞋抱怨SublimeText不能支持函数的跳转(比如像Eclipse那样,按住Control点击该方法或者对象,即可跳转到定义的地方;Alt+←即可回到原处)。其实SublimeText也可以借助插件实现之(当然,有些情况下:Cannotfinddefination)毕竟这个也是借助正则来匹配完成的。因此这个也就要求代码很规范。这个插件相对来讲会有些麻烦,具体的可以参见:SublimeTextctags的配置.SublimeLinter插件SublimeLinter是前端编码利器——SublimeText的一款插件,用于高亮提示用户编写的代码中存在的不规范和错误的写法,支持JavaScript、CSS、HTML、Java、PHP、Python、Ruby等十多种开发语言。这篇文章介绍如何在Windows中配置SublimeLinter进行JS&CSS校验。比如写例如像lua这样的弱语言脚本代码,有这个可以规避掉很多不该有的低级错误吧?当然这也需要你SublimeLinter安装完毕之后再安装一个SublimeLinter-lua即可。具体的使用可以参见:借助SublimeLinter编写高质量的JavaScript&CSS代码SideBarEnhancements插件SideBarEnhancements是一款很实用的右键菜单增强插件;在安装该插件前,在SublimeText左侧FOLDERS栏中点击右键,只有寥寥几个简单的功能;安装了就相当于给其丰了大胸一般。更强大的是,该插件还能让我们自定义快捷键呼出某个浏览器以预览页面!这样就不用到项目目录下寻找和拖动到特定浏览器中预览了。安装此插件后,点击菜单栏的preferences->packagesetting->sidebar->KeyBuilding-User,键入以下代码:[{"keys":["ctrl+shift+c"],"command":"copy_path"},//chrome{"keys":["f2"],"command":"side_bar_files_open_with","args":{"paths":[],"application":"C:\\Users\\jeffj\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe","extensions":".*"}}]这里设置按Ctrl+Shift+C复制文件路径,按F2即可在Chrome浏览器预览效果(如果需要的话,也可以根据自己的需要为Firefox,Safari,IE,Opera等加上),当然你也可以自己定义喜欢的快捷键,最后注意代码中的浏览器路径要以自己电脑里的文件路径为准。HTML-CSS-JSPrettify一款集成了格式化(美化)html、css、js三种文件类型的插件,即便html,js写在PHP文件之内。插件依赖于nodejs,因此需要事先安装nodejs,然后才可以正常运行。插件安装完成后,快捷键ctrl+shift+H完成当前文件的美化 *** 作。插件对html、css文件的美化不是非常满意,但还可以,后面将说明如何修改css美化脚本。本人用起来超级爽的,鉴于篇幅,就不赘述,可以参见这篇介绍。CSScombCSS属性排序:有时候看看自己写的CSS文件,会不会觉得属性很乱查找不易维护难?CSScomb可以按照一定的CSS属性排序规则,将杂乱无章的CSS属性进行重新排序。选中要排序的CSS代码,按Ctrl+Shift+C,即可对CSS属性重新排序了,代码从此简洁有序易维护,如果不款选代码则插件将排序文件中所有的CSS属性。当然,可以自己自定义CSS属性排序规则,打开插件目录里的CSScomb.sublime-settings文件,更改里面的CSS属性顺序就行了。因为这个插件使用PHP写的,要使他工作需要在环境变量中添加PHP的路径,具体请看github上的说明。SublimeTmpl快速生成文件模板一直都很奇怪为什么sublimetext3没有新建文件模板的功能,像html头部的DTD声明每次都要复制粘贴。用SublimeTmpl这款插件终于可以解脱了,SublimeTmpl能新建html、css、javascript、php、python、ruby六种类型的文件模板,所有的文件模板都在插件目录的templates文件夹里,可以自定义编辑文件模板。SublimeTmpl默认的快捷键:ctrl+alt+hhtmlctrl+alt+jjavascriptctrl+alt+ccssctrl+alt+pphpctrl+alt+rrubyctrl+alt+shift+ppython如果想要新建其他类型的文件模板的话,先自定义文件模板方在templates文件夹里,再分别打开Default(Windows).sublime-keymap、Default.sublime-commands、Main.sublime-menu、SublimeTmpl.sublime-settings这四个文件照着里面的格式自定义想要新建的类型,这里就详细介绍了,请各位自己折腾哈~Javascript-API-Completions:支持Javascript、JQuery、TwitterBootstrap框架、HTML5标签属性提示的插件,是少数支持sublimetext3的后缀提示的插件,HTML5标签提示sublimetext3自带,不过JQuery提示还是很有用处的,也可设置要提示的语言。

solidworks快捷键

1、A:中心线B:镜向C:画圆D:智能标柱尺寸E:删除F:草图倒圆角G:画直线H:从装配制作工程I:等距实体J:从装配制作装配

K:多边形L:延伸M:草图线性阵列N:草图圆性阵列0:装饰螺纹线P:倒角Q:测量

R:矩形S:工程图注释T:剪栽

U:注解V:添加约束W:转换实体X:左右二等角轴测Y:草图Z:缩小Ctrl+A:实体放样Ctrl+B:基准轴Ctrl+C:复制Ctrl+D:实体拉伸。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11966160.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存