是否可以从Javascript返回CSS媒体查询声明?
我有一个DIV,根据视口大小调整CSS中的字体大小:是否可以从Javascript返回CSS媒体查询声明?,javascript,jquery,css,Javascript,Jquery,Css,我有一个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
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将字体大小设置为3em
,并且@media
声明不再适用
是否可以使Javascriptelse
子句中的样式恢复到CSS和@media
条件中声明的样式?应用于#div
的样式覆盖@media
声明,因此必须删除应用的样式。使用空样式(即$('#div').css('font-size','')
)删除css属性。如我所述,而不是使用.css()
为元素定义内联样式的属性具有最高优先级,因此您可以使用jQuery重新重置它,jQuery是脏的,或者如果在if
else
中有多个属性要重置/更改,则可能会变脏
因此,您应该使用.css()
和.addClass()
和.removeClass()
方法,而不是使用.css()
方法,这样可以很好地完成所需的功能。您可以将字体大小设置为“无”,而不是使用javascript将其设置回正常大小。这样就可以应用css中定义的样式
$(window).scroll(function () {
if ($(this).scrollTop() > 1) {
$('#div').css('font-size', '1em');
}
else {
$('#div').css('font-size', '');
}
});
使用.addClass()
和.removeClass()
方法,而不是使用.css()
方法,该方法应用具有最高优先级的内联样式。@Mr.Alien我认为您应该回答这个问题。我认为这是最好的建议。@Danield很酷,谢谢,我会做必要的投票,因为这是非常有用的信息,在某些情况下,这绝对是最好的选择。然而,在我的例子中,我有一些通过id应用样式的div,并且指定的样式类不会超过它们。因此,特别是在这个例子中,我标记为正确的另一个答案让我的生活变得简单了一些。虽然有两个答案的信息相同,但我给这个答案打了一个检查,只是为了有更完整的代码。