【问题标题】:Hide A DIV if screen is narrower than 1024px如果屏幕窄于 1024 像素,则隐藏 DIV
【发布时间】:2011-07-13 18:25:55
【问题描述】:

我发现(从这个问题 - Hide div if screen is smaller than a certain width)这段代码

  $(document).ready(function () {

    if (screen.width < 1024) {
        $("#floatdiv").hide();
    }
    else {

        $("#floatdiv").show();
    }

});

唯一的问题是,我似乎无法让代码工作,我只需要为 IE 工作的代码,我将为其他(较新的)浏览器使用媒体查询。 关于我哪里出错的任何提示/提示?

到目前为止,我有 &lt;div id="floatdiv"&gt;

然后在那个 div 的末尾(关闭的地方)我有

<!--[if lt IE 9]>
<script type="text/javascript" src="http://dl.dropbox.com/u/17087195/website/sidebar_size.js"></script>
<![endif]-->

在我的标题中,我有 &lt;script type='text/javascript' src='http://www.itsdaniel0.com/wp-includes/js/jquery/jquery.js?ver=1.4.4'&gt;&lt;/script&gt;

我仍然无法让代码工作(在 IE8 中测试) 我还是哪里出错了吗?

更新 我确实链接了另一段 jQuery,这会导致问题吗?这是下面的完整代码

<div id="floatdiv">

<div class="floating-menu">

<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.itsdaniel0.com%2F2011%2F03%2Funicorns-are-cool%2F&amp;layout=box_count&amp;show_faces=true&amp;width=55&amp;action=like&amp;colorscheme=light&amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:55px; height:65px;" allowTransparency="true"></iframe>

<br /><br /><a href="http://twitter.com/share?url=http%3A%2F%2Fid0.me%2Fj0&amp;counturl=http://www.itsdaniel0.com/2011/03/unicorns-are-cool/" class="twitter-share-button" data-text="Unicorns Are Cool" data-count="vertical" data-via="itsdaniel0 #itsdaniel0">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>

<br /><br />

<script src="http://widgets.fbshare.me/files/fbshare.js"></script>

</div>

</div>

<script type="text/javascript" src="http://dl.dropbox.com/u/17087195/website/sidebar.js"></script>

<!--[if lt IE 9]>

<script type="text/javascript" src="http://dl.dropbox.com/u/17087195/website/sidebar_size.js"></script>

<![endif]-->

错误信息

网页错误详情

用户代理:Mozilla/4.0(兼容; MSIE 7.0;视窗 NT 5.1;三叉戟/4.0; 铬框架/10.0.648.133; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E; InfoPath.2) 时间戳:星期六, 2011 年 3 月 12 日 11:31:32 UTC

消息:预期标识符,字符串 或数字行:140 字符:1 代码:0 网址: www.itsdaniel0.com/2011/03/unicorns-are-cool/

消息:对象不支持这个 属性或方法行:16 字符:1 代码:0 URI: dl.dropbox.com/u/17087195/website/sidebar_size.js

消息:'twttr.anywhere._instances' 为 null 或不是对象 Line: 1 Char: 5207 代码:0 URI: platform.twitter.com/anywhere.js?id=6vIPELyEeU5vcSc3c0Q5w&v=1

消息:'twttr.anywhere._instances' 为 null 或不是对象 Line: 1 Char: 5207 代码:0 URI: platform.twitter.com/anywhere.js?id=6vIPELyEeU5vcSc3c0Q5w&v=1

由于“低代表”错误而从 URL 中删除了 http

【问题讨论】:

  • 什么是http://dl.dropbox.com/u/17087195/website/sidebar_size.js
  • @maniator jQuery 所在的 JS 页面 - 我发现在 DropBox 上进行测试比我的服务器本身容易得多(更容易更新文件等)如果你愿意,请访问 URL

标签: jquery wordpress screen-resolution


【解决方案1】:

使用 JQUERY 的旧答案:

//the function to hide the div
function hideDiv(){

    if ($(window).width() < 1024) {

            $("#floatdiv").fadeOut("slow");

    }else{

        $("#floatdiv").fadeIn("slow");

    }

}

//run on document load and on window resize
$(document).ready(function () {

    //on load
    hideDiv();

    //on resize
    $(window).resize(function(){
        hideDiv();
    });

});

编辑:请注意,现在对 css3 媒体查询的跨浏览器支持要多得多,使用它们而不是 javascript 会更有效。

使用 CSS。

/* always assume on smaller screen first */

#floatdiv {
    display:none;
}

/* if screen size gets wider than 1024 */

@media screen and (min-width:1024px){
    #floatdiv {
        display:block;
    }
}

请注意,在大多数现代浏览器中,您还可以使用 window.matchMedia 在 javascript 中运行媒体查询

if(window.matchMedia("(min-width:1024px)").matches){
    console.log("window is greater than 1024px wide");
}

【讨论】:

  • 我也无法让这段代码工作,也许 jQuery 讨厌我
  • 对不起我的错。我第一次错过了一个括号。不喜欢在这些框中打字。 :s 我已经在上面更正了它并添加了调整大小功能。
  • @maniator 您还缺少宽度后的一对括号。它是 $(window).width() 而不是 $(window).width :p
  • 抱歉回复晚了 - 我仍然无法让这段代码工作,现在有什么建议吗?
  • 绝对有效!看我在这里放的演示 -> fryed.co.uk/tests/resize-test 。你的 js 的其余部分是否会抛出任何错误?
【解决方案2】:

你需要设置屏幕元素:

var screen = $(window)

例如:

$(document).ready(function () {

    var screen = $(window)    

    if (screen.width < 1024) {
        $("#floatdiv").hide();
    }
    else {

        $("#floatdiv").show();
    }

});

【讨论】:

  • 我会把它放在哪里? - 我过去从未使用过 jQuery,也没有使用过 JS
  • 把它放在 if 语句之前。确保你在页面的 head 标记中也包含 jquery 代码(在这个 js 之前)
  • @maniator 所以这段代码现在应该是这样的? $(document).ready(function () { var screen= $(window) if (screen.width &lt; 1050) { $("#floatdiv").hide(); } else { $("#floatdiv").show(); } });
  • 只要你有一个 id = floatdiv 的 div 并且所有内容都正确包含,是的
  • 是的,我有 &lt;div id="floatdiv"&gt; 下面(在 div 的末尾)然后我有 &lt;!--[if lt IE 9]&gt; &lt;script type="text/javascript" src="http://dl.dropbox.com/u/17087195/website/sidebar_size.js"&gt;&lt;/script&gt; &lt;![endif]--&gt; 在我的标题中我有 &lt;script type='text/javascript' src='http://www.itsdaniel0.com/wp-includes/js/jquery/jquery.js?ver=1.4.4'&gt;&lt;/script&gt; 我仍然无法让代码工作(测试IE8) 我还有什么地方出错吗?
【解决方案3】:

媒体查询获胜

How do I make a div not display, if the browser window is at a certain width?

@media all and (max-width: 1024px) { /* Change Width Here */
  div.class_name {
     display: none;
  }
}

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2014-01-12
    相关资源
    最近更新 更多