利用jquery判断点是否在椭圆内
源码例子下载 :
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>画椭圆</title>
<style>
.title{text-align:center;}
.wrapper{margin: 0 auto;width: 500px; margin: 0 auto;border: 1px solid #000000;}
.content{position: relative;height: 500px;}
.dot{position: absolute;width:1px;height: 1px;overflow: hidden;font-size:0;line-height: 0; background: #333;}
</style>
</head>
<body>
<h1 class="title">画一个椭圆并判断点击是否在椭圆内</h1>
<div class="wrapper">
<div class="content" id="content">
</div> </div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>
//*********定义加载模块方法 start **************//
(function (window, undefined) {
if (window.define) {
return
}
function isFunction(obj) {
return Object.prototype.toString.call(obj) === "[object Function]"
} var MM = {};
var initModuleName = "initRun"; function require(name) {
if (!MM[name]) {
throw new Error("Module " + name + " is not defined.")
}
var module = MM[name];
if (module.inited === false) {
runModule(name)
}
return module.ret
} function runModule(name) {
var exports = {};
var module = MM[name];
if (isFunction(MM[name].factory)) {
var ret = MM[name].factory.apply(undefined, [require, exports, undefined]);
module.ret = ret === undefined ? exports : ret
} else {
module.ret = MM[name].factory
}
module.inited = true
} function define(name, deps, factory) {
if (MM[name]) {
throw new Error("Module " + name + " has been defined already.")
}
if (isFunction(deps)) {
factory = deps
}
MM[name] = {factory:factory, inited:false};
if (name === initModuleName) {
runModule(name)
}
} window.define = define
})(window);
//*********定义加载模块方法 end **************// /**
* @author ruby
* @despretion 画椭圆并判断点击是否在椭圆内
* @return
*/
(function(){
/**
* @dec 可以进行缓存的节点
* @type {Object}
*/
var $dom = {
content : $('#content')
}
/**
* @despretion定义 画椭圆函数
*/
define('mode/drawEliplse',function(require){
var ElipObj ={
draw : function(el,a,b){
var dotHtmlArr = [],//储存 画点的 html元素
leftStyle , rightStyle; //左右的样式值
var widthEl = el && el[0].offsetWidth ,
heightEl = el && el[0].offsetHeight; for(var i = 0; i < 360;i++){
leftStyle = (a*Math.sin(i) + (widthEl-2)/2) + "px";
rightStyle = (b*Math.cos(i) + (heightEl-2)/2) + "px"; dotHtmlArr.push('<div class="dot" style="left:' +
leftStyle+';top:'+rightStyle+'"></div>');
} el.html(dotHtmlArr.join("")); }
,
/**
* @desc 判断点击是否在椭圆内 算法在椭圆内点 左边点带入 后值小于1
* @param a 椭圆长
* @param b 椭圆宽
* @param x 鼠标x坐标
* @param y 鼠标y坐标
* @parm true 在椭圆内 false 不在椭圆内
*/
prove : function(a,b,x,y){
return Math.pow((x/a),2) + Math.pow((y/b),2) < 1 ? true : false;
}
}
return ElipObj;
});
/**
* @desc需要进行绑定的事件
*/
define('view/bindFun',function(require){
var drawMode = require("mode/drawEliplse"); $dom.content.bind('click',function(e){
if (e.pageX || e.pageY) {
var x = e.pageX,
y = e.pageY;
} else {
var x = e.clientX + document.body.scrollLeft - document.body.clientLeft,
y = e.clientY + document.body.scrollTop - document.body.clientTop;
} var offsetX = $(this).offset().left,
offsetY = $(this).offset().top; //鼠标所在点位置相对与中心点
x = x - offsetX - ($(this)[0].offsetWidth -2)/2;
y = y - offsetY - ($(this)[0].offsetHeight -2)/2; if( drawMode.prove(100,80,x,y) ){
alert("点击在椭圆内");
} }); });
/**
* @desc 模块启动函数
*/
define('initRun',function(require){
var drawMode = require("mode/drawEliplse"); drawMode.draw($dom.content,100,80);
require("view/bindFun"); }) })()
</script>
</body>
</html>
利用jquery判断点是否在椭圆内的更多相关文章
- js jquery 判断元素是否在数组内
js jquery 判断元素是否在数组内 一,js方法 var arr = ["a", "b", "c"]; // js arr.index ...
- 利用JQuery 来操作 ListBox和ListBox内移动
[导读]利用jquery 来操作 listbox和listbox内移动function listbox_move(listfrom,listto) { var size = $(" &quo ...
- js jquery 判断元素是否在数组内(转)
一,js方法 var arr = ["a", "b", "c"]; // js arr.indexOf("c") var ...
- jQuery判断当前页面是APP内打开还是浏览器打开
一.代码如下: function check_useragent() { var browser = { versions: function() { var u = navigator.userAg ...
- 利用jquery的$.Deferred方法在一个函数内获取另一个函数的返回值
使用场景:方法B需要方法A执行完成之后再执行,比如方法B中有用到方法A的变量:(需要引入jQuery1.5以后的版本) function A(){ var deffered = new $.Defer ...
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- 基于MVC4+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
在基于MVC4+EasyUI的Web开发框架里面,大量采用了Jquery的方法,对数据进行请求或者提交,方便页面和服务器后端进行数据的交互处理.本文主要介绍利用Jquery处理数据交互的几种方式,包括 ...
- 基于MVC4+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录
最近花了不少时间在重构和进一步提炼我的Web开发框架上,力求在用户体验和界面设计方面,和Winform开发框架保持一致,而在Web上,我主要采用EasyUI的前端界面处理技术,走MVC的技术路线,在重 ...
- js/jquery判断浏览器的方法小结
在网站前端开发中,浏览器兼容性是前端开发框架要解决的第一个问题,要解决兼容性问题就得首先准确判断出浏览器的类型及其版本,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道.今天我们把 ...
随机推荐
- 记开发个人图书收藏清单小程序开发(六)Web开发
Web页面开发暂时是没有问题了,现在开始接上Ptager.BL的DB部分. 首先需要初始化用户和书房信息.因为还没有给其他多余的设计,所以暂时只有个人昵称和书房名称. 添加 Init Razor Pa ...
- sharepoint 2013 升级要求
1. 安装过程合理: A. 可以同时在管理中心.两台前端.搜索服务器上安装重新发布的SP1补丁包(所提供的链接) B. 等待所有SP1补丁包安装完成,依次在管理中心.两台前端.搜索服务器上运行配置向导 ...
- NOIP2015BLOCKADE c++ 代码
#include<algorithm> #include<fstream> #include<functional> #include<iostream> ...
- 真机测试 Thnetwork connection was lost. No profiles for 'xxx' were found: Xcode couldn't find a provisioning profile matching 'xxx'. Code signing is required for product type
最近接手了一个新项目,是从外包接手的,结果出现了很多问题,真的很崩溃,崩溃,吐槽一下 问题一:一直请求不到数据,因为外包只做了一版,上架的这个版本是可以显示数据的,但是给我的项目是没有数据的,因为并没 ...
- vue 中的computed和watch
计算属性 通过计算得来的属性 computed:是一个计算属性,用来监听属性的变化 computed里面的方法调用的时候是不需要加() 另外里面的方法必须要有一个返回值 computed里面的方法 ...
- 解决Python向MySQL数据库插入中文数据时出现乱码
解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...
- docker微服务部署之:四、安装docker、docker中安装mysql和jdk1.8、手动构建镜像、部署项目
docker微服务部署之:三,搭建Zuul微服务项目 1.Centos7安装Docker 详见:Centos7安装Docker 2.Docker中安装jdk1.8 详见:使用Docker构建jdk1. ...
- leetcode-896-单调数列
题目描述: 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的. 如果对于所有 i <= j,A[i] ...
- 50.RocketMQ (quickstart)
要多给下属表功,绝不能抢功. 1.订阅消息 /** * Copyright (C) 2010-2013 Alibaba Group Holding Limited * * Licensed under ...
- Cassandra2.0.8导入到eclipse运行
如果想通过eclipse来调试或者查看Cassandra的代码,将其project导入到eclipse之中不愧是个好选择.下面将讲述将2.0.8 版本导入elcipse的过程. 该篇文章主要参考的官方 ...