我需要在按钮点击(特别是箭头)上显示/隐藏文本的帮助。我有一个隐藏的文本块,我需要在与旋转180度的箭头一致的情况下将其向下滑动。我也希望它只针对点击箭头上方的帖子执行此操作。我在fiddle中提出的解决方案存在很多问题。
以下是代码:
$(function () {
var angle = -180,
height = "100%";
$(".down-arrow").click(function () {
$(".down-arrow").css({
'-webkit-transform': 'rotate(' + angle + 'deg)',
'-moz-transform': 'rotate(' + angle + 'deg)',
'-o-transform': 'rotate(' + angle + 'deg)',
'-ms-transform': 'rotate(' + angle + 'deg)',
});
$(".blog-post").animate({
'height' : height
});
angle -= 180;
height = "50px";
});
});
这些是我遇到的问题:
答案 0 :(得分:1)
100%
转换为像素(使用$(this).parent().innerHeight()
或类似的东西,然后才能正常运作。$(this)
,.next()
和.prev()
函数的组合来获得正确的帖子。答案 1 :(得分:1)
设置动画持续时间。请参阅jquery.animate()文档。
在使用百分比进行动画制作时,似乎jquery非常错误。 http://bugs.jquery.com/ticket/10669 http://bugs.jquery.com/ticket/9505尝试使用像素而不是百分比http://jsfiddle.net/8obybt1d/1/
因为您没有将高度值更改回百分百
一段粗略的代码:
if (height == "50px") {
height = "100%";
}
else {
height == "50px"
}
尝试使用'这个'关键词。
答案 2 :(得分:1)
使用起来会更加动态和干净:
首先,我们将获取数组中所有height
div的.blog-post
个。
现在我们知道所有height: 50px
的实际高度,然后创建div的div's
。这将有助于使div平滑滑动,因为我们知道高度。
transform:rotate
属性。与此同时,我们将检查相应的.blog-post
div的高度。因此,如果它超过50px
我们会将其设为50px
,否则我们会从数组中获取它的实际height
并给它。这是JS / JQuery代码:
var totalNum = $('.blog-post').length; // Counting number of .blog-post div on page.
var i, myArray = [];
for (i = 0; i < totalNum; i++) {
var curHeight = $('.blog-post:eq(' + i + ')').outerHeight();
myArray.push(curHeight);
}
$('.blog-post').css('height', '50px');
$('.down-arrow').click(function () {
$(this).toggleClass('invert');
var index = $('.down-arrow').index(this);
var heightCheck = $('.blog-post:eq(' + index + ')').outerHeight();
if (heightCheck < 51) {
$('.blog-post:eq(' + index + ')').css('height', myArray[index] + 'px');
} else {
$('.blog-post:eq(' + index + ')').css('height', '50px');
}
});
如果您仍然不明白,请随时提出。
答案 3 :(得分:0)
解决第2点:
$(".blog-post").animate({
...
height = (height === "50px") ? height = "100%": height = "50px";
});