jQuery实现类似Chrome控制台可拖拽改变宽度的样式
最近项目进程紧张,没法再愉快的网上冲浪了
因为项目需要实现一个页面上可拖拽改变div宽度的功能,类似效果如Chrome的右侧调试台样式:
大概思路为:
1.使用mousemove()方法,将鼠标的位置动态的赋予拖拽层
2.使用mousedown()方法,在鼠标被按下未抬起的过程中执行mousemove()
3.使用mouseup()方法,在鼠标按下并抬起后不执行mousemove()
实现步骤为:
先搭好页面静态样式
//左边区域
<div id="main">
<div id="left"></div>
<div id="right"></div>
</div>
//可拖拽区域,border充当鼠标点击的区域
<div id="div">
<div id="content">可拖拽</div>
<div id="border"></div>
</div>
html,
body {
padding: 0;
margin: 0;
overflow: hidden;
} #main {
display: inline-flex;
position: absolute;
z-index: 1;
} #left {
flex: 2;
height: 100%;
background-color: cadetblue;
} #right {
flex: 10;
height: 100%;
background-color: cornsilk;
} #div {
width: 100px;
background-color: bisque;
position: absolute;
right: 0;
z-index: 2;
} #content {
padding-left: 5px;
} #border {
height: 100%;
width: 5px;
cursor: e-resize;
background-color: black;
position: absolute;
top: 0;
left: 0;
}
再写js代码
//给div的初始赋值
var height = window.innerHeight;
var width = window.innerWidth;
$('#div').css({ 'width': width * 0.12, 'height': height })
$('#main').css({ 'width': width, 'height': height }) move();
//动态赋值函数
function move() {
var _move = false; //赋值标志,为真时给拖拽层赋值 //鼠标按下但未抬起
$("#border").mousedown(function (e) {
_move = true;
}) //鼠标移动
$(document).mousemove(function (e) {
//标志为真时赋值
if (_move) {
//用文档的可见区域宽减去当前鼠标相对于文档左边缘的宽度,得到的值即为拖拽层的宽度
var x = window.innerWidth - e.pageX;
//设置拖拽层最小宽度
if (x <= window.innerWidth * 0.01) {
x = window.innerWidth * 0.01;
}
// 设置拖拽层最大宽度
if (x >= window.innerWidth) {
x = window.innerWidth;
}
//给div设置宽度
$('#div').css('width', x)
}
}).mouseup(function () {
//鼠标按下并抬起
_move = false;
});
}
此时,页面基本上已经可以实现拖拽赋值的效果了,但是我发现在改变浏览器大小时,元素的大小并不会随之改变,而是要刷新后才可以
这样非常影响使用感,所有我又调用了window.onresize()方法,在每次窗口被调整大小时给元素重新设置宽高即可
window.onload = function () {
setSize();
} window.onresize = function () {
setSize()
} function setSize() {
var height = window.innerHeight;
var width = window.innerWidth;
$('#div').css({ 'width': width * 0.12, 'height': height })
$('#main').css({ 'width': width, 'height': height })
} move();
function move(){
...同上
}
最终效果为:
jQuery实现类似Chrome控制台可拖拽改变宽度的样式的更多相关文章
- table可拖拽改变宽度
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- extjs grid禁止表格头部使用鼠标拖拽改变宽度
extjs6 经典版 表格头部使用鼠标拖动 禁止改变列的宽度 只需要给grid 设置属性enableColumnResize:false就可以啦 xtype:'grid', enableColumnR ...
- jQuery拖拽改变元素大小
一个非常简单的例子,体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/29.htm 以下是完整代码,保存到HTML文件打开也可以体验效果. <!DOCTY ...
- jquery插件之拖拽改变元素大小
该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的拖拽改变元素大小的效果,您可以根据自己的实际需求来设置被 ...
- JQuery拖拽改变元素的尺寸
"元素拖拽改变大小"其实和"元素拖拽"一个原理,只是所动态改变的对象不同而已,主要在于 top.left.width.height 的运用,相对实现起来也非常容 ...
- 拖拽改变div的大小
拖拽改变div的大小 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type&qu ...
- JavaScript动画-拖拽改变元素大小
▓▓▓▓▓▓ 大致介绍 拖拽改变元素大小是在模拟拖拽上增加了一些功能 效果:拖拽改变元素大小 ▓▓▓▓▓▓ 拖拽改变元素大小原理 首先这个方块得知道我们想要改变这个它的大小,所以我给它设定一个范围,当 ...
- javascript动画系列第四篇——拖拽改变元素大小
× 目录 [1]原理简介 [2]范围圈定 [3]大小改变[4]代码优化 前面的话 拖拽可以让元素移动,也可以改变元素大小.本文将详细介绍拖拽改变元素大小的效果实现 原理简介 拖拽让元素移动,是改变定位 ...
- Winform拖拽改变无边框窗体大小
大家在进行Winform开发过程中,很容易就可以完成一个窗口的布局工作,但现在的软件界面美化效果一个比一个好,很多软件都是无边框的,于是乎,你是不是也感叹:winform的带边框的窗体如此丑陋,我一定 ...
随机推荐
- Block-wise 2D kernel PCA/LDA for face recognition-笔记
In the present work, we propose a framework for kernel-based 2D feature extraction algorithms tailor ...
- MySQL 8.0新增特性详解【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
- 如何使用modelarts训练海量数据
在modelarts上使用notebook上使用evs空间默认大小是5G,能满足大部分文本和图片训练模型的需求.如果训练数据稍微超过这个限额,可以适当的扩增下空间.但如果训练对象是视频,或是实际生成过 ...
- 程序计数器(PC)、堆栈指针(SP)与函数调用过程
PC(program counter)是CPU中用于存放下一条指令地址的寄存器,SP为堆栈指针.下面将介绍函数调用过程中CPU对PC和SP这两个寄存器的操作. 假设有如下函数Fun Fun() { … ...
- HDU3870-Caught these thieves(最小割->偶图->最短路问题)
A group of thieves is approaching a museum in the country of zjsxzy,now they are in city A,and the m ...
- ARTS-S pytorch用c++实现推理
训练的代码,以cifar为例 # -*- coding: utf-8 -*- import torch import torchvision import torchvision.transforms ...
- cmake 简介
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...
- 基于iCamera测试宽动态全局摄像头mt9v034或mt9v032小结
基于iCamera测试宽动态全局摄像头mt9v034或mt9v032小结 先看看硬件特点 主要是:全局快门.宽动态 然后看看硬件测试,usb采集出图 再看看寄存器配置 主要测试,可以修改分辨率,修改曝 ...
- 【MyBatis-Plus】使用学习
[MyBatis-Plus]使用学习 ============================================== 1.插入和更新字段空和非空控制 2.插入和更新字段填充策略 ==== ...
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...