html轮播图3d翻转,jQuery自适应-3D旋转轮播图

var slideNumber; //轮播图片的数量

var miniSlideBtn = true; //miniSlideBtn=true为开启滚动按钮

var isableTouch = true; //是否可以触摸滑动切换

var isAutoPlay = true; //是否可以自动轮播

//窗口大小改变时改变轮播图宽高

$(window).resize(function() {

$(".slide").height($(".slide").width() * 0.56);

});

$(function() {

$("#slide").height($("#slide").width() * 0.56); //调整轮播图的高度

slideNumber = $("#slide img").length; //轮播图数量

for (let i = 0; i < slideNumber; i++) { //给每个div,而不是img,添加自定义属性编号

$("#slide .pic").eq(i).attr('data-img-id', i);

}//根据轮播图片数量添加图片位置对应的样式

//还有 if(slideNumber=1,=2,=3,=4,>5)

if (slideNumber = 5) {for (let i = 0; i < slideNumber; i++) {

$("#slide .pic").eq(i).addClass('p' + (i + 1));

}

}//根据图片数量设置轮播图按钮

if(miniSlideBtn) {for (let i = 0; i < slideNumber; i++) {

$("#slide .btn").append("");

}

$("#slide .btn").width(slideNumber * 34);

$("#slide .btn").css('margin-left', '-' + slideNumber * 17 + 'px'); //调整margin-left 负值使按钮居中

}//自动切换

if (isAutoPlay) { setInterval(() => { right(); }, 3000) }//触摸切换

if(isableTouch) { slideTouch(); }

imgClickChange();//点击图片左右切换图片

currentBtn();//当前轮播按钮的选中状态

});

$(".btn-prev").click(function () { //点击按钮翻上一页

left();

})

$(".btn-next").click(function () { //点击按钮翻下一页

right();

})/*下一张图片,右边的图向左走,注意:第一个变成最后一个,最后一个变成倒数第二个*/

functionright() {

let temp= newArray();for (let i = 0; i < slideNumber; i++) {

temp[i]= $("#slide .pic[data-img-id=" + i + "]").attr('class'); //临时数组获取class是pic p1,pic p2,pic p3...

}for (let i = 0; i < slideNumber; i++) {if (i == 0) { //如果编号为第一张图片,它将变成最后一个

$("#slide .pic[data-img-id=" + i + "]").attr('class', temp[slideNumber - 1]);

}else{

$("#slide .pic[data-img-id=" + i + "]").attr('class', temp[i - 1]);

}

}

imgClickChange();//点击图片左右切换图片

currentBtn();//当前轮播按钮的选中状态

}/*上一张图片, 左边的图向右走,注意:最后一张会变成第一张,第一个图变成第二个*/

functionleft() {

let temp= newArray();for (let i = 0; i < slideNumber; i++) {

temp[i]= $("#slide .pic[data-img-id=" + i + "]").attr('class'); //临时数组获取class pic p1,pic p2...

}for (let i = 0; i < slideNumber; i++) {if (i == slideNumber - 1) { //如果编号为最后一张图片,它将变成

$("#slide .pic[data-img-id=" + i + "]").attr('class', temp[0]);

}else{

$("#slide .pic[data-img-id=" + i + "]").attr('class', temp[i + 1]);

}

}

imgClickChange();//点击图片本身切换图片

currentBtn();//当前轮播按钮的选中状态

}/*点击图片左右切换图片*/

functionimgClickChange() {//$("#slide .p2").click(function(){ prevImg();});//为什么这种写法无效

//$("#slide .p4").click(function(){ nextImg();});//为什么这种写法无效

$('#slide .pic').removeAttr('onclick');

$("#slide .p2").attr('onclick', 'left()');

$("#slide .p4").attr('onclick', 'right()');

}/*当前轮播按钮的选中状态*/

functioncurrentBtn() {var cur = parseInt($("#slide .p3").attr('data-img-id'));//取.p3的当前img-id

$("#slide .btn span").removeClass('on');

$("#slide .btn span[data-minibtn-id=" + cur + "]").addClass('on');

}/*jquery写法 slideTouch(),触摸滑动切换*/

/*function slideTouch() {

let _start = 0, _end = 0;

$("#slide").on('touchstart', (e) => {

_start = e.originalEvent.targetTouches[0].pageX;

});

$('#slidd').on('touchmove', (e) => {

// _end = (_start - e.originalEvent.targetTouches[0].pageX);

_end = e.originalEvent.targetTouches[0].pageX;

});

$('#slide').on('touchend', (e) => {

if ((_start - _end) < -100) { //【起点-终点】的绝对值 >100,故 x100

left();

_end = 0;

} else if ((_start - _end) > 100) {

right();

_end = 0;

}

});

}*/

/*js原生写法 slideTouch(),作用完全同上,触摸滑动切换*/

functionslideTouch() {

let _start= 0, _end = 0,

_ele= document.getElementById('slide');

_ele.addEventListener('touchstart', touchStart, false);

_ele.addEventListener('touchmove', touchMove, false);

_ele.addEventListener('touchend', touchEnd, false);functiontouchStart(e) {

_start= e.targetTouches[0].pageX;

}functiontouchMove(e) {

_end= e.targetTouches[0].pageX;

}functiontouchEnd(e) {if ((_start - _end) < -100) { //【起点-终点】的绝对值 >100,故 x100

left();

_end= 0;

}else if ((_start - _end) > 100) {

right();

_end= 0;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的 JavaFX 实现图片 3D 翻转效果的示例代码: ```java import javafx.animation.Interpolator; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; import javafx.animation.Timeline; import javafx.application.Application; import javafx.geometry.Point3D; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.media.AudioClip; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.transform.Rotate; import javafx.stage.Stage; import javafx.util.Duration; public class Image3DFlipDemo extends Application { private static final String AUDIO_URL = "http://www.music.helsinki.fi/tmt/opetus/uusmedia/esim/a2002011001-e02.wav"; private static final double IMAGE_WIDTH = 400.0; private static final double IMAGE_HEIGHT = 300.0; private ImageView imageView; private AudioClip audioClip; @Override public void start(Stage stage) throws Exception { // 创建 ImageView 并加载图片 Image image = new Image("https://picsum.photos/" + (int) IMAGE_WIDTH + "/" + (int) IMAGE_HEIGHT); imageView = new ImageView(image); imageView.setFitWidth(IMAGE_WIDTH); imageView.setFitHeight(IMAGE_HEIGHT); // 创建背景矩形 Rectangle bgRect = new Rectangle(IMAGE_WIDTH, IMAGE_HEIGHT, Color.BLACK); // 创建容器 Group 并添加 ImageView 和背景矩形 Group group = new Group(bgRect, imageView); // 创建场景 Scene 并添加容器 Group Scene scene = new Scene(group, IMAGE_WIDTH, IMAGE_HEIGHT, Color.BLACK); // 创建旋转变换 Rotate Rotate rotate = new Rotate(0, new Point3D(0, 0, 0)); // 将旋转变换 Rotate 添加到 ImageView 上 imageView.getTransforms().add(rotate); // 创建 Timeline 并添加旋转动画 Timeline timeline = new Timeline( new KeyFrame(Duration.ZERO, new KeyValue(rotate.angleProperty(), 0, Interpolator.LINEAR)), new KeyFrame(Duration.seconds(1), new KeyValue(rotate.angleProperty(), 180, Interpolator.EASE_OUT)) ); // 设置 Timeline 循环次数为 2 timeline.setCycleCount(2); // 设置 Timeline 播放完成后的回调函数 timeline.setOnFinished(event -> { // 将 ImageView 的图片翻转为镜像 imageView.setScaleX(imageView.getScaleX() * -1); // 播放音效 if (audioClip != null) { audioClip.play(); } }); // 设置场景 Scene 的鼠标点击事件 scene.setOnMouseClicked(event -> { // 如果 Timeline 正在播放,则返回 if (timeline.getStatus() == Timeline.Status.RUNNING) { return; } // 设置 Timeline 的起始值为当前旋转角度 double startAngle = rotate.getAngle(); // 创建 KeyValue 并添加到 Timeline 中 KeyValue keyValue = new KeyValue(rotate.angleProperty(), startAngle + 180, Interpolator.EASE_IN); timeline.getKeyFrames().set(1, new KeyFrame(Duration.seconds(1), keyValue)); // 播放 Timeline timeline.play(); }); // 创建音效 AudioClip audioClip = new AudioClip(AUDIO_URL); // 显示场景 Scene stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } } ``` 在上面的代码中,我们创建了一个 ImageView 并加载了一张图片,然后创建了一个背景矩形和一个容器 Group,并将 ImageView 和背景矩形添加到容器 Group 中,最后创建了一个场景 Scene 并将容器 Group 添加到场景 Scene 中。 接着,我们创建了一个旋转变换 Rotate,并将其添加到 ImageView 上,然后创建了一个 Timeline 并添加了旋转动画,然后设置 Timeline 循环次数为 2,并设置 Timeline 播放完成后的回调函数,回调函数中将 ImageView 的图片翻转为镜像,并播放了一个音效。 最后,我们设置了场景 Scene 的鼠标点击事件,当鼠标点击场景时,如果 Timeline 正在播放,则直接返回,否则设置 Timeline 的起始值为当前旋转角度,并播放 Timeline。 你可以将上面的代码复制到一个 Java 类中并运行,然后点击场景看看图片的 3D 翻转效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值