如何创建可调整的分割视图或者窗格----Split.js

前言:

相信大家都一定知道字符串的这个方法split(),这个方法可以将字符串拆分为子字符串数组,并返回新的数组,不会更改原始字符串。但是我今天要说的split.js和这个split()方法相差十万八千里。

背景介绍:

目前正在着手Angular的项目,在布局的设计上遇到了一个需求,实现两列布局经拖拽可进行宽度调整的设计,因为这个是在项目本身已有的代码进行设计,要改动的地方不多,代码也需要尽量的少,所以经过查阅资料,我了解到了Split.js这个工具来实现angular项目的横向分割视图的功能。其实对于React 或者vue项目,他们是有自己专门的第三方JavaScript库和框架可用于实现拖拽布局,如React项目有 React-Resizable、vue项目有Vue-Resizable等,这些库提供了更多的功能和选项,并且经过了广泛的测试和优化,但是angular没有专门处理此类功能的第三方库和框架,所以对于angular项目来说Split.js是一个可选择的快捷工具。

  • Split.js 是一个简单易用的 JavaScript 库,用于创建可拖动的分割面板布局。它允许用户通过拖动分割条来调整面板的大小,从而实现自定义的布局效果。下面是angular结合Split.js实现双侧拖拽布局的一个实例:
1. 安装 Split.js:在你的 Angular 项目中,使用 npm 命令安装 Split.js。
npm install split.js

2. 创建一个 Angular 组件,例如名为 SplitLayoutComponent。

3. 在 SplitLayoutComponent 的模板文件中,添加需要拖拽布局的两个 div,同时给它们分别设置一个引用变量。
<div #leftPanel class="split-panel">左侧内容</div>
<div #rightPanel class="split-panel">右侧内容</div>

4. 在组件的 TypeScript 文件中引入 Split.js 的模块,并在 ngOnInit 方法中使用 Split.js 初始化拖拽布局。
import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
import Split from 'split.js';

@Component({
  selector: 'app-split-layout',
  templateUrl: './split-layout.component.html',
  styleUrls: ['./split-layout.component.css']
})
export class SplitLayoutComponent implements OnInit {
  @ViewChild('leftPanel') leftPanelRef!: ElementRef;
  @ViewChild('rightPanel') rightPanelRef!: ElementRef;

  ngOnInit(): void {
    Split([this.leftPanelRef.nativeElement, this.rightPanelRef.nativeElement], {
      sizes: [50, 50],
      direction: 'horizontal',
    });
  }
}
```

在 ngOnInit 方法中,我们使用 ViewChild 获取了模板中两个 div 的引用,并传递给 Split.js 的初始化函数。

5. 添加一些 CSS 样式,设置面板的基本样式。
.split-panel {
  background-color: #ccc;
}

6. 在你的路由模块中添加 SplitLayoutComponent 的路由路径,或者在其他需要使用该组件的地方使用它。

        这样,当用户访问 SplitLayoutComponent 组件时,就会初始化双侧拖拽布局,并且用户可以通过拖拽改变两个 div 的宽度。这是一个使用 Angular 和 Split.js 结合实现双侧拖拽布局的简单示例。

除了这里提到的使用第三方库来实现双侧拖拽布局,其实实还有很多其他的方法,比如:

  1. 最原始的当然是考虑使用CSS的Flexbox布局以及JavaScript的事件监听和计算来实现。
  2. 添加手柄:你可以在左右两个div之间添加一个可拖拽的手柄(resize handle),方便用户调整布局。手柄可以是一个垂直的条状元素,用户可以直接拖动它来改变左右div的宽度。
  3. 支持其他方向的拖拽:除了水平拖拽调整宽度,你还可以考虑支持垂直拖拽来调整高度。这样用户就可以自由地调整左右两个div的尺寸。
  4. 添加拖拽指示器:你可以在拖拽操作过程中添加一个指示器,以显示当前的宽度或高度数值。这对于用户来说,可以提供更直观的反馈信息。
  5. 支持多列布局:除了两个div的布局,你还可以考虑实现多列布局,让用户能够自由调整多个列的宽度。

无论你选择哪种方式,都可以根据具体的需求和项目要求来选择适合的方案。同时,记得在开发过程中进行充分的测试和用户反馈,以确保拖拽布局的可用性和用户体验。你还可以考虑进一步实现一些功能,改进或扩展一下整体效果,例如:

  1. 限制最小宽度:当用户拖拽右边的div调整宽度时,你可以设置一个最小宽度,以防止div过于收缩导致内容被挤压。可以在鼠标移动时进行判断,如果新的宽度小于最小宽度,将其设置为最小宽度。
  2. 保存用户偏好:如果需要记住用户对宽度的调整偏好,可以使用 `localStorage` 或者向服务器发送请求来保存宽度设置,这样用户下次访问时可以自动恢复之前的宽度设置。
  3. 平滑动画效果:可以使用 CSS 的过渡或动画属性,为拖拽宽度的操作添加平滑的过渡效果,增加用户体验。
  4. 响应式设计:考虑不同屏幕尺寸下的布局,可以使用CSS媒体查询来实现不同的布局方案,以适应不同设备的显示。

好了,今天的介绍和记录就到这里了,欢迎大家的阅读指正,如果你对 Split.js 有兴趣,可以访问官网了解更多信息。 以下是 Split.js 官网的链接:官网地址:https://split.js.org/

在官网上,你可以找到以下内容:

1. 文档:官网提供了详细的文档,包括安装、使用和配置 Split.js 的说明。你可以在这里了解如何使用 Split.js 创建分割面板布局。

2. 示例:官网提供了多个示例,展示了 Split.js 的不同用法和布局效果。你可以通过查看这些示例来了解 Split.js 的功能和灵活性。

3. API 参考:官网提供了 Split.js 的 API 参考文档,详细介绍了库中的各种方法和选项,以及它们的用法和参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值