Javascript math "draw"矩形围绕多个其他矩形实现背景效果

标签 javascript jquery css math position

注意:我会将overlaybackdrop 互换使用。

我目前正在开发一种引导模式,我会突出显示元素以使它们从较暗的半透明背景中脱颖而出。

所以基本上,我有一个选择器用于我不想被覆盖的元素,然后我用半透明的深色 div 围绕它,模拟具有排除元素的覆盖。

我的解决方案适用于一个突出显示的元素,但当该数字变为 2+ 时,就很难计算如何在这些元素周围放置黑色 div。问题是:突出显示的需求会因页面而异 - 多个元素不会是静态的。

所以为了说明我的问题:

enter image description here

在这里你可以看到需要放入页面的不同框,以便用半透明的深色div包围Box2和Box2,基本上模拟高亮元素的叠加效果。对于这种情况,我可以硬编码计算,一切都会好起来的,但是如果 Box1 比 Box2 高怎么办?那么如果它们不再水平重叠呢?如果有一个 Box3 需要高亮怎么办?

无论哪种情况,我都不知道要放置多少个暗箱以及放置它们的位置。

在这种情况下,是否有任何数学公式可以帮助我? jQuery 的使用也是可能的,因为它包含在我的元素中。

我将如何解决这个问题并使其可扩展(多个盒子,不同的位置)?

最佳答案

你想多了! 您正在寻找的东西可以通过特定的 HTML 和 CSS 布局来实现。

你必须使用类似这样的布局:

.container
    .overlay
    .box
    .box
    .box
    .box

诀窍是使用全宽、半透明的叠加层,并将需要突出显示的元素放在前面。非常重要的是将 pointer-events: none 分配给叠加层,这样您就可以点击它了!

使 .box 有一个 z-index 值,比方说,1.overlay 有一个z-index 值为 100。为了高亮某个.box,设置它的z-index101。这样它就会突出显示。

我现在在移动设备上,但我在 Codepen 上做了一个基本的概念验证。单击框以突出显示它们,再次单击以撤消。适用于多个盒子!

关于Javascript math "draw"矩形围绕多个其他矩形实现背景效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42667539/

相关文章:

javascript - 为什么我的 javascript 函数的一部分无法运行,即使它在语法上是正确的?

jquery - 当在其上调用 jquery html() 时,内联 block div 向下移动

html - 更改 Bootstrap 导航栏的颜色并降低导航栏的高度

javascript - 使用绑定(bind)函数删除 EventListener

javascript - 在 Console.Log() 中显示 HTML 而不是 jQuery 选择对象

javascript - 当类包含函数时如何比较两个类实例

javascript - 每个元素的 jQuery 动画

jquery - 修复除一个主要内容 div 之外的整个页面

html - 仅在 Bootstrap 列内部有边框

html - 设置输入文本框大小的替代方法?