一篇文章讲明白iframe分栏拖拽伸缩例子

简介: 一篇文章讲明白iframe分栏拖拽伸缩例子

这个标题有些绕口,鄙人愚笨,实在找不到一个比较准确的说法,总之就是:

一个页面内显示多个iframe,一个变宽,另一个就变窄,一个变高,另一个就变矮的这种可自由伸缩的效果。它们之间有一个可多拽的分隔条。

我们公司的电算化考试平台需要这样的效果。最开始用的frameset,框架集,但有些问题,比如分隔条的样式不好自己设计,frameset页面不支持执行javascript。

后来我对其进行了改进,将frameset改为使用iframe,通过自己实现分隔条和拖拽效果来满足功能。

效果图:

可以点击分隔条折叠,也可以拖动分隔条调整各区域大小。

上图中,main.html页面按左右分隔嵌入了一个left.html和一个right.html

right.html里又按上下分隔嵌入了right_top.html和right_bottom.html

由于left.html、right_top.html、right_bottom.html是具体内容页面,此处不贴出代码,只贴出main.html和right.html的代码。

main.html代码:

1 <!DOCTYPE html

2 [/span>html

3 [/span>head

4 [/span>meta http-equiv="Content-Type" content="text/html; charset=UTF-8"

5 [/span>meta http-equiv="X-UA-Compatible" content="IE=edge"

6 [/span>meta name="renderer" content="webkit"

7 [/span>script type="text/javascript" src=""

8 [/span>style type="text/css"

9 {padding:0px;margin:0px;}//代码效果参考:http://www.ezhiqi.com/zx/art_5594.html

10 html,body{Width</span>:100%;Height</span>:100%;}

11

12 [/span>title

13 [/span>script type="text/javascript"

14 /**

15

16 iframe横向分隔条拖拽伸缩实例 陈建宇 2016-6-14

17

18 **/

19 function init(){

20

21 var li = $("#li");//left iframe

22 var ri = $("#ri");//right iframe

23 var s = $("#s");//中间分割条

24 var img = s.children("img").eq(0);

25 var drag = $("#drag");//分隔条中的拖拽层.

26

27 var clientWidth = $(window).width();

28 var li_init_Width</span>=270;//上边iframe要显示的宽度,若需要调整默认宽度,请改此值即可.

29 var s_init_Width</span>=10;//分隔条宽度默认值

30 var ri_Width</span>=clientWidth</span>-li_init_Width</span>-s_init_width;//底部iframe要显示的宽度

31

32 //初始化

33 li.css("Width</span>",li_init_Width</span>+"px");

34 ri.css("Width</span>",ri_Width</span>+"px");

35 s.css("left",li_init_Width</span>+"px").css("Width</span>",s_init_Width</span>+"px");

36 img.css("Width</span>",s_init_Width</span>+"px").css("box-shadow","0 0 6px #666");

37

38 var is_drag = false;//是否点住并进行了拖拽

39

40

41 /**

42 分隔条事件处理,如果用户执行了mousedown,mousemove,mouseup说明是拖拽,

43 如果只执行了mousedown,mouseup说明是点击.

44 /

45

46

47 drag.unbind("mousedown").mousedown(function () {

48 //获得分隔条内拖拽层离顶边的距离

49 var li_width = parseInt(li.css("Width</span>"));

50 var ri_width = parseInt(ri.css("Width</span>"));

51

52 //分隔条div宽度设为100%,撑满屏,只有这样才能在拖拽分隔条时,有效的控制mouseup事件.

53 s.css("Width</span>","100%").css("left","0px");

54 img.css("left",li_width);

55

56 var start_x = event.clientX;

57

58 drag.unbind("mousemove").mousemove(function (event) {

59 is_drag = true;

60 var current_x = event.clientX;

61 var cha = current_x - start_x;//算偏移差量

62

63 li.css("Width</span>",(li_Width</span>+cha)+"px");

64 <span style="background-color: rgba(245, 245, 2

相关文章
|
API
在vite.config.js 配置代理
在vite.config.js 配置代理
1348 2
|
8月前
|
人工智能 自然语言处理 运维
超强辅助!Bolt.diy 自然语言建站工具一键云端部署方案
Bolt.diy 是一款从创意到部署的极速开发工具,支持多语言模型(如 OpenAI、DeepSeek 等)灵活适配,满足不同任务需求。其模块化架构提供高度定制化能力,可扩展自定义服务与私有模型。全栈开发流程覆盖代码生成、调试、版本管理到一键部署,内置数据库管理与 API 自动生成功能。智能化辅助工具实时分析代码错误并提供建议,帮助开发者高效理解复杂项目。基于云原生平台 CAP 构建,支持快速部署与实时预览,适用于快速原型设计、教育及企业级开发等场景。
186 1
|
7月前
|
人工智能 自然语言处理 Cloud Native
部署Bolt.diy测评计划
本教程介绍如何快速部署和使用云原生应用开发平台 CAP 的项目模板。通过一键部署功能,按照默认配置完成项目创建与部署,预计耗时1分钟。部署完成后,可通过访问地址进入应用示例。接着,在阿里云百炼控制台生成API-KEY,并将其复制到应用中,结合提示词进行创作。当代码生成完毕后,可预览网页效果或在控制台下载生成的代码。此流程帮助开发者高效体验AI代码生成与云端部署的全流程。
189 0
|
自然语言处理 前端开发 JavaScript
深入理解前端中的 “this” 指针:从基础概念到复杂应用
本文全面解析前端开发中“this”指针的运用,从基本概念入手,逐步探讨其在不同场景下的表现与应用技巧,帮助开发者深入理解并灵活掌握“this”的使用。
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
445 5
|
前端开发
配置 Webpack 实现热更新
【10月更文挑战第23天】还可以进一步深入探讨热更新的具体实现细节、不同场景下的应用案例,以及如何针对特定需求进行优化等方面的内容。通过全面、系统地了解 Webpack 热更新的配置方法,能够更好地利用这一功能,提升项目的开发效率和性能表现。同时,要不断关注 Webpack 及相关技术的发展动态,以便及时掌握最新的热更新技术和最佳实践。
|
Web App开发 前端开发
css小技巧——鼠标悬浮时切换图片
css小技巧——鼠标悬浮时切换图片
603 0
|
JavaScript 安全 开发工具
在 Vue 3 中使用 TypeScript
【10月更文挑战第3天】
|
缓存 NoSQL 数据库
分布式锁三种实现方式及对比
分布式锁三种实现方式及对比
445 0