我有一个DIV,我根据视口大小调整CSS中的字体大小:
font-size:1em;
@media only screen and (min-width: 300px) {
font-size:2em;
}
@media only screen and (min-width: 600px) {
font-size:3em;
}
但是,我也有Javascript根据用户是否向下滚动来更改字体大小。
$(window).scroll(function () {
if ($(this).scrollTop() > 1) {
$('#div').css('font-size', '1em');
}
else {
$('#div').css('font-size', '3em');
}
});
问题是,在用户向下滚动至少一次后,Javascript已将font-size
设置为3em
,并且@media
声明不再适用。< / p>
是否有可能使它在Javascript else
子句中,样式恢复为CSS和@media
条件中声明的内容?
答案 0 :(得分:3)
正如我已经评论过的,不是使用为元素定义内联样式的.css()
具有最高优先级,因此你可以重新使用除了jQuery之外的任何东西,这是脏的,或者如果你有几个以上可能会变脏要在if
else
中重置/更改的属性。
因此,您应该使用.css()
和.addClass()
方法,而不是使用 ,而且可以很好地完成您所需要的工作。.removeClass()
答案 1 :(得分:1)
您应用于#div
的样式会覆盖@media
声明,因此您必须删除应用的样式。使用空样式(即$('#div').css('font-size', '')
)删除css属性。
答案 2 :(得分:1)
您可以将其设置为“无”,而不是使用javascript将字体大小恢复正常。这样就可以应用css中定义的样式。
$(window).scroll(function () {
if ($(this).scrollTop() > 1) {
$('#div').css('font-size', '1em');
}
else {
$('#div').css('font-size', '');
}
});