Oczywiście slideDown
i slideUp
nie rób, co chcesz, mówiłeś, że ma to być w lewo/prawo, a nie góra/dół.
Jeśli edytowanie Twojego pytania dodając tag jquery-ui
oznacza, że korzystasz z interfejsu jQuery, skorzystam z nnnnnn's solution, używając efektu jQuery UI: slide
.
Jeśli nie:
Zakładając menu rozpoczyna się widzialne (edit: ups, widzę, że nie jest ważne założenie, patrz uwaga poniżej), jeśli chcesz go przesunąć się w lewo i następnie można przesunąć z powrotem z lewej strony, można to zrobić: Live Example | Live Source
$(document).ready(function() {
// Hide menu once we know its width
$('#showmenu').click(function() {
var $menu = $('.menu');
if ($menu.is(':visible')) {
// Slide away
$menu.animate({left: -($menu.outerWidth() + 10)}, function() {
$menu.hide();
});
}
else {
// Slide in
$menu.show().animate({left: 0});
}
});
});
Musisz umieścić position: relative
na element menu.
Zauważ, że zastąpiłem twoją toggle
przez click
, ponieważ ta forma toggle
została usunięta z jQuery.
Jeśli chcesz, aby menu było ukryte, możesz dostosować powyższe. Chcesz poznać szerokość elementu, w zasadzie, kiedy umieszczasz go poza stroną.
Ta wersja nie obchodzi, czy menu jest początkowo widoczne, czy nie: Live Copy | Live Source
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div id="showmenu">Click Here</div>
<div class="menu" style="display: none; position: relative;"><ul><li>Button1</li><li>Button2</li><li>Button3</li></ul></div>
<script>
$(document).ready(function() {
var first = true;
// Hide menu once we know its width
$('#showmenu').click(function() {
var $menu = $('.menu');
if ($menu.is(':visible')) {
// Slide away
$menu.animate({left: -($menu.outerWidth() + 10)}, function() {
$menu.hide();
});
}
else {
// Slide in
$menu.show().css("left", -($menu.outerWidth() + 10)).animate({left: 0});
}
});
});
</script>
</body>
</html>
OK, więc dlaczego -1? –
Jeśli moje pytanie jest złe, proszę pomóż mi to poprawić –
Myślę, że -1 jest za to, że nie stawiam tego, co tu wypróbowałeś. – krishgopinath