首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

仅当为彼此重叠的多个div单击按钮时才开始css动画

当为彼此重叠的多个div单击按钮时才开始CSS动画,可以通过以下步骤实现:

  1. 首先,为每个div按钮添加一个共同的类名,例如"overlap-button"。
  2. 使用CSS选择器来选中这些具有共同类名的按钮,并为它们添加一个共同的事件监听器。
  3. 在事件监听器中,使用JavaScript来判断是否有多个按钮被点击,并且它们重叠在一起。可以通过获取每个按钮的位置和尺寸信息,然后进行比较来判断是否重叠。
  4. 如果多个按钮被点击且重叠在一起,添加一个CSS类名来触发CSS动画效果。这个CSS类名可以包含动画效果的样式属性,例如旋转、缩放、淡入淡出等。
  5. 如果按钮不再重叠或只有一个按钮被点击,移除CSS类名,以停止动画效果。

以下是一个示例代码:

HTML:

代码语言:txt
复制
<div class="overlap-button"></div>
<div class="overlap-button"></div>
<div class="overlap-button"></div>

CSS:

代码语言:txt
复制
.overlap-button {
  width: 100px;
  height: 100px;
  background-color: blue;
  margin: 10px;
}

.overlap-button.animate {
  animation: myAnimation 1s infinite;
}

@keyframes myAnimation {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

JavaScript:

代码语言:txt
复制
const buttons = document.querySelectorAll('.overlap-button');

buttons.forEach(button => {
  button.addEventListener('click', () => {
    const clickedButtons = Array.from(buttons).filter(btn => btn.classList.contains('clicked'));
    
    if (clickedButtons.length > 1 && checkOverlap(clickedButtons)) {
      clickedButtons.forEach(btn => btn.classList.add('animate'));
    } else {
      buttons.forEach(btn => btn.classList.remove('animate'));
    }
    
    button.classList.toggle('clicked');
  });
});

function checkOverlap(buttons) {
  for (let i = 0; i < buttons.length - 1; i++) {
    const rect1 = buttons[i].getBoundingClientRect();
    
    for (let j = i + 1; j < buttons.length; j++) {
      const rect2 = buttons[j].getBoundingClientRect();
      
      if (!(rect1.right < rect2.left || 
            rect1.left > rect2.right || 
            rect1.bottom < rect2.top || 
            rect1.top > rect2.bottom)) {
        return true;
      }
    }
  }
  
  return false;
}

这段代码会为每个具有"overlap-button"类名的div按钮添加点击事件监听器。当多个按钮被点击且重叠在一起时,它们会添加一个名为"animate"的CSS类名,触发旋转动画效果。当按钮不再重叠或只有一个按钮被点击时,移除"animate"类名,停止动画效果。

请注意,这只是一个示例代码,实际情况中可能需要根据具体需求进行调整和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

移动开发实用

通常我们再滑屏页面,会调用csshtml{-ms-touch-action: none;}可以阻止默认情况发生:阻止页面滚动MSPointerUp——手指离开屏幕触发 移动端click屏幕产生...造成后果用户纯粹单击页面,页面需要过一段时间响应,给用户慢体验感觉,对于web开发者来说 是,页面js捕获click事件回调函数处理,需要300ms后生效,也就间接导致影响其他业务逻辑处理。...1/2,例如视觉稿40px字体,使用样式写法20px .css{font-size:20px} 参考《高清显示屏原理及设计方案》 ios系统中元素被触摸产生半透明灰色遮罩怎么去掉 ios用户点击一个链接...另外,有些机型去除不了,如小米2 对于按钮类还有个办法,不使用a或者input标签,直接用div标签 参考《如何去除android上a标签产生边框》 winphone系统a、input标签被点击产生半透明灰色背景怎么去掉...开始100%结束,0%百分号不能去掉 after和before伪类无法使用动画 border-radius不支持%单位 translate百分比写法和scale在一起会导致失效,例如-webkit-transform

6.4K30

学习jQuery这一篇就够了

注意:如果存在(不存在)就删除(添加)一个样式类 需求描述:单击按钮时候,隐藏 div,再次单击按钮时候,显示 div .hide { width: 100px; height...需求描述:按钮添加单击事件,按钮单击时候,向控制台输出 “按钮单击了” 按钮 $('button').on('click',function () {...需求描述: ul 下所有 li 添加单击事件,要求将该单击事件委托给 ul,单击 li ,所对应 li 背景变为红色 1111 2222</...需求描述:文本框获取焦点,设置其背景红色,文本框失去焦点,设置其背景绿色 $(':text').focus(function () { $(...需求描述:按钮绑定一个单击函数,然后点击按钮,在控制台输出 “按钮单击了” 按钮 $('button').click(function () { console.log

81050

jQuery (二)

使用jQuery处理事件 事件处理 一个栗子,单击p背景变成灰色 由于es6箭头函数不支持this绑定,所以无法使用箭头函数,只能使用匿名函数 html js // 单击任意p,使其背景变成灰色 $('p').click(function () { $(this).css('background-color',...https://api.jquery.com/category/events/event-object/ 自定义事件 一个栗子,实现发布订阅模型,先全体元素广播一个事件,在单击一个按钮时候 $('#...()方法第一个参数必须对象,该对象必须css属性名(使用驼峰命名法) 动画只支持数值属性,不支持颜色,字体,或者display枚举属性。...如果false将会保持当前值,然后开始执行动画 // 当属性悬浮在图片上,图片将会不透明 $('img').bind({ mouseover: function () { $(this).stop

9.3K30

CSS中鼠标滑过图片放大效果

刚刚看了下感觉还不错,纯CSS实现,虽然在开发主题CSS3用比较少。...整一个图片放大特效还是比较酷。 但在写代码之前,我们要做就是: 悬停在上面的卡应该在保持长宽比同时展开。 一张牌悬停,其他牌不应改变大小并向外移动,以免彼此重叠。...CSS3中鼠标滑过图片突出放大效果 悬停展开项目 我们下一步是让项目在悬停展开。...因为我们设置了一个项目在悬停可以放大150%,所以转换应该设置25%。这是悬停项所占用额外空间一半。...由于通用同级组合器适用于位于给定选择器之后同级(没有“向后”),因此我们需要另一种方法。 一种方法是在父容器本身上添加其他悬停规则。这是计划: 悬停父容器,请将该容器内所有项目向左移动。

8.2K10

Web阶段:第五章:JQuery库

获取最后个元素 :not(selector) 去除所有与给定选择器匹配元素 :even 匹配所有索引值偶数元素,从 0 开始计数 :odd 匹配所有索引值奇数元素,从 0 开始计数 :eq(...,(单位是毫秒) 第二个参数是 动画执行完成回调函数 hide() 隐藏可见元素 第一个参数是 动画执行时候,(单位是毫秒) 第二个参数是 动画执行完成回调函数 toggle() 可见就隐藏...,隐藏状态就显示 第一个参数是 动画执行时候,(单位是毫秒) 第二个参数是 动画执行完成回调函数 淡入淡出动画 fadeIn() 淡入 让隐藏可见 fadeOut() 淡出 让可见消失 fadeTo...jquery动画定义了很多种动画效果,可以很方便使用这些动画效果 练习:CSS_动画 品牌展示 需求: 1.点击按钮时候,隐藏和显示卡西欧之后品牌...2.显示全部内容时候,按钮文本“显示精简品牌” 然后,小三角形向上。所有品牌产品默认颜色。 3.只显示精简品牌时候,要隐藏卡西欧之后品牌,按钮文本“显示全部品牌” 然后小三形向下。

26.1K20

浏览器合成与渲染层优化

渲染层合成(Composite):多个绘制后渲染层按照恰当重叠顺序进行合并,而后生成位图,最终通过显卡展示到屏幕上。...渲染层合成 一、什么是渲染层合成 在 DOM 树中每个节点都会对应一个渲染对象(RenderObject),它们渲染对象处于相同坐标空间(z 轴空间),就会形成一个 RenderLayers,...在平时开发过程中,我们很少会去关注层合成问题,很容易就产生一些不在预期范围内合成层,这些不符合预期合成层达到一定量级,就会变成层爆炸。...2、层压缩 当然了,面对这种问题,浏览器也有相应应对策略,如果多个渲染层同一个合成层重叠,这些渲染层会被压缩到一个 GraphicsLayer 中,以防止由于重叠原因导致可能出现“层爆炸”。...利用 Chrome Devtools 分析之后不难发现,页面里边存在一个带动画 transform button 按钮,提升为了合成层,动画交叠不确定性使得页面内其他 z-index 大于它但其实并没有交叠节点也都全部提升为了合成层

1.8K51

JQuery

-- 需求:按钮 div按钮单击控制div隐藏 display:none style --> 按钮 <...css()----和prop()完全相同 rgb颜色:三个0黑色 小驼峰fontSize和font-size都对 在字典中,如果是有字符和数字混合形式,那么必须写引号。...> 按钮 div 8.animate jQuery提供一个程序员可以根据自己需求封装动画效果或功能函数...animate(字典形式动画过程,动画时间,运动曲线,回调函数) 4个参数,只有参数1是必填项{} 动画时间 毫秒单位,默认值是600; 运动曲线:字符串形式 linear(默认值) 和swing...').animate(字典形式动画过程, 动画时间, 运动曲线, 回调函数) // animate4个参数只有参数1是必填项 {} // 动画时间 毫秒单位

7.7K20

WecTeam:从手机滚动丢帧问题,学习浏览器合成与渲染层优化

渲染层合成(Composite):多个绘制后渲染层按照恰当重叠顺序进行合并,而后生成位图,最终通过显卡展示到屏幕上。...渲染层合成 一、什么是渲染层合成 在 DOM 树中每个节点都会对应一个渲染对象(RenderObject),它们渲染对象处于相同坐标空间(z 轴空间),就会形成一个 RenderLayers,...在平时开发过程中,我们很少会去关注层合成问题,很容易就产生一些不在预期范围内合成层,这些不符合预期合成层达到一定量级,就会变成层爆炸。...2、层压缩 当然了,面对这种问题,浏览器也有相应应对策略,如果多个渲染层同一个合成层重叠,这些渲染层会被压缩到一个 GraphicsLayer 中,以防止由于重叠原因导致可能出现“层爆炸”。...利用 Chrome Devtools 分析之后不难发现,页面里边存在一个带动画 transform button 按钮,提升为了合成层,动画交叠不确定性使得页面内其他 z-index 大于它但其实并没有交叠节点也都全部提升为了合成层

1.5K20

10分钟内就可以学会几个CSS高招

学习基本 CSS ,你将更好地控制你代码创造力和自由度,直到我进入 Web 开发职业生涯后,我得到最好建议是学习 CSS 盒模型,因为当你理解它,语言开始变得更有意义,事实上它很简单,我现在就教你盒子模型...它还在 HTML 中提供了有用注释,例如一个元素导致另一个元素溢出,Firefox 还为 flex 和网格布局提供了非常漂亮图形,谈到哪个布局或元素相对于彼此位置历来是最重要布局之一。...实现这一目标的一种方法是每个元素应用不同动画延迟,但这是非常重复且难以重构。 ?...一种更复杂方法是每个定义其顺序项目定义一个内联 CSS 变量,然后我们可以将动画延迟定义顺序变量 100 次毫秒计算。 ?...现在,你很可能熟悉,当你进入表单输入或单击按钮应用于元素焦点伪类。 ? 问题在于构建下拉菜单,你可能会使用焦点打开菜单,但是当你单击该菜单内某些内容,它会失去焦点并关闭。

1.4K20

Interection Observer如何观察变化

首先,目标元素要比根元素高,因此永远不会将其报告“内部”。单击“切换目标大小”按钮以使其小于根。现在,上下滚动目标元素可以位于根元素内部。...通过再次单击“toggle target size”,然后单击“toggle root size”按钮,将目标元素恢复其原始大小。这将调整根元素大小,使其比目标元素高。...目标首次进入根元素,将创建滚动事件侦听器,然后在目标离开根元素将其删除。滚动,输出显示每个事件时间戳,以实时显示事件变化-比单独观察者要精确得多。 下面是JavaScript。...事件回调函数更新输出中div。每当目标触发相交变化并且不与根相交,我们会将输出设置回零。 这个实例利用了Intersection Observer和滚动事件优点。...考虑使用一个滚动动画库,该动画库仅在页面上需要它部分实际可见起作用。库和滚动事件在整个页面中并非无效地活动。

2.5K20

移动端web开发笔记

造成后果用户纯粹单击页面,页面需要过一段时间响应,给用户慢体验感觉,对于web开发者来说是,页面js捕获click事件回调函数处理,需要300ms后生效,也就间接导致影响其他业务逻辑处理。...字体,使用样式写法20px .css{font-size:20px} 6、ios系统中元素被触摸产生半透明灰色遮罩怎么去掉 ios用户点击一个链接,会出现一个半透明灰色遮罩, 如果想要禁用,可设置...另外,有些机型去除不了,如小米2 对于按钮类还有个办法,不使用a或者input标签,直接用div标签 8、winphone系统a、input标签被点击产生半透明灰色背景怎么去掉 <meta name...和opacity来设计CSS3动画, 不使用positionleft和top来定位 利用translate3D开启GPU加速 26、android 上去掉语音输入按钮 input::-webkit-input-speech-button...fastclick 加快移动端点击响应时间 animate.css CSS3动画效果库 Normalize.css Normalize.css是一种现代CSS resetHTML5准备优质替代方案

3.5K20

前端动效讲解与实战

Canvas只占用一个DOM节点,在做一些烟花、飘雪等运动元素很多动画,会比CSS/SVG性能好。性能比较一般情况下,随着屏幕大小增大,canvas将开始降级,因为需要绘制更多像素。...SETUP模式确保选中右边视图中根骨骼,创建骨骼必须要选中父骨骼单击左下角Create按钮开始依次创建出5根骨骼创建蒙皮网格然后我们需要给手部创建蒙皮网格(MESH),如下图所示: 图片首先,单击创建骨骼...Create按钮,退出骨骼创建模式选中手部贴图(Attachment)勾选其底部Mesh选项单击右下角Edit按钮呼出了Edit Mesh菜单勾选Edit Mesh菜单中Deformed选项单击Edit...Mesh菜单中Create按钮开始在手部创建网格顶点可以单击Edit Mesh菜单中Modify按钮对顶点进行位移设置网格点权重我们需要给网格顶点设置各个骨骼权重,整个过程如下图所示:图片首先,...关闭Edit Mesh菜单确认勾选还是手部贴图单击左下角Weights按钮,呼出Weights菜单单击Weights菜单底部Bind按钮,来绑定骨骼选择手部五根骨骼,直到它们都出现Weights

2.6K30

我至今没想到,我也能在 CSS 中实现 SVG 动画

我们可以延长动画持续时间,但不能添加不同关键帧。 于是,这就催生了一个更强大概念: CSS animation。使用 CSS animation,我们可以有多个关键帧和一个无限循环。...,彼此完全重叠。...然后,我们添加一个单击事件侦听器。触发 click 事件,我们只在 本身上切换 .is-active 类,而不是在层次结构中更深入地切换。...CSS 和一个简短 JavaScript 片段构建了一个功能齐全动画按钮。...这将使动画在页面加载立即开始。 现在我们终于完成了这个动画过程。 结尾 目前,我们只接触 CSS 动画皮毛,例如知道了如何手工绘制 SVG 代码以实现简单动画

62910

JQuery最全常用方法指南

”).before(content); 与after方法相反 $(”元素名称”).clone(布尔表达式) 布尔表达式,克隆元素(无参,当作true处理) $(”元素名称”).empty(...,则触发指定第一个函数,再次点击同一元素,则触发指定第二个函数。...这是一个Ajax事件 AJAX请求开始(并还没有激活)显示loading信息 $(”#loading”).ajaxStart(function () { $(this).show(); })...这个动画只调整元素不透明度,也就是说所 有匹配元素高度和宽度不会发生变化。 stop() 停止所有匹配元素当前正在运行动画。如果有动画处于队列当中,他们就会立即开始。...) $(”td: gl(4)”) 匹配集合中指定位置之前所有元素(从0开始) $(”: header”) 匹配所有标题 $(”div: animated”) 匹配所有正在运行动画所有元素 内容过滤选择器

10.9K20

vue课程大全

.这些属性值发生改变,视图将会产生响应,即匹配更新值.vue设计就相当于替代jquery.让程序员只关心数据,不再关心过程是怎样操作dom 模板语法 插值表达式 {{msg}}输入纯str...transition 组件中元素,Vue 将会做以下处理:自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,在恰当时机添加/删除 CSS 类名。...(注意:此指浏览器逐帧动画机制,和 Vue nextTick 概念不同) 上例涉及到过渡css类名 在进入/离开过渡中,会有 6 个 class 切换。v-enter:定义进入过渡开始状态。...在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。v-leave: 定义离开过渡开始状态。在离开过渡被触发立刻生效,下一帧被移除。...css动画可结合animate等库 初始渲染过渡 在transition加上appear属性设定刚开始动画 过渡模式(两个按钮之间切换) 需要将第二个按钮加上css相对位置 在div上设定position

1.6K20

前端(二)-CSS

其作用是规定表格相邻单元格边框之间距离。如果表格border-collapse属性值collapse,border-spacing设置无效。...,而是浏览器窗口; 使用场景:在窗口左右两边固定广告、返回顶部图标、吸顶导航栏等; 6.4 z-index属性 调整元素定位重叠上下位置 ; 1.z-index属性值:整数,默认值...0 ; 2.设置了positon属性,z-index属性可以设置各元素之间重叠高低关系 ; 3.z-index值大层位于其值小层上方; 7、动画 7.1 变形 transform 函数...:速度先加速再减速(渐显渐隐效果); 7.2.4 过渡延迟时间( transition-delay ) 指定一个动画开始执行时间,改变元素属性值后多长时间去执行过渡效果 ; 正值:元素过渡效果不会立即触发...:active 控制按钮被点击显示效果 :focus 获得聚焦对象元素 :checked 选中 2.媒体查询:通过@media属性判断设备尺寸,方向等 JavaScript触发: 3.

1.8K20

❤️使用 HTML、CSS 和 JS 创建响应式可过滤游戏+工具展示页面 ❤️

单击这些类别中任何一个。然后可以看到该类别中所有作品,而隐藏其余作品。结果,用户可以轻松地找到他选择图像。 我首先在网页上创建了一个导航栏。在这里创建了五类按钮,一共使用了15张图片。...在导航栏中分类中,你可以看到与您点击分类相关作品。同样,单击另一个类别,该类别的作品将被看到,其余将被隐藏。我让它完全响应,以便它可以在所有设备上使用。...当你单击一个类别,这些类别中每一个都将与图像并排显示。例如,如果您单击具有四个图像类别。第一行有两个图像,第二行有两个图像。...单击此类别,该类别其余部分中所有图像将被隐藏,所有四个图像将并排显示。以下代码已用于使此重定位更加生动。此处使用了 0.5 秒,这意味着更改该位置需要 0.5 秒。...; } 100%{ opacity: 1; } } 单击一个类别,其他所有其他项目都将被隐藏。

6.4K20
领券