2015-11-24 3 views
2

Что я делаю и потратил много часов на то, чтобы попытаться сегодня добавить класс к элементу при изменении размера окна с использованием значения окна просмотра.Динамически меняющийся класс при изменении окна

В принципе, я хочу добавить класс как значение вида просмотра в <html> на загрузку страницы, а затем изменить этот класс по мере его изменения. нагрузка

  1. Page - добавить значение видового экрана в качестве класса <html>
  2. Изменить размер окна - изменить класс добавляется <html> в качестве значения видового экрана

Сейчас у меня есть первая часть вниз, и я есть второй почти там. Он добавит значение вида просмотра как класс, а затем при изменении размера добавит новое значение - но это просто добавление бесконечных новых классов, а не их замена.

Модифицированный код

опущена var $html = $("html");

if(typeof window.innerWidth!='undefined'){ 
     viewportwidth=window.innerWidth 
    } 

    jQuery(window).resize(function(){ 

     var viewportwidth; 

      if(typeof window.innerWidth!='undefined'){ 
       viewportwidth=window.innerWidth; 
      } 

     jQuery("html").toggleClass(""+viewportwidth); 

    }); 

    jQuery("html").addClass(""+viewportwidth); 

Я не очень опытный с JQuery и JS ...

Пример - http://sandbox.iemajen.com/

Спасибо.

Ваш вопрос идентифицирован как возможный дубликат другого вопроса.

Позвольте мне попытаться объяснить более четко. Я хотел бы иметь текущее значение window.innerWidth, возвращенное как единственный класс. То есть, когда размер окна изменяется, класс переходит к следующему значению, заменяющему первое.

Screenshot

+0

Возможные дубликата [JQuery, добавить/удалить класс, когда изменения ширины окна] (http://stackoverflow.com/questions/11047514/jquery-add-remove-class-when-window-width-changes) –

+0

Как подсчитать количество экземпляров '.addClass (" "+ viewportwidth); 'и сохранить самый старый/последний, удалив предыдущий? – jarmerson

ответ

1

Попробуйте этот ответ

//OnLoad: 
$(document).ready(function(){ 
    w_w = $(window).width(); 
    if(w_w > some_value){ 
     $("#some_id").addClass('someClass'); 
    } 
    //onResize 
    $(window).resize(function(){ 
    w_w = $(window).width(); 
    if(w_w > some_value){ 
     $("#some_id").addClass('someClass'); 
    } 
    }); 
}); 
0

Может быть, вы можете попробовать что-то вроде этого:

jQuery(window).resize(function(){ 
     var viewportwidth; 

     if(typeof window.innerWidth!='undefined'){ 
       viewportwidth=window.innerWidth; 
     } 

     if(viewportwidth >= 768){ 
      $html.addClass("res_768"); 
     }else{ 
      $html.removeClass("res_768"); 
     } 

     if(viewportwidth >= 640){ 
      $html.addClass("res_640"); 
     }else{ 
      $html.removeClass("res_640"); 
     } 

     //etc... 
}); 

или

jQuery(window).resize(function(){ 
     var viewportwidth; 

     if(typeof window.innerWidth!='undefined'){ 
       viewportwidth=window.innerWidth; 
     } 

     $html.removeClass();//remove all classes 

     if(viewportwidth >= 768){ 
      $html.addClass("res_768"); 
     } 
     else if(viewportwidth >= 640){ 
      $html.addClass("res_640"); 
     } 

     //etc... 
}); 
Смежные вопросы