整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

HTML移动端侧滑菜单功能

在的移动端页面中,很多网站都用到了侧边切换菜单栏功能,针对于该功能, 利用CSS3的知识,写了一个实现侧滑的效果。

效果展示如下:

HTML:首先写好侧边的布局。然后不是侧边的内容块最好用一个内容块包围住。

CSS样式

给侧边菜单定位,起始位置为left:-50%,当点击菜单的展开按钮,侧边菜单就加上open类目,让left:值为0,即展开切换。同理。main也一样。

JQ代码

当点击菜单展开按钮 定义类名为 f-lei,侧边菜单切换添加删除类open, 主内容切换添加删除类show。当侧边展开时,点击展开的剩余背景能收缩展开的菜单栏。

几天用js实现了鼠标拖动div的功能,但是用起来不是那么便捷,于是想着把这个功能做成一个组件,使用的时候直接引入,不用再写那么多冗余代码了。

想要实现的效果

  • 只要把div注册到该组件,目标div就都能随意拖动
  • 可设置div能够拖动的范围

实现分析


js组件的基本写法和div拖动的逻辑就不再赘述了,前面文章已经说过了,可点击下面链接查看

js实现div可拖动

js组件的基本写法

在这里主要分析下怎么限制拖动的范围,先看下图:


限制范围


拖动时有四种边缘情况,即图中的1、2、3、4,我们一一来看

  1. 当div拖动到位置1时,我你们再往左拖动,都应该失效,即拖动div的left 始终等于外层div的left值
  2. 当div拖动到位置2时,我们再往上拖动,都应该无效,即拖动div的top始终等于外层div的top值
  3. 当div拖动到位置3时,我们再往右拖动,都应该无效,即拖动div的left始终等于外层div的left加上外层div的宽度,然后再减去拖动div的宽度
  4. 当div拖动到位置4时,我们再往下拖动,都应该无效,即拖动div的top始终等于外层div的top加上外层div的高度然后减去拖动div的高度

理论知识弄明白了,我们先看下实现的效果吧


有范围的拖动

下面贴上实现的代码

html中引入组件,并初始化

html中引入组件

具体的js组件实现


js拖动组件1

js拖动组件2

文介绍如何使用和HTML5 Canvas元素来移动、调整大小和裁剪图像,这些技术适用于图片编辑器、照片分享等应用场景。

一般而言图像的剪裁会放在服务端进行,但是图片传送会消耗较多的流量。借助HTML5 Canvas绘图功能,可以在浏览器端以比较简单的方式来实现。

代码和在线演示地址:http://ikinsoft.com/3ddemo/CanvasImage.html,可以先操作下,有个整体印象,界面截图如下:

构建界面布局和元素

HTML页面由源图片Crop操作按钮裁剪矩形框以及图片容器(含4个角的调整小方块)组成,主体代码如下:

img[class=resize-image] 元素为本服务器图片资源,是要进行调整和裁剪的图片。注意出于安全策略,不能在浏览器中跨域操作图片,否则会出现类似下面的报错信息:

button[class=btn-crop] 是SVG矢量图标按钮。

div[class=overlay] 元素是裁剪矩形框。

此外图片容器使用JavaScript动态包装在 img[class=resize-image] 元素外部:

实现大小调整的功能

大小调整通过先在Canvas上绘制一个对应大小的图像,接着通过Canvas的toDataURL方法转化为base64编码的字符串形式的图片数据。最后把该data:URL通过设置为img的src属性,附着到目标图像元素上。

实现移动功能

通过mouseup事件获取新的位置,然后通过的offset方法来完成元素偏移。

实现裁剪功能

这个主要是实现一个居中的覆盖矩形(overlay),接着通过计算背景图片和该覆盖矩形的偏移来获取图片裁剪区域的坐标,

然后再通过Canvas的drawImage和toDataURL完成裁剪图的绘制。

最后再加上一些移动功能,如触摸事件(Touch)和手势(Gesture)检测的支持。