【问题标题】:jQuery pulse questionjQuery 脉冲问题
【发布时间】:2011-06-20 22:13:48
【问题描述】:

我正在使用来自 James Padolsey 的精彩 pulse plug-in 中的 modified version。它提供了脉冲功能而无需链接到 jQuery-UI,这对我来说很棒,因为我已经链接了 jQuery,并且如果我不需要的话不想打扰另一组工具......

我的问题是,是否有可能只有焦点边界脉冲,而不是整个元素。在当前的实现中,整个元素都会跳动,但我只希望焦点边框这样做,并且如果可能的话,只有当边框可见时(即用户已通过选项卡访问链接)。

提前致谢,

亚伦·肖万

编辑:Here's 一个测试页面来展示我的困境

编辑编辑:好的,我想我应该以不同的方式问这个问题......我当前的实现引用了带有类“link”和“piclink”的元素。是否可以专门引用焦点边框?

编辑编辑编辑:我发现了一些 JS functions 允许在样式表中操作 CSS 规则...我将尝试将这些与上述修改后的插件结合使用以实现我追求的是什么。我会更新我的发现。

【问题讨论】:

  • 如果您还没有充分利用 Jquery UI 提供的所有功能,那么您真的错过了。仅按钮和主题滚轮就是加载库的原因。
  • 我知道您来自哪里,但是在我的网站上,我没有使用任何这些功能,所以....
  • 你的问题到处都是。如果您将代码示例发布到 jsfiddle.net,这可能会帮助我们帮助您
  • 查看第一次编辑中链接的测试页面...在该页面上,所有具有“link”或“piclink”类的元素都在脉冲。我只想让焦点边框跳动,如果可能的话,只有在焦点边框可见时(用户点击链接)。

标签: jquery pulse


【解决方案1】:

虽然我没有查看插件,但希望这个小 sn-p 对您自己的解决方案有所帮助:

鉴于这个 css:

.blinky {
    background-color:blue;
    color:white;
    outline-width:5px;
    outline-style:solid;
    outline-color:green;
}

你可以这样写:

// in on ready
$('.blinky').focus(function(){
   $(this).animate({
    'outline-width': '0px'
   }, 500, function() {
      animateBorder(this,5);
   });
});
// elsewhere
function animateBorder(context,px)
{
    $(context).animate({
        'outline-width': px+'px'
       }, 500, function() {
           // make sure its still focused before calling again
           if(this===document.activeElement){
               animateBorder(context,(px>0)?0:5);
           }
       }
    );
}

这是一个简单的jsfiddle example。单击按钮设置焦点,开始动画,然后单击页面上的其他位置,使其失去焦点并停止动画。

基本上,它只是将轮廓边框的大小从给定数量设置为 0,然后再返回。

然后它递归地调用相同的动画函数,使其保持在一个连续的循环中。但是,在每次递归调用之前,它都会检查以确保元素仍然是活动元素。

希望您可以从这里调整它以适应您的需要,因为它不能直接回答您的问题(对不起!)。

【讨论】:

  • 谢谢,这就是我所说的内容!我将调整它以更改不透明度而不是边框​​的宽度(如果可能的话)并报告我的发现。顺便说一句,我以前见过这种类型的代码,但从来不知道到底发生了什么:“(px>0)?0:5)”很明显,这是一个条件stmt,但什么是“?0:5 “在做什么?
  • 我不认为轮廓有 opacity 属性——如果你真的想走那条路,你需要制作另一个
    放在你的元素后面并且只显示它(并闪烁它) 在焦点上,并将其更改为隐藏在非焦点上。 ()?: 是第三级语句。基本上它会评估括号中的内容,如果它是真的,它会在 : 的左侧做,而在右侧做假。所以在这种情况下,如果 px 大于 0 - 发送 0,否则发送 5。
  • 太棒了,非常感谢您的指点!我想使用outline 属性,因为它不会影响页面的流动,而border 属性会。有没有办法让边框甩掉流量?
  • 不可靠的跨浏览器不...我见过的大多数具有类似效果(如发光效果)的网站都会在焦点/鼠标上显示隐藏的 div。对于如何做到这一点,我会在 SO 中搜索 CSS 相对布局或如何使用 relative 定位元素 - 你必须担心 z-index、透明度和其他完整答案会发现的问题。跨度>
  • 您可以使用outline 属性;你没有得到border 可以做的很多事情(例如圆角),但它适用于(AFAIK)每个浏览器。更现代的方法是使用box-shadow,它可以让您做的不仅仅是实心边框,但只有更新的浏览器支持它。
猜你喜欢
相关资源
最近更新 更多
热门标签