在给定特定宽度范围的情况下使用jquery更改类名(媒体查询)

时间:2012-01-20 15:32:24

标签: jquery css3 media-queries

我有以下要修改的html:

<div class="col1 width8"><img src="images/entity.jpg"></div>

我想使用媒体查询,但我不想修改css,而是将类名从width8替换为width6。以下标准媒体查询通常无法实现此目的:

@media only screen and (min-width: 1240px) and (max-width: 1484px) { }

我希望使用jquery删除类,并在窗口介于1240和1484px之间时添加一个类。你可以帮助我使用jquery替代媒体查询来修改内联类和id名称吗?

这是我的jquery

 $(document).ready(function() { 
    $(window).resize(function(){
            var width = $(window).width();

            if(width >= 1240 && width <= 1484){
                $('#info').removeClass('col9').addClass('col8');
            }
            else if(width >= 1485 && width <= 1788){
                $('#info').removeClass('col8').addClass('col7');
            }

            else if(width >= 1789 && width <= 2237){
                $('#info').removeClass('col7').addClass('col6');
            }

            else if(width >= 2238 && width <= 3000){
                $('#info').removeClass('col7').addClass('col6');
            }
            else{
                $('#info').removeClass('col8').addClass('col9');
             }
            })

.resize();

    });

3 个答案:

答案 0 :(得分:16)

你可以试试这个。

$(window).resize(function(){
   console.log('resize called');
   var width = $(window).width();
   if(width >= 700 && width <= 900){
       $('#myelement').removeClass('width8').addClass('width6');
   }
   else{
       $('#myelement').removeClass('width6').addClass('width8');
   }
})
.resize();//trigger the resize event on page load.

答案 1 :(得分:10)

查看enquire.js

它是一个无依赖库,允许您使用JavaScript响应媒体查询。

例如:

var $info = $('#info');

enquire.register("screen and (min-width: 1240px) and (max-width: 1484px)", {
    match: function() {
        $info.addClass('col8');
    },

    unmatch: function() {
        $info.removeClass('col8');
    }
}).listen();

然后,您只需为您网站中的各个断点注册媒体查询,这样就可以在成功匹配后添加和删除类。

答案 2 :(得分:2)

您可以执行以下操作:

var x = $('#myelement'); // this is your element
var w = $(window).width();
if(w >= 700 && w <= 900) {
    x.removeClass('class-to-remove').addClass('class-to-add');
}