是否可以在 div 区域中包含 box-shadow 来响应单击事件?

2023-12-12

我有一个div充当圆形按钮。它的设计使其整体外观的很大一部分来自于box-shadow:

<body style="background:black">
<div id="button" style="width: 50px; height: 50px; background: yellow; border: none; border-radius: 50px; box-shadow: 0 0 0 5px #c03, 0 0 2px 7px #fff"></div>
</body>

我有一个附加到按钮的单击事件侦听器div。不幸的是,如果div单击box-shadow as the box-shadow被渲染到外部div.

这在触摸设备上尤其是一个问题,因为手指有时不会碰到屏幕的中心。div。 (当然,如果点击在div的50px区域内,它会正常响应。)

是否可以让事件监听器响应点击box-shadow以及实际情况div?

我意识到我可以在按钮顶部使用一个单独的、更大的透明 div 并将事件侦听器附加到它,但是这样的解决方法有必要吗?

(按钮div必须采用以下样式box-shadow。我无法使用border财产或增加padding.)


是的,改变box-shadow to an inset阴影将使阴影占据的区域也可单击。一个inset实际上添加了 box-shadow元素内因此,即使单击阴影也会被视为单击div.

window.onload = function() {
  var btn = document.querySelector("#button");
  var btnOriginal = document.querySelector("#button-original");

  btn.addEventListener("click", function() {
    alert("I have been clicked");
  });
  btnOriginal.addEventListener("click", function() {
    alert("I have been clicked");
  });
}
#button {
  width: 64px;
  height: 64px;
  border: none;
  border-radius: 50px;
  box-shadow: inset 0 0 2px 2px #fff, inset 0 0 0 7px #c03;
}
#button-original {
  width: 50px;
  height: 50px;
  border: none;
  border-radius: 50px;
  box-shadow: 0 0 0 5px #c03, 0 0 2px 7px #fff;
}

/* Just for demo */

#button {
  margin: 10px;
}
#button-original {
  margin: 17px;
}
div:hover {
  cursor: pointer;
}
body{
  background: black;
<div id="button"></div><!-- modified version -->

<div id="button-original"></div><!-- original version -->

以下是将阴影更改为插图时需要考虑的一些要点:

  • 自从box-shadow里面添加了高度和宽度div应该增加一点,以确保最终结果与原始版本的大小相同。在正常情况下box-shadow版本中,形状的大小将是容器的半径+展开半径。
  • 您可能还需要调整一些边距,就像我在下面的示例中所做的那样。
  • 添加到阴影的任何模糊现在都将向内应用(也就是说,模糊将与容器的内部而不是主体混合)。我们对此无能为力。

Note: In the above snippet, I have replaced the inline style attribute's contents with CSS.


如果您希望第二个阴影(白色的阴影)向外模糊并与身体背景融合,您可以替换box-shadow with radial-gradient就像下面的示例一样。但使用有两个缺点radial-gradient,一是浏览器支持较低,二是当元素尺寸很小时,曲线不是很平滑。

window.onload = function() {
  var btn = document.querySelector("#button");
  var btn2 = document.querySelector("#button-2");

  btn.addEventListener("click", function() {
    alert("I have been clicked");
  });
  btn2.addEventListener("click", function() {
    alert("I have been clicked");
  });
}
#button {
  width: 75px;
  height: 75px;
  border: none;
  border-radius: 50%;
  background-image: radial-gradient(circle at 50% 50%, transparent 57.5%, #c03 57.5%, #c03 65%, #fff 65%, transparent 72%);
}
#button-2 {
  height: 150px;
  width: 150px;
  border: none;
  border-radius: 50%;
  background-image: radial-gradient(circle at 50% 50%, transparent 57.5%, #c03 57.5%, #c03 65%, #fff 65%, transparent 72%);
}
div:hover {
  cursor: pointer;
}
body {
  background: black;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
<div id="button"></div>
<div id="button-2"></div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在 div 区域中包含 box-shadow 来响应单击事件? 的相关文章

  • 自动调整元素 (div) 大小以适合水平内容

    我尝试谷歌搜索 但没有得到太多结果 我正在构建一个水平轮播 它在浮动的 LI 中显示图像 我想解决的问题是 每次我向轮播添加缩略图 我是延迟加载 时 我都需要重新计算轮播的宽度 以便所有浮动缩略图很好地并排排列 其一 我宁愿不必在 JS 中
  • IE 中的文件上传按钮和奇怪的文本光标行为

    我构建了一个上传按钮 其格式类似于典型的 html 按钮 而不是浏览器标准文件上传表单 该方法是设置锚元素的样式并在顶部覆盖透明文件输入元素 这种方法在除 IE 之外的所有浏览器中都可以正常工作 在 IE 中 当用户单击上传按钮时 会出现一
  • 更改 CSS 样式表的选择器属性

    以下是我们传统上如何更改重复元素的样式 将样式应用到每个元素 function changeStyle selector prop val var elems document querySelectorAll selector Array
  • 检查元素是否在视口的 30% 到 60% 之间

    我正在尝试改变颜色 li 当元素占视口的 30 到 60 之间时 所以我有这个元素网格并排堆叠 如下所示 我遇到了一些插件 例如 Waypoints Viewport Checker 和其他一些插件 但没有什么好的 任何想法 我正在使用一个
  • 如何使 html 链接看起来像一个按钮?

    我正在使用 ASP NET 我的一些按钮只执行重定向 我宁愿它们是普通链接 但我不希望我的用户注意到外观上有太大差异 我考虑过用锚点 即标签 包裹的图像 但我不想每次更改按钮上的文本时都必须启动图像编辑器 将这个类应用到它上面 button
  • 上/下箭头键与预输入控件的问题(角度引导 UI)

    检查这个PLNKR http plnkr co edit grrAxz158PTShzpxz2f0 我已经实现了预先输入控制 默认情况下 在类型提前控件中 他们不会设置任何最大高度或列表高度 但根据要求 我必须将列表高度固定为 110px
  • HTML 表格信息

    我想知道是否有任何方法可以使 html 中的表格看起来像这样 http i43 tinypic com 21dml8l png http i43 tinypic com 21dml8l png 我基本上需要第一列中的 1 个大单元格 然后第
  • 如何在图像上叠加徽标?使用CSS

    正如您所看到的 徽标显示在背景图像上方 但我希望它位于背景图像的中心 这是我的标题 背景需要从页面顶部开始并在菜单之前结束 徽标需要显示在背景图像的中央 我已经尝试了很多 但也许有人遇到了类似的问题 可以帮助我解决这个问题 这张图片显示它几
  • Bootstrap 3 按钮之间的空间

    如果我将几个 Bootstrap 3 按钮排成一行
  • 在文档流中提取一个元素

    这是示例代码 top background lightGreen content outline 1px solid red bottom background lightBlue div Top div div Lorem ipsum d
  • 为什么 Firefox 对 Helvetica 的处理方式与 Chrome 不同?

    Firefox 和 Mac 版 Chrome 中以 Helvetica 呈现的文本的垂直位置及其内容区域的大小有所不同 例如 在 Chrome 中 如果行高与字体大小相同 则下行部分将被剪裁 我调整了图中块元素的位置 保持基线一致 以说明大
  • iPad 上的网站纵向视图

    我的网站在 iPad 纵向模式下无法正确显示 它在横向模式下看起来不错 但当我将其转换为纵向模式时 我最终会得到一个混乱的网站 所有元素都分散在整个网站上 我怎样才能解决这个问题 请帮我 这是我网站的链接 inclouds co uk ht
  • 检测滚动条是否可见(例如在移动设备上)

    我见过很多关于检测 HTML 元素是否可滚动的问题 答案 例如动态检测滚动条 https stackoverflow com questions 33805052 detect scrollbar dynamically 我需要类似的东西
  • Chrome 中的混合混合模式问题

    我一直在尝试在包含 css 不透明度过渡实例的页面上使用混合混合模式 似乎正在发生的情况是 包含 mix blend mode 的 div 在过渡期间 或者更确切地说 在动画进行过程中 显示得与没有混合模式时一样 我只发现这是 Chrome
  • 使用 Flexbox 时 Apex 图表无法正确调整大小

    最近 我将 Floats 更改为 FlexBox 以便更轻松地使用面板 正如我在其他问题上所建议的那样 虽然大多数事情都按我的预期工作 但更改后我在使用 Apex Charts 时遇到了问题 完整代码在这里 https github com
  • Sitecore 多种 RTE 类样式

    我可以为 RichTextEditor RTE 添加 CSS 样式路径 如下所示 并且我可以在 RTE 中选择定义的样式
  • 推迟未使用的 CSS

    我有一个关键的 CSS 流程 可以防止页面首屏内容出现无样式内容闪现 FOUC 我陷入了 推迟未使用的 CSS 这一点 Google PageSpeed 见解 灯塔 和 或 Chrome 的性能审核强调了这一点 我已经阅读了其他文章 但它们
  • BS3 - img 响应类 - 为什么没有最大高度?

    引导程序 3 包括 img responsive班级 应用这些 css 设置 display block height auto max width 100 为什么没有max height 100 我发现添加这个使得图片的高度也适合 但我不
  • 容器中的等间距 div

    这是我的例子 http jsfiddle net rtCP3 62 http jsfiddle net rtCP3 62 我有 3 个 或更多 div 我想在一个容器中均匀分布 当将 Angular 与 ng repeat 一起使用时 样式
  • ng-show 令人不安的 div 布局 - angularJS

    我在用ng show notesOpened 如果notesOpened 变量为true 则隐藏div 然而 当隐藏时 它会扰乱布局 有没有办法让 ng show 的行为与 css 属性相同visibility hidden 以便被隐藏的

随机推荐

  • 如何在 Android 中将颜色 LUT 应用于位图图像以获得滤镜效果?

    这里我有一个关于 android 中的 LUT 的问题 我的问题是 我有 4X4 LUT 使用这些 LUT 对 Android 中的位图图像应用滤镜效果 下面是我的示例 LUT 文件链接 Lut 链接示例 在安卓上可以实现吗 如果可以的话请
  • 如何在 Eclipse Juno/Kepler/Luna CDT 中启用 C++11?

    编辑 事实证明这确实不是 Eclipse Kepler 特有的 我必须对 Eclipse Juno 使用相同的过程 问题是 在回答同一问题的其他帖子中似乎缺少步骤 我正在使用 Eclipse Kepler for C 并尝试使用 C 11
  • 在 Linux 中混合使用 32 位和 64 位库 (gcc)

    我有一个为 Linux 使用 gcc 构建的 32 位纯二进制 C so 由供应商提供 我需要链接到 64 位 C C 应用程序 我正在开发 有什么方法可以从我的应用程序访问这个库吗 我知道需要小心处理 so 内部函数的参数和指针 而且我知
  • 如何将向量转换为Json对象? C++

    我有一个 RoomData 对象向量 这是该对象 typedef struct RoomData unsigned int id std string name std string maxPlayers unsigned int ques
  • setTimeout 循环。如何获得正确的订单

    我试图在循环中调用一个函数以实现不同的超时或延迟 for var i 0 i lt 10 i callDelayedFunction i function callDelayedFunction i setTimeout function
  • 将多个对象从 Angular 控制器发布到 Web API 2

    我能够从我的角度控制器发送一个原始 json 对象 该对象在我的 web api 方法中反序列化为已知类型 这很棒 但我现在需要能够在同一请求中发送其他参数 这些参数可以是 json 对象或简单类型 如 string 或 int 我看过类似
  • 同一域上的 CloudFront 静态网站和 EC2 API

    我的静态网站托管在 CloudFront 上 有没有办法让我使用相同的域名但不同的端口来调用 EC2 实例的 API Eg example com 3000应重定向到 EC2 实例 而example com aka example com
  • 通过隔行扫描加载图像 - 从低分辨率到全分辨率 - HTML

    我正在创建一个使用图像作为背景的网站 我讨厌从上到下加载图像 因为它只会使页面在加载时看起来很糟糕 我见过一些网站加载非常低分辨率的图像 然后逐渐提升到全分辨率照片 我希望我的网站也能这样做 但我不知道如何实现 这是否需要多个图像文件和更多
  • 从麦克风获取音频并将其写入 iOS 上的套接字

    这就是我想做的 从麦克风获取音频 采用 AAC G 711 或 G 726 编码 将编码帧写入套接字 我找到了很多例子 但它们都写入文件 您能否将我链接到任何具有输出缓冲区或回调的教程 文档 示例 库 我通过修改 Apple 的 Speak
  • 什么是 JAXB?为什么要使用它? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 这里有人发誓 JAXB 是自切片面包以来最伟大的东西 我很好奇 Stack Overflow 用户认为 JAXB 的用例是什么 以及是什么使它成为该用例的好或坏解决方案 我是用于操作 XM
  • JavaFX 和 Spring Boot - NPE

    我仍在与我的问题作斗争 我想使用 Spring Framework 来注入依赖项 并且必须使用 Spring boot 来集成两者 不幸的是 在第一个视图中 自动装配运行正确 但如果我进入下一个阶段 我仍然只能Null Pointer Ex
  • 是否可以检查对象是否已附加到实体框架中的数据上下文?

    当尝试附加已附加到给定上下文的对象时 我收到以下错误context AttachTo ObjectStateManager 中已存在具有相同键的对象 ObjectStateManager 无法跟踪具有相同键的多个对象 有没有一种方法可以实现
  • Xcode 4.4.1:git 不再显示修改

    不幸的是 突然间 我无法确定 Xcode 停止显示 git 信息的发生时刻 也无法从 Xcode 内部通过 git 提交 恢复 等 如果我检查组织者的存储库 我的项目仍会列出其上次提交 使用命令行 git status 我可以看到所有未暂存
  • PHP 中的 Session 和 Cookie 有什么区别?

    两者有什么区别Sessions and Cookies in PHP Cookie 是浏览器存储的一点数据 并随每个请求发送到服务器 会话是存储在服务器上并与给定用户关联的数据集合 通常通过包含 ID 代码的 cookie
  • 谷歌+登录,安卓登录时反复出现唱机提示

    我是安卓开发新手 我正在将 google plus 登录集成到我的应用程序中 我有点困惑谷歌的歌唱提示重复出现 我不明白为什么 我有什么问题吗 我正在关注谷歌开发者网站做这个东西 我使用多个谷歌帐户测试了该应用程序 但其中 2 个工作正常
  • 如何从 Scrapy 获取 UTF-8 编码的 unicode 输出?

    耐心听我说 我之所以写下每一个细节 是因为工具链的很多部分都不能很好地处理 Unicode 并且不清楚是什么原因导致的 PRELUDE 我们首先设置并使用最近的 Scrapy source scrapy 1 1 2 bin activate
  • 如何使用 iPhone sdk 将 XML 字符串转换为 JSON

    我正在实现一个基于客户端的应用程序 我有一个 xml 字符串 我需要将其转换为 JSON 格式并发送到服务器 我不知道如何转换这个 你们能给我建议任何文档或想法吗 步骤 1 将 XML 读入 NSDictionary http troybr
  • 在 Eclipse 中使用 -parameters 选项进行反射

    要使用 java 反射获取方法参数名称 我们必须使用 parameters 选项编译 Java 类 但是当我使用 VM Arguments 从 eclipse 中执行此操作时 我在控制台中收到以下错误 Unrecognized option
  • OpenCSVSerde escapeChar 覆盖 quoteChar

    我有许多 csv 文件正在导入到 Hive 中 并且我发现新行的 escapeChar 会被触发 即使它位于引用字段 即我的 quoteChar 内 有什么简单的方法可以解决这个困境吗 Line1field1 text Line1field
  • 是否可以在 div 区域中包含 box-shadow 来响应单击事件?

    我有一个div充当圆形按钮 它的设计使其整体外观的很大一部分来自于box shadow div style width 50px height 50px background yellow border none div 我有一个附加到按钮