【问题标题】:How can i make text glow on mouseover of another element (Without text-shadow)如何在鼠标悬停另一个元素时使文本发光(没有文本阴影)
【发布时间】:2011-06-16 12:46:04
【问题描述】:

比如说我有以下代码:

HTML:

<ul>
    <li>
        <a>
            <span class="title">Home</span>
            <span class="description">My House</span>
        </a>
    </li>
    <li>
        <a>
            <span class="title">About</span>
            <span class="description">Foo</span>
        </a>
    </li>
</ul>

我怎样才能只让标题类发光,就像在 li 元素悬停时的外部发光效果一样。

我找到了这个插件:http://nakajima.github.com/jquery-glow/,但我不知道如何让它满足我的需要。编辑:这不是我真正想要的,因为它依赖于文本阴影。

我希望它在 ie7+ 中工作,因此我不能真正使用文本阴影。

【问题讨论】:

  • 我看不到 css 是如何相关的?
  • 您能否解释一下为什么您无法弄清楚如何使 jquery-glow 插件工作?这里的自述文件 - github.com/nakajima/jquery-glow 对我来说很简单。
  • 别管那个css jai,我也不知道你为什么需要它。
  • 我可以让它工作,但我不能让它在我想要的时候发光,它只有在文本本身悬停时才会发光。考虑到托马斯所说的,我认为该插件可能是死胡同。有没有人知道任何可以在没有文本阴影的情况下工作的东西,以便它可以在 ie7 中工作?

标签: javascript jquery internet-explorer-7 glow css


【解决方案1】:

您感兴趣的那段代码(您发布的链接)是这样的:

$(this).animate({
        color: TO_GLOW_TEXT_COLOR,
        textShadow: {
          begin: true,
          color: TO_GLOW_HALO_COLOR,
          radius: GLOW_RADIUS
        }
      }, DURATION);

这使文本发光。 (更改大写位)。这使它再次褪色:

$(this).animate({
        color: ORIGINAL_COLOR,
        textShadow: {
          begin: false,
          color: TO_GLOW_HALO_COLOR,
          radius: GLOW_RADIUS
        }
      }, DURATION);

所以你现在可以在这些链接上做一个普通的 hover() ,现在你知道了秘密:(这将测试在 a 元素上的悬停并且只发光 span.title 元素)。

$('ul li a').hover(function(){
    $(this).find('span.title').animate({.....}); // fade in
},
function(){
    $(this).find('span.title').animate({.....}); // fade out
});

问题 - 它所做的只是使用 jquery 而不是 CSS 设置 textShadow,因此如果 textShadow 不起作用,这将在 IE7 中不起作用。

PS:您发布的链接在 Firefox 中也不起作用 - 除非我的 Firefox 坏了。

【讨论】:

  • 不知道。链接动画颜色变化,但他们没有文字阴影 - 没有发光。
【解决方案2】:
$("li").hover(function()
{
    //mouse over
    var s = $(this).children("a").children("span");

    for(element in s)
    {
        if(element.hasClass("title"))
        {
            //add glow to element
        }
    }
},
function()
{
    //remove glow here in a similar way
});

还要注意,如果你的标记是一致的,那么你可以只选择第一个元素而不是循环遍历它们,所以你只需将发光添加到 s[0]

我认为 find 可能更适合您的目的,而不是链接 children() 调用。 http://api.jquery.com/find/

【讨论】:

    【解决方案3】:

    您是在问“我如何让事物发光?”还是您在问“我如何将光晕定位到我想要的元素?”

    如果你想要后者,我会这样做:

    $(document).ready(function(){
            $('li').hover(
                function(){
                    $(this).find('.title').addClass('glow');
                },function(){
                    $(this).find('.title').removeClass('glow');
                }
            );
    });
    

    假设添加“glow”类足以使标题元素发光。

    【讨论】:

    • 哈,我可以看到我的问题表述得不是很好,我更想问的是,如果可能的话,我怎样才能在没有文字阴影的情况下使文字发光,以便在即(7+)。
    猜你喜欢
    • 2012-04-21
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2011-10-15
    • 2013-02-27
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多