CSS扩展可点击区域

们先假设我们有如图所示的简单的一个按钮

然后我们希望它的点击面积增加10px,四个方向都是。我们已经为它应用了一些简单的样式,包括cursor: pointer,这不仅可以为鼠标交互提供一些方便,还可以帮我们测试点击区域在哪。

扩展点击区域的最简单的方法是一个透明的实线边框,因为鼠标和边框的交互也会作用在元素之上,不像outline和shadow。例如,把一个元素的点击区域在所有方向上扩展10px,代码可以简单地这样写:

border: 10px solid transparent;

但是,正如你在下图中看到的,效果不是很好,因为这让我们的按钮变大了!

原因是背景默认扩展了其下方的边框。background-clip可以帮助裁剪背景,如下:

border: 10px solid transparent; background-clip: padding-box;

如上图所示,显示没有问题。但是等你在按钮周围做一个实际的边框,你才会发现实际上你已经用了唯一的那个边框来扩展点击区域了。那怎么办呢?很简单,你可以利用内阴影模拟一个(纯色的)边框

border: 10px solid transparent; box-shadow: 0 0 0 1px rgba(0,0,0,.3) inset; background-clip: padding-box;

效果如下图所示:

不像边框,你可以使用不止一个box-shadow,如果你需要更多,你可以使用逗号来分隔这一组阴影。但是,如果我们把内阴影和外阴影结合起来,我们会得到一个非常奇怪的效果,因为外阴影是在边框盒之外绘制的。例如,我们可能会想给按钮添加一个模糊阴影,给它一个在页面上“pop out”的效果,也就是另一种可点击的内容:

box-shadow: 0 0 0 1px rgba(0,0,0,.3) inset, 0 .1em .2em -.05em rgba(0,0,0,.5);

但是,如果我们试过了,我们看到的结果和我们期望的有很大不同。

这种解决方案因为其它原因,所以并不完美。边框会影响布局,这在某些情况下可能不是问题。所以我们该咋办呢?我们移除边框,然后利用伪元素来捕捉它们的父元素和鼠标的交互。

我们可以覆盖一个透明的伪元素在我们的按钮上边,而且它在各个方向都比我们的按钮大10px:

button { position: relative; /* [rest of styling] */ } button::before { content: ''; position: absolute; top: -10px; right: -10px; bottom: -10px; left: -10px; }

这也是可行的,而且只要我们不需要伪元素了,它也不会影响到任何东西。伪元素的解决方案是非常灵活的——我们可以让点击区域变成任何大小、位置,或者我们想要的形状,甚至和元素本身完全无关的内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以对您的 Windows 操作系统窗口标题栏按钮进行优化增强的小工具,如果您正需要进行窗口优化一定要下载这款 Actual Title Buttons(窗口标题栏按钮增强)使用。Actual Title Buttons 允许您在任何程序的标题栏按钮旁添加最小化、置顶和透明度按钮,支持窗口对齐、窗口置底、更改窗口大小、窗口程序优先级、幽灵窗口、启动程序等。 Windows 窗口标题按钮增强工具 Actual Title Buttons 中文特别版Windows 窗口标题按钮增强工具 Actual Title Buttons 中文多语特别版 通过单击这些按钮来处理标准按钮,您可以利用隐藏的 Windows® 功能,例如: 使窗口透明的附加标题按钮使任何窗口半透明 卷起窗口其他标题按钮滚动窗口 最小化窗口以托盘附加标题按钮,最小化 Windows® 通知区域的任何窗口 使窗口永远在顶部的附加标题按钮使任何窗口始终在顶部 调整窗口附加标题按钮可快速将任何窗口调整为最合适的大小 对齐窗口附加标题按钮快速将任何窗口放置到最合适的位置 更改窗口的程序优先级附加标题按钮即时更改窗口的程序优先级 Ghost Window 附加标题按钮“ghost”任何窗口(它将通过鼠标点击) 将窗口移动到另一个监视器附加的标题按钮可轻松移动多监视器系统中的监视器之间的任何窗口 将窗口内容复制到剪贴板附加标题按钮快速复制到剪贴板窗口内容 将剪贴板内容粘贴到窗口附加标题按钮可快速将剪贴板内容粘贴到任何窗口 单个标题按钮设置 新按钮看起来在所有标准 Windows 视觉主题中都是原生的,并且与一般的最小化/最大化/关闭按钮一样易于使用。 您可以定义应该为所有窗口实际添加哪些按钮,为任何特定窗口指定一组单独的按钮。 Actual Title Buttons 与大多数软件产品完全兼容 在实际标题按钮的帮助下,您可以将上述功能应用于几乎所有程序: 电子邮件客户端:Microsoft Outlook,Outlook Express,Mozilla Thunderbird,Eudora,Incredimail等。 即时通讯工具:ICQ,Windows / MSN Messenger,Yahoo! 信使等 媒体播放器:Windows Media Player,Winamp等 办公工具:记事本,Adobe Acrobat Reader,Microsoft Word,Microsoft Excel等。 图形套件:Adobe Photoshop,Corel Draw等 开发工具:Microsoft Visual Studio,CodeGear Developer Studio等。 离线浏览器或 FTP 客户端 和许多其他类型的程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值