当鼠标悬停在内部链接上时,jQuery 淡入淡出段落

发布于 2024-10-24 18:52:30 字数 835 浏览 2 评论 0原文


我有这样的代码:

<p>
   Non in porttitor porta. Amet ridiculus? Adipiscing cum scelerisque aliquam, tortor ac mauris platea? Vel in amet non nec facilisis, phasellus.<br /> 
   Sagittis diam auctor ultricies in habitasse integer vel duis sociis rhoncus
   <a href="something.html">porttitor</a>?
</p>

当鼠标悬停在链接上达到一定的不透明度时,我想淡出除锚标记中的文本之外的段落中的所有其他文本,然后在悬停时使其再次正常。我想在 jquery 中做到这一点。我正在做这样的事情:

$(document).ready(function() {
    $('p a').hover(function() {
        $(this).parent('p').not('a').animate({
             opacity: "0.5"
        }, 3000);
        },
        function() {
        $(this).parent('p').not('a').animate({
             opacity: "1"
        }, 3000);
     });
 });

但它不起作用!请帮助大家......
我知道这种技术是完全错误的......但如果你能做到的话

i have this code:

<p>
   Non in porttitor porta. Amet ridiculus? Adipiscing cum scelerisque aliquam, tortor ac mauris platea? Vel in amet non nec facilisis, phasellus.<br /> 
   Sagittis diam auctor ultricies in habitasse integer vel duis sociis rhoncus
   <a href="something.html">porttitor</a>?
</p>

i want to fade out all other text in the paragraph except the text in the anchor tag when hovered on the link to a certain opacity and then make it normal again when unhovered. i want to do this in jquery. i am doing something like this:

$(document).ready(function() {
    $('p a').hover(function() {
        $(this).parent('p').not('a').animate({
             opacity: "0.5"
        }, 3000);
        },
        function() {
        $(this).parent('p').not('a').animate({
             opacity: "1"
        }, 3000);
     });
 });

but it isnt working!! please help guys....
i know this technique is totally wrong... but if you can make it

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心奴独伤 2024-10-31 18:52:30

不透明度影响受影响元素的所有子元素。

您需要为 color 属性(alpha 通道)的不透明度设置动画。

为此,您需要一个支持 rgba 的浏览器(不是 IE)和一个插件来完成此操作。

jQuery UI 将 animate 方法docs 扩展为允许将动画设置为 colorbackground-color,但尚不支持 rgba 版本。

因此,您可以使用 http://pioupioum.fr/sandbox/jquery-color/ 的插件

$(document).ready(function() {
    $('p a').hover(function() {
        $(this).parent('p').animate({
             color: 'rgba(0,0,0,0.5)'
        }, 500);
        },
        function() {
        $(this).parent('p').animate({
             color: 'rgba(0,0,0,1)'
        }, 500);
     });
 });

http://jsfiddle.net/gaby/hfc83/ 处进行示例

Opacity affects all children of the affected element.

You would need to animate the opacity of the color property (the alpha channel).

To do that though you need an rgba capable browser (not IE) and a plugin to do it.

jQuery UI extends the animate methoddocs to allow for animation to color and background-color but not for the rgba version yet.

So, instead, you can use the plugin at http://pioupioum.fr/sandbox/jquery-color/ and do

$(document).ready(function() {
    $('p a').hover(function() {
        $(this).parent('p').animate({
             color: 'rgba(0,0,0,0.5)'
        }, 500);
        },
        function() {
        $(this).parent('p').animate({
             color: 'rgba(0,0,0,1)'
        }, 500);
     });
 });

example at http://jsfiddle.net/gaby/hfc83/

阳光下的泡沫是彩色的 2024-10-31 18:52:30

这应该是跨浏览器的,只需用 span 包裹段落中的所有文本(段落内的 a 元素除外),然后淡出 span 元素。

我使用可见性将链接保留在段落的位置,否则它会跳转到段落的开头,因为跨度是通过 display:none 隐藏的。

您可以在 http://jsfiddle.net/FQfmJ/13/ 上查看

$("p a").hover(function(){
       var p =  $(this).parent();
       p.contents(":not(a)").wrap("<span />");

       p.find("span").fadeOut(function(){
            $(this).removeAttr("style").css("visibility","hidden");
       });
   },function(){   
       $(this).parent().find("span").removeAttr("style").hide().fadeIn();
   }
);

This should be cross browser, just wraps all the text in the paragraph with a span except for the a element inside of the paragraph and then fades out the span elements.

I use the visibility to keep the link in place of the paragraph otherwise it jumps to the beginning of the paragraph because the spans are hidden with display:none.

You can check it out on http://jsfiddle.net/FQfmJ/13/

$("p a").hover(function(){
       var p =  $(this).parent();
       p.contents(":not(a)").wrap("<span />");

       p.find("span").fadeOut(function(){
            $(this).removeAttr("style").css("visibility","hidden");
       });
   },function(){   
       $(this).parent().find("span").removeAttr("style").hide().fadeIn();
   }
);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文