JQuery slideToggle direction
Я пытаюсь переместить jquery.slideToggle, но я не могу добавить направление слева направо или справа налево при щелчке div (nav). Пожалуйста, помогите мне, ниже мой код.
<!DOCTYPE html>
<html>
<head>
<style>
p { width:400px; float:right;background:#e4e4e4; margin:5px;padding:5px;}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body style="font-size:10px; color:#333;">
<div style="width:50px; height:15px;float:right;background:#ccc;border:1px solid #333;text-align:center;">Nav</div>
<p>
This is the paragraph to end all paragraphs. You
should feel <em>lucky</em> to have seen such a paragraph in
your life. Congratulations!
</p>
<script>
$("div").click(function () {
$("p").slideToggle("slow");
});
</script>
</body>
Я новичок в jquery, очень благодарен за помощь.
Ответы
Ответ 1
Вам нужно добавить родителя в текст.
<body>
<div class="nav">Nav</div>
<div class="text">
<p>This is the paragraph to end all paragraphs. You should feel <em>lucky</em> to have seen such a paragraph in your life. Congratulations!</p>
</div>
</body>
Стиль:
body {
font-size: 10px;
color: #333; }
.nav {
float: right;
width: 50px;
height: 30px;
text-align: center;
background: #ccc;
border: 1px solid #333; }
.text {
overflow: hidden;
float: right;
margin: 5px;
padding: 5px;
width: 400px;
background: #e4e4e4; }
И javascript:
$('.nav').click(function() {
$('.text p').css({
'width': $('.text p').width(),
'height': $('.text p').height()
});
$('.text').animate({'width': 'toggle'});
});
У вас есть демо: http://jsfiddle.net/abwVd/
Ответ 2
Поведение slideToggle по умолчанию в jquery - это "слайд" или "слайд вниз". Если вы хотите, чтобы ваш <p>
"скользил влево" и "слайд вправо", вы можете использовать эффект "слайда", доступный в jquery ui. Аргумент направления принимает значения "вверх", "вниз", "влево", "вправо" в качестве допустимых значений. http://docs.jquery.com/UI/Effects/Slide
Ответ 3
Вы можете сделать это:
p { width:400px; position: absolute; background:#e4e4e4; margin:5px;padding:5px;}
(используйте позицию absolute вместо float right)
И это:
$(document).ready(function() {
var $elem = $("p");
var docwidth = $(document).width();
var inileft = docwidth - $elem.outerWidth();
$elem.css("left", inileft); //Position element tho the right
$("div").click(function () { //This slides
$elem.animate({
left: (parseInt($elem.css("left"), 10) >= docwidth ? inileft : docwidth)
});
});
});
Используя анимацию, вы можете создавать очень настраиваемые анимации.
Надеюсь это поможет. Приветствия
Ответ 4
<script>
$("div").click(function () {
$("p").slideToggle("slow", {direction: "left"}, 100);
});
</script>