以下函数使用import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int t;
t=Integer.parseInt(br.readLine());
while((t--)!=0)
{
int N,i,j;
N=Integer.parseInt(br.readLine());
int c []={0,0,0,0,0,0,0,0};
String arr [] ={"TTT","TTH","THT","THH","HTT","HTH","HHT","HHH"};
String str,str1;
N=Integer.parseInt(br.readLine());
str=br.readLine();
for(i=0;i<=37;i++)
{
str1="";
str1=str.substring(i,i+3);
for(j=0;j<8;j++)
{
if(str1.equals(arr[j]))
{
c[j]++;
break;
}
}
}
System.out.print(N);
for(i=0;i<8;i++)
System.out.print(" "+c[i]);
System.out.println();
}
}
}
参数(切换)使用jQuery滑动元素:
options
我想添加一个名为// options
slideRight: {
direction: 'right',
startValue: '0',
endValue: '100px'
},
// function
function(slide) {
const $el = $(this.el)
$el.click(() => {
if ($el.parent().css(slide.direction) === slide.startValue) {
$el.parent().animate({
[slide.direction]: slide.endValue
}, 200)
} else {
$el.parent().animate({
[slide.direction]: slide.startValue
}, 200)
}
})
}
的第四个选项,它将使另一个元素成为移动的镜像。
但为此,我需要相对于当前位置移动元素。我怎么能做到这一点?
(注意:元素的mirror
设置为position
。)
答案 0 :(得分:2)
检查这是否有效。我添加了第4个选项mirror
,然后给出与第一个元素相同的动画。不确定手柄是否正确,因为我没有完整的标记。
// options
slideRight: {
direction: 'right',
startValue: '0',
endValue: '100px',
mirror: '#mirrorElement'
},
// function
function(slide) {
const $el = $(this.el)
$el.click(() => {
if ($el.parent().css(slide.direction) === slide.startValue) {
$el.parent().animate({
[slide.direction]: slide.endValue
}, 200);
$(slide.mirror).animate({
[slide.direction]: slide.endValue
}, 200);
} else {
$el.parent().animate({
[slide.direction]: slide.startValue
}, 200)
$(slide.mirror).animate({
[slide.direction]: slide.startValue
}, 200);
}
})
}
答案 1 :(得分:2)
我的答案与目前发布的答案略有不同,但应该作为您想要的起点。我使用transform
进行相对定位,因为如果您已将某个元素定位在top left
,transform: translate
将相对于其固定的当前位置移动您的项目。我认为动画转换也有额外的性能优势。我会调查一下。
根据(不正确的我确定)假设在演示中修改你的代码:
const someObject = {
// function
slide: function (slide) {
const $el = $(slide.el)
$el.click(() => {
if (slide.slideRight.direction === 'right') {
$el.parent().animate({transform: 'translateX(' + slide.slideRight.endValue + 'px)'}, {
duration: 200,
step: function (now, fn) {
fn.start = $el.hasClass('in') ? slide.slideRight.endValue : slide.slideRight.startValue;
fn.end = $el.hasClass('in') ? slide.slideRight.startValue : slide.slideRight.endValue;
$el.parent().css({transform: 'translateX(' + now + 'px)'});
if (now === fn.end) {
$el.toggleClass('in');
}
}
})
} else {
// other stuff
}
})
}
}
someObject.slide({
el: '.position-me',
slideRight: {
direction: 'right',
startValue: 0,
endValue: 100,
mirror: '.position-me-parent-mirror'
}
})
<强> jsfiddle demo 强>
答案 2 :(得分:1)
将参数传递给.animate()
时,您可以设置right: "-=50px"
,以便将元素50px滑动到其当前right
值的右侧。
这样的东西会使两个元素相对于当前位置移动相同的数量:
function slide(startValue, endValue) {
var change = endValue-startValue;
$("#one").animate({right:"-="+change+"px"}, 200);
$("#two").animate({right:"-="+change+"px"}, 200)
}
slide(0,50)
这是一个工作小提琴:https://jsfiddle.net/uLv1mz2u/
这是你在找什么?