javascript - CSS + jquery 响应式背景颜色变化

标签 javascript jquery css

我想要实现的目标是,如果窗口大小大于 400,则 #box2 颜色变为黑色(悬停在 #box1 上时), 如果小于 400,#box2 颜色变为黄色。

我以为我完成了这个任务,但是我发现我总是需要刷新页面才能看到效果。一旦窗口大小改变,jQuery 不会立即工作。

我是否需要使用 ajax 或其他东西来使 jQuery 响应工作?

在线样本:http://jsfiddle.net/dFbXr/

这是我的代码

HTML:
    <div id="box1">
        <div id="box2"></div>
    </div>

jQuery:
    function colorchange(){
     if($(window).width() > 400){
        $("#box1").mouseover(function(){
        $("#box2").css('background','black');
         }).mouseout(function(){
             $("#box2").css('background','blue');
     });
      }else{
     $("#box1").mouseover(function(){
     $("#box2").css('background','yellow');
    }).mouseout(function(){
          $("#box2").css('background','blue');
    });
    }
    }      

    colorchange();

CSS:
    #box1{
        display: block;
        background:red;
        background-size: 100%;
        position: relative;
        padding-bottom: 60%;
    }

    #box2{
        display:block;
        background:blue;
        position:absolute;
        height:70px;
        width:70px;
        right:50%;
        top:50%;
        margin: -35px -35px 0 0;
      }

最佳答案

您需要在首次加载页面和调整窗口大小时调用您的 colorchange() 函数。您可以使用如下代码处理“调整大小”事件:

$(window).on("resize",colorchange);

请注意,colorchange 作为参数传递给 .on() function 没有括号,即 colorchange 而不是 colorchange()。不带括号传递函数的引用,带括号立即调用函数并传递其结果。

演示:http://jsfiddle.net/dFbXr/1/

您提到了 Ajax,但 Ajax 与手头的问题完全无关:它用于在不重新加载整个页面的情况下从 Web 服务器发送和/或接收数据。

关于javascript - CSS + jquery 响应式背景颜色变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15211313/

相关文章:

php - 自定义 php 错误信息 fadein

javascript - 将数据从 jQuery.ajax() 传递到 Angular Controller ?

javascript - 通过 jQuery ajax 将 jQuery 构造的数组发送到 PHP

css - Bootstrap 模态导致背景偏移

html - 列出不从父级继承样式的元素

javascript - 如何在 Chartjs 中动态添加新数据点和删除最左边的数据点

javascript - 当 .js 和 .html 不在同一文件夹中时,如何在 Aurelia 中创建自定义元素?

java - 使用 cssSelector 清除 Chrome 浏览器的浏览数据时如何与 #shadow-root (open) 中的元素进行交互

javascript - c3js d3 dash-stroke 仅在 rect 元素的一侧

javascript - 当滚动条距离窗口底部 200px 时加载 AJAX 页面,窗口大小可能会有所不同