making a resizable div effect in vanilla js

scroll image compare


<!DOCTYPE html>
<html lang="zh-Hans">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="author" content="xgqfrms">
<meta name="generator" content="VS code">
<title>scroll image compare</title>
<style>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
.home-sec {
padding-top: 64px;
padding-bottom: 80px;
}
.before-after {
background: #283593;
}
.home-col {
width: 100%;
max-width: 1024px;
padding-left: 32px;
padding-right: 32px;
margin-left: auto;
margin-right: auto;
box-sizing: border-box;
}
.home-sec h2 {
text-align: center;
}
.before-after .container {
width: 100%;
border-radius: 4px;
overflow: hidden;
position: relative;
cursor: col-resize;
box-shadow: 0 12px 24px 0;
rgba(0,0,0,.18);
min-height: 300px;
}
.before-after .before {
position: absolute;
height: 100%;
top: 0;
left: 0;
overflow: hidden;
border-right: 4px solid #00a2eb;
box-sizing: border-box;
}
.before-after .before img {
display: flex;
height: 100%;
}
</style>
</head>
<body>
<header>
<h1>scroll image compare</h1>
</header>
<main class="before-after home-sec">
<article class="home-col">
<h2 style="color: white;">Before &amp; After</h2>
<section class="before-after">
<div class="container">
<!-- <div class="before" style="width: 972.5px;"> -->
<div class="before" style="width: 484.5px;">
<img srcset="https://cdn.xgqfrms.xyz/css-effects-all-in-one/images/before.png">
</div>
<img srcset="https://cdn.xgqfrms.xyz/css-effects-all-in-one/images/after.png" class="after">
<!-- <div class="before" style="width: 484.5px;">
<img src="https://www.fika.io/img/origin.290c77e9.png" srcset="https://cdn.xgqfrms.xyz/css-effects-all-in-one/images/before.png">
</div>
<img src="https://www.fika.io/img/latte.f6f60fee.png" srcset="https://cdn.xgqfrms.xyz/css-effects-all-in-one/images/after.png" class="after"> -->
</div>
</section>
<div>
<a href="https://www.fika.io/">https://www.fika.io/</a>
</div>
</article>
</main>
<footer>
<p>copyright&copy; xgqfrms 2020</p>
</footer>
<!-- js -->
<script>
const log = console.log;
// const div = document.querySelector(`[class="before"]`);
const div = document.querySelector(`div.before`);
const box = document.querySelector(`div.container`);
// log(`box`, box)
// box.addEventListener(`mousedown`, (e) => {
// log(`mousedown`, e);
// });
box.addEventListener(`mousemove`, (e) => {
// log(`mousemove`, e);
const {
offsetX,
offsetY,
} = e;
// log(`offsetX`, offsetX);
// div.style.width = offsetX;
div.style.width = offsetX + `px`;
});
// box.addEventListener(`scroll`, (e) => {
// log(`scroll`, e);
// });
// box.addEventListener(`move`, (e) => {
// log(`move`, e);
// });
</script>
</body>
</html>

See the Pen scroll image compare by xgqfrms
(@xgqfrms) on CodePen.

refs

https://codepen.io/xgqfrms/pen/wvMQqZL

https://developer.mozilla.org/en-US/docs/Web/API/Element/mousemove_event

https://medium.com/the-z/making-a-resizable-div-in-js-is-not-easy-as-you-think-bda19a1bc53d



xgqfrms 2012-2020

www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!


making a resizable div effect in vanilla js的更多相关文章

  1. JavaScript代码编写尝试使用Vanilla JS 或者Jquery插件

    From Here: http://vanilla-js.com/ Vanilla JS is a fast, lightweight, cross-platform frameworkfor bui ...

  2. 动态添加div及对应的js、css文件

    动态添加div及对应的js.css文件 在近期的项目开发中需要在首页中添加很多面板型的div,直接加载代码显得很繁琐,于是利用js封装一个动态添加div及其对应css文件和js文件的方法供大家参考使用 ...

  3. js文件需要jsp页面中的div时,此js文件必须在div之后才能获得值,否则获取不到

    js文件需要jsp页面中的div时,此js文件必须在div之后才能获得值,否则获取不到 2.图2的内容为directionkey.js的内容

  4. 页面的div中有滚动条,js实现刷新页面后回到记录时滚动条的位置

    当div中绑定数据,给它一个属性overflow-y: scroll,添加长度大小,使其能够出现滚动条:每次刷新的时候滚动条总是会出现在最上方,这使我很头疼,经过查阅网上资料,返现两种方法可行.如下: ...

  5. jquery load加载页面内ajax返回的div不能响应页面js的问题的解决方案

    1. 前言 由于项目需要,需要load一个页面并保持ajax返回的div能响应其页面内的JS的click事件.这个不是 解决用jquery load加载页面到div时,不执行页面js的问题 这类问题, ...

  6. 页面DIV弹出层 JS原生脚本

    <script type="text/javascript"> /*         * 弹出DIV层         */ function showDiv() { ...

  7. [Tools] Unlock TypeScript's Features in Vanilla JS with @ts-check and JSDoc

    TypeScript can help you with your plain JavaScript files if you add a simple //@ts-check comment. Th ...

  8. js 实现div模块的截图并下载功能(可制作长图)

    当需要实现html页面部分模块截图并具有保存图片功能时,前台直接生成截图并下载会方便的多.多的不说,直接看代码首先我们需要引入2个js文件: <script type="text/ja ...

  9. JaveWeb 公司项目(7)----- 通过JS动态生成DIV

    Web网页项目的数据表格功能已经大体完成,下面是另一个主要功能,在线视频的显示 目前我做的项目是渔政监控方面,在之前C#的版本中已经实现了摄像头的在线监控,用的海康封装好的SDK,目前需要做的工作是在 ...

随机推荐

  1. 浅析Asp.Net Core框架IConfiguration配置

    目录 一.建造者模式(Builder Pattern) 二.核心接口与配置存储本质 三.简易QueryString配置源实现 四.宿主配置与应用配置 一.建造者模式 为什么提建造者模式?在阅读.NET ...

  2. 记录list.remove()和list.pop()

    list.remove(obj):这个是移除列表中某个值的第一个匹配项 list.pop(index):这个是移除列表中下标为index的元素 当元素全是数字或者有数字时注意区分.

  3. (Sql Server)Soundex语音算法

    Soundex是一种语音算法,利用英文字的读音计算近似值,值由四个字符构成,第一个字符为英文字母,后三个为数字.在拼音文字中有时会有会念但不能拼出正确字的情形,可用Soundex做类似模糊匹配的效果. ...

  4. 类型检查 Type Checking 一些编程语言并不安全 类型化语言的优点 定型环境 (符号表) 断言的种类

    Compiler http://staff.ustc.edu.cn/~bjhua/courses/compiler/2014/ http://staff.ustc.edu.cn/~bjhua/cour ...

  5. Web信息收集之搜索引擎-GoogleHacking

    Web信息收集之搜索引擎-GoogleHacking 一.信息收集概述 二.Google Hacking 2.1 site 2.2 filetype 2.3 inurl 2.4 intitle 2.5 ...

  6. SpringBoot配置文件 application.properties,yaml配置

    SpringBoot配置文件 application.properties,yaml配置 1.Spring Boot 的配置文件 application.properties 1.1 位置问题 1.2 ...

  7. vagrant虚拟化之多网卡网络配置

    vagrant虚拟化之多网卡网络配置 一.network改为public 二.查看本地主机网络的ip地址范围(最佳解决方案) 三.vagrant优秀博文 vagrant虚拟化之多网卡网络配置,通过am ...

  8. JS 实现一个实时动态校验,将输入格式错误的显示为红色背景

    功能描述: 源码: 功能描述: 实时动态校验,如果输入的格式错误,将弹窗提示输入格式错误并将背景展示为红色. 源码: 前台: <hy:formfield name="cxfdl&quo ...

  9. 设计模式c++(5)——工厂模式

    工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个.工厂方法让类把实例化推迟到子类. 总的来说,就是工厂方法模式封装了对象的创建,通过让子类决定该创建的对象是什么,来达到将对象创建 ...

  10. gcc选项 笔记

    gcc –E hello.c –o hello.i   使用gcc的选项"-E" 让gcc在预处理结束后停止编译过程. gcc –S hello.i –o hello.s   &q ...