2013-12-23 40 views
-1

我想获得我的CSS工作一些帮助。将一个Div分成两个css部分?

现在我想要做的是在用户开始滚动时在div上显示阴影。

现在我有。

HTML

<div class="head shadow"></div> 

CSS

.head { 
    background: #edeff0; 
    position: fixed; 
    width: 70%; 
    height: 70px; 
    top: 0; 
    left: 85px; 
    right: 15px; 
    z-index: 100; 
} 
.shadow { 
    display:none; 
    -webkit-transition-duration: 0.2s; 
    -moz-transition-duration: 0.2s; 
    -o-transition-duration: 0.2s; 
    transition-duration: 0.2s; 
    -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    -webkit-transition-duration: 0.2s; 
    -moz-transition-duration: 0.2s; 
    -o-transition-duration: 0.2s; 
} 

的Javascript

 $(document).scroll(function() { 
    var y = $(this).scrollTop(); 
    if (y > 1) { 
     $('.shadow').fadeIn(); 
    } else { 
     $('.shadow').fadeOut(); 
    } 

}); 

现在,如果我删除 display:none;一切都会显示,如果我把它放回去,它会隐藏一切。

我怎样才能得到它只隐藏阴影,并使JavaScript的工作。

Here is a working (well it's not working) version

感谢

ALED

+1

只需使用toggleClass(),或者如果你想使用单独的功能,使用addClass()和removeClass() –

+0

我想做些什么是使用CSS来隐藏阴影,以便脚本可以在滚动时再次鞋楦? – aled2305

+0

我在下面的答案概述了你需要做的事情。它根据发生的情况添加或删除影子类。你需要摆脱显示:无; –

回答

1

工作FIDDLE - http://jsfiddle.net/andyjh07/yY4U8/

HTML:

<div class="head"></div> 

的jQuery:

$(document).scroll(function() { 
    var y = $(this).scrollTop(); 
    if (y > 1) { 
     $('.head').addClass('shadow'); 
    } else { 
     $('.head').removeClass('shadow'); 
    } 
}); 

CSS:

.shadow { 
    -webkit-transition-duration: 0.2s; 
    -moz-transition-duration: 0.2s; 
    -o-transition-duration: 0.2s; 
    transition-duration: 0.2s; 
    -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    -webkit-transition-duration: 0.2s; 
    -moz-transition-duration: 0.2s; 
    -o-transition-duration: 0.2s; 
} 

上述解决方案增加了shadowclass与类head元素如果滚动是真实的,否则它会删除它。因为你使用display: none;这将完全隐藏整个元素,不只是造型该类

+0

http://jsfiddle.net/aled2305/pBYgs/12/我已经更新了代码,但它仍然不起作用? – aled2305

+0

http://jsfiddle.net/andyjh07/yY4U8/ - 这里是一个工作小提琴。一切正常,因为它应该 –

+0

谢谢安迪,还有一件事,是否有任何方法让阴影淡入淡出? – aled2305

0

这里你有问题之前的原因是Working Fiddle

(请不要忘记,包括jQuery的)

HTML

<div class="head"></div> 

CSS

.head { 
    background: #edeff0; 
    position: fixed; 
    width: 70%; 
    height: 70px; 
    top: 0; 
    left: 85px; 
    right: 15px; 
    z-index: 100; 
} 
.shadow { 
    -webkit-transition-duration: 0.2s; 
    -moz-transition-duration: 0.2s; 
    -o-transition-duration: 0.2s; 
    transition-duration: 0.2s; 
    -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    -webkit-transition-duration: 0.2s; 
    -moz-transition-duration: 0.2s; 
    -o-transition-duration: 0.2s; 
} 

jQuery的

$(document).scroll(function() { 
    var y = $(this).scrollTop(); 
    if (y > 1) { 
     $('.head').addClass("shadow"); 
    } else { 
     $('.head').removeClass("shadow"); 
    } 

}); 
0
.shadow { 
    -webkit-transition-duration: 0.2s; 
    -moz-transition-duration: 0.2s; 
    -o-transition-duration: 0.2s; 
    transition-duration: 0.2s; 

    -webkit-transition-property: all 
    -moz-transition-property: all 
    -ms-transition-property: all 
    -o-transition-property: all 
    transition-property: all 

    -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0); 
    -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0); 
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0); 
} 

.shadow.scrolled { 
    -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); 
} 

$(document).scroll(function() { 
    if ($(this).scrollTop() > 0) { 
    $('.shadow').addClass("scrolled"); 
    } else { 
    $('.shadow').removeClass("scrolled"); 
    } 
}); 
+0

顺便说一句*不要*使用供应商前缀... 使用precompiler.sass和指南针为例。 或更少 –

+0

在快速启动的事件(如滚动)上使用toggleClass()时,请小心。 你想精确控制发生了什么。 toggleClass()很好用,但可能会导致不一致。 –