我试过了,但没用:
<html>
<head>
<script src="js/menu-collapser.js" type="text/javascript" media="media screen and (max-width: 599px)"></script>
</head>
...
</html>
//menu-collapser.js :
jQuery(document).ready(function($){
$('.main-navigation li ul').hide();
$('.main-navigation li').has('ul').click(function() {
$(this).children().toggle();
});
});
你有一个想法,如何做到这一点,在正确的方式?脚本的工作,如果直接使用的标题与标签。
4条答案
按热度按时间eqzww0vc1#
你不能直接使用Javascript
<script>
标签。媒体查询用于链接的CSS文件或内联CSS样式。一个基本的例子:或者直接在样式表中:
但是,您可以使用外部资产加载器/媒体查询库来完成此操作(require.js、modernizr.js、enquire.js等)。在本例中,我使用enquire.js设置一个示例,因为我认为它非常有效,并且默认情况下不需要jQuery:
完整示例
1)包括enquire.js(全天候可用):
2)创建加载函数-加载JS文件:
3)启动enquire.js并侦听媒体查询更改(加载时和调整大小时):
∮ ∮把所有的都放在一起∮
使用一个简单的HTML页面,其中包含从外部文件加载的enquire.js:
除了加载JS文件,你也可以创建一个CSS加载器,它的工作方式是相同的(有条件的),但这会使在CSS中使用
@media
的目标失败。值得阅读enquire.js的用法说明,因为它可以做的比我在这里演示的多得多。**警告:**上面没有使用jQuery,但是您可以利用它提供的一些函数;例如加载脚本-或执行其他您需要的功能。
mu0hgdu02#
为什么不只是有条件地加载脚本呢?
或者更好的是,只在window.innerWidth〉600时执行代码?无论如何,有很多解决方案可以使用。
rkue9o1l3#
media
不是<script>
的有效属性,请在此处检查。因此,您应该手动检测媒体类型,而不是动态加载脚本。
There is a plug-in for css media detection in javascript,您可以使用它。
uajslkp64#
如果你想让它也对以后的调整大小事件(例如桌面上的)做出React,你可以这样做: