2016-10-04 3 views
0

У меня есть код ниже. Я хочу, чтобы он анимировал div в расчетную позицию, но что-то не возможно или я допустил ошибку. Может ли кто-нибудь помочь?Переключить div в расчетное положение

$(document).ready(function() { 
 
     var is_Clicked = false; 
 
     $("#togglebutton").click(function() { 
 
     if (is_Clicked) { 
 
      $('#myToggleDiv').css('float','left'); 
 
      $("#myToggleDiv").animate({ 
 
      left: '0%' 
 
      }); 
 
      is_Clicked = false; 
 
     } else { 
 
      $('#myToggleDiv').css('float','right'); 
 
      $("#myToggleDiv").animate({ 
 
       $('#myToggleDiv').css('right','calc(100vw - 40px)); 
 
      }); 
 
      is_Clicked = true; 
 
     } 
 
     }); 
 
    }); 
 

 
    $(document).ready(function() { 
 
     document.getElementById("myText").innerHTML = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.<br><br>Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum."; 
 
    });
html, 
 
body { 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 

 
#header { 
 
    width: 100%; 
 
    height: 20%; 
 
    float: left; 
 
    border: 1px solid; 
 
} 
 

 
#myToggleDiv { 
 
position: relative; 
 
    border: 1px solid; 
 
} 
 

 
#togglebutton { 
 
    width: 10%; 
 
    height: 40%; 
 
    margin-right: 5px; 
 
    margin-top: 5px; 
 
    float: right; 
 
} 
 

 
@media screen and (min-width: 1366px) { 
 
    #myToggleDiv { 
 
    width: 60vw; 
 
    } 
 
} 
 

 
@media screen and (max-width: 1365px) { 
 
    #myToggleDiv { 
 
    width: 70vw; 
 
    } 
 
} 
 

 
@media screen and (max-width: 1024px) { 
 
    #myToggleDiv { 
 
    width: 90vw; 
 
    } 
 
} 
 

 
@media screen and (max-width: 800px) { 
 
    #myToggleDiv { 
 
    width: 100vw; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="myToggleDiv"> 
 

 
    <input type="button" value="Toggle" id="togglebutton"> 
 
    <p id="myText"></p> 
 
</div>

+0

Синтаксис вашего 'одушевленных()' вызов неправильно - вы должны предоставить действительный объект: http://jsfiddle.net/100pvu95/37/. При этом у вас гораздо большая проблема в том, что вы не можете оживить рассчитанные значения CSS, поэтому то, что вы делаете, не будет работать даже при правильном синтаксисе. –

+0

Зачем ссылаться на внешнюю скрипку, когда у вас есть инструменты для скрипки ** в редакторе вопросов **? – evolutionxbox

+0

Вы помещаете ** '$ ('# myToggleDiv'). Css ('right', 'calc (100vw - 40px)); ** внутри ** объекта **? –

ответ

0

Это потому, что .animate ожидает объект. Так изменить ваш код, как это:

$("#myToggleDiv").animate({ 
     'right':'calc(100vw - 40px)' 
}); 

Помнить положить 'calc(100vw - 40px)' внутри цитирует

http://jsfiddle.net/100pvu95/40/

+0

Спасибо! Пожалуйста, см. Ответ Рори МакКросан. Можно ли превратить значение («right», «calc» (100vw - 40px)) в var и переключиться на него? – Eddy

+0

мой плохой. забыл это заметить. Нет, вы не можете этого сделать, потому что это строка. Тем не менее, вы можете сделать это так: var something = 5 + 6; $ ("# myToggleDiv") анимировать ({ \t \t \t \t \t \t \t \t 'право': что-то }). http://jsfiddle.net/100pvu95/41/ –

+0

Спасибо, что надавили на меня в правильном направлении. Тем не менее, две проблемы. Пожалуйста, смотрите здесь: http://stackoverflow.com/questions/39849785/keep-toggled-div-in-position – Eddy

Смежные вопросы