JQuery插件让图片旋转任意角度且代码极其简单

引入下方的jquery.rotate.js文件,然后通过$("选择器").rotate(角度);可以旋转任意角度,

例如$("#rotate-image").rotate(45);把这句放在$(document).ready(function(){ });

就是将id为rotate-image的图片旋转45度。

不过,貌似在Chrome中总是不显示。

唉,找了两个小时,才发现Chrome太坑爹了,没法获取图片的长宽。

解决办法是,把$("#rotate-image").rotate(45);放在

$(window).load(function(){ });中,因为在Chrome中图片在执行$(document).ready(function(){ });中的语句时并没有加载完图片,坑爹啊。

另外可以更方便的通过调用$("选择器").rotateRight()$("选择器").rotateLeft()来分别向右旋转90度和向左旋转90度。


jquery.rotate.js:

jQuery.fn.rotate = function(angle,whence) {
	var p = this.get(0);

	// we store the angle inside the image tag for persistence
	if (!whence) {
		p.angle = ((p.angle==undefined?0:p.angle) + angle) % 360;
	} else {
		p.angle = angle;
	}

	if (p.angle >= 0) {
		var rotation = Math.PI * p.angle / 180;
	} else {
		var rotation = Math.PI * (360+p.angle) / 180;
	}
	var costheta = Math.round(Math.cos(rotation) * 1000) / 1000;
	var sintheta = Math.round(Math.sin(rotation) * 1000) / 1000;
	//alert(costheta+","+sintheta);
 
	if (document.all && !window.opera) {
		var canvas = document.createElement('img');

		canvas.src = p.src;
		canvas.height = p.height;
		canvas.width = p.width;

		canvas.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11="+costheta+",M12="+(-sintheta)+",M21="+sintheta+",M22="+costheta+",SizingMethod='auto expand')";
	} else {
		var canvas = document.createElement('canvas');
		if (!p.oImage) {
			canvas.oImage = new Image();
			canvas.oImage.src = p.src;
		} else {
			canvas.oImage = p.oImage;
		}

		canvas.style.width = canvas.width = Math.abs(costheta*canvas.oImage.width) + Math.abs(sintheta*canvas.oImage.height);
		canvas.style.height = canvas.height = Math.abs(costheta*canvas.oImage.height) + Math.abs(sintheta*canvas.oImage.width);

		var context = canvas.getContext('2d');
		context.save();
		if (rotation <= Math.PI/2) {
			context.translate(sintheta*canvas.oImage.height,0);
		} else if (rotation <= Math.PI) {
			context.translate(canvas.width,-costheta*canvas.oImage.height);
		} else if (rotation <= 1.5*Math.PI) {
			context.translate(-costheta*canvas.oImage.width,canvas.height);
		} else {
			context.translate(0,-sintheta*canvas.oImage.width);
		}
		context.rotate(rotation);
		context.drawImage(canvas.oImage, 0, 0, canvas.oImage.width, canvas.oImage.height);
		context.restore();
	}
	canvas.id = p.id;
	canvas.angle = p.angle;
	p.parentNode.replaceChild(canvas, p);
}

jQuery.fn.rotateRight = function(angle) {
	this.rotate(angle==undefined?90:angle);
}

jQuery.fn.rotateLeft = function(angle) {
	this.rotate(angle==undefined?-90:-angle);
}


  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
要使用boost插件jQuery代码实现图片分页功能,你需要在页面中引入jQuery、booststrap和所选的分页插件的JS和CSS文件。以下是一个示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图片分页示例</title> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap-select/1.12.4/css/bootstrap-select.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap-fileinput/4.4.5/css/fileinput.min.css"> <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css"> </head> <body> <div class="container"> <h1>图片分页示例</h1> <div class="row"> <div class="col-md-8"> <div id="image-list"></div> <ul id="image-pagination" class="pagination"></ul> </div> </div> </div> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap-select/1.12.4/js/bootstrap-select.min.js"></script> <script src="https://cdn.bootcss.com/moment.js/2.18.1/moment.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script> <script src="https://cdn.bootcss.com/bootstrap-fileinput/4.4.5/js/fileinput.min.js"></script> <script> $(document).ready(function() { // 准备数据 var images = [...]; // 图片数据 var pageSize = 10; // 每页显示的数量 var totalPages = Math.ceil(images.length / pageSize); // 总页数 // 初始化分页插件 $('#image-pagination').bootstrapPaginator({ totalPages: totalPages, currentPage: 1, onPageChanged: function(event, oldPage, newPage) { // 当页码被点击时,更新页面内容 var startIndex = (newPage - 1) * pageSize; var endIndex = startIndex + pageSize; var pageImages = images.slice(startIndex, endIndex); // 显示图片内容 $('#image-list').empty(); $.each(pageImages, function(index, image) { $('#image-list').append('<div class="col-md-3"><img src="' + image.imageUrl + '"></div>'); }); } }); // 初始化页面内容 var pageImages = images.slice(0, pageSize); $('#image-list').empty(); $.each(pageImages, function(index, image) { $('#image-list').append('<div class="col-md-3"><img src="' + image.imageUrl + '"></div>'); }); }); </script> </body> </html> ``` 在这个示例代码中,我们使用了bootstrapPaginator插件来实现分页功能。我们首先准备了图片数据和每页显示的数量,然后计算出总页数。接着,我们初始化了分页插件,并绑定了onPageChanged事件。当页码被点击时,我们更新页面内容,显示相应的图片。 需要注意的是,bootstrapPaginator插件需要依赖于bootstrap的CSS和JS文件,以及jQuery库。在这个示例代码中,我们引入了一些其他的boost插件,比如bootstrap-select、bootstrap-datetimepicker、fileinput等。如果你的项目中已经使用了这些插件,你可以根据实际情况来选择是否需要引入这些插件的CSS和JS文件。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值