图片跟随鼠标效果实现步骤详解(源码分享)

演示效果GIF动画:

图片跟随鼠标效果
图片跟随鼠标效果

图片跟随鼠标效果实现步骤:

1、图片绝对定位,通过修改left和top属性,来移动图片
#img{position: absolute; left: 0; top: 0;}

2、获取图片对象
var img = document.getElementById(‘img’);

3、文档的鼠标移动事件,执行函数
document.onmousemove = function(e){执行代码}

4、代码部分为修改图片的属性
img.style.left = e.clientX + ‘px’;
img.style.top = e.clientY + ‘px’;

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#img{position: absolute; left: 0; top: 0; border:1px solid #ccc;}

<img id="img" src="./123.jpg" alt="" width="200" />
<div>X:<span id="xitem">横坐标</span> / Y:<span id="yitem">纵坐标</span></div>
//script代码开始
var img = document.getElementById('img');
var x = document.getElementById('xitem');
var y = document.getElementById('yitem');

document.onmousemove = function(e)
{
img.style.left = e.clientX + 'px';
img.style.top = e.clientY + 'px';

x.innerHTML = e.clientX;
y.innerHTML = e.clientY;
}
//script代码结束

完整源码见:https://github.com/webjust/case-study/tree/master/Javascript/001

新手要掌握的JavaScript的6种调试方式汇总

console.dir() 在控制面板打印数组

1、alert() 弹窗
2、document.write() 打印,致命的问题是代码执行完毕后,会覆盖页面的内容(等同于PHP中的echo)
3、console.log() 在控制台输出内容(在Chrome浏览器中调试)。(不能解析HTML内容)
4、console.dir() 打印数组。(等同于PHP中的print_r)
5、document.title() 在网页的title标签中输出内容。
6、debugger 断点。在调试工具中,点一步执行一步。

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<script>
// 1 弹窗
var num = 1;
num++;
alert(num);

// 2 输出内容
document.write(num);

// 3 在控制面板输出内容
var str = 'i love <br>javascript.'	//原样输出
var str = 'i love \njavascript.'	//换行输出
console.log(str);

// 4 在控制面板打印数组
var list = ['zhangsan', 'Guang Zhou', '1990.12.10'];
console.dir(list);

// 5 在网页标题输出
// document.title='JS的5种调试方式';
document.onmousemove = function(e){
	document.title = 'X: ' + e.clientX + ' Y: ' + e.clientY;
}
/*鼠标属性,事件*/

// 6 debugger
debugger;
</script>

PHP 和 AJAX 请求的实例代码(适合初学者)

所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

出处:http://www.w3school.com.cn/php/php_ajax_suggest.asp

说明:AJAX和数据库MySQL交互的案例见这里

HTML文件(内嵌Javascript处理代码):

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<script type="text/javascript">

/*
如果输入框为空 (str.length==0),则该函数清空 txtHint 占位符的内容,并退出函数。

如果输入框不为空,showHint() 函数执行以下任务:

    创建 XMLHttpRequest 对象
    当服务器响应就绪时执行函数
    把请求发送到服务器上的文件
    请注意我们向 URL 添加了一个参数 q (带有输入框的内容)
*/

function showHint(str)
{
var xmlhttp;

if (str.length==0)
  { 
  document.getElementById("txtHint").innerHTML="";
  return;
  }

/*
创建 XMLHttpRequest 对象:

为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject
*/
if (window.XMLHttpRequest)
{ // code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}
else
{ // code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

/*
-------------------------------------
服务器响应:
-------------------------------------

如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

  responseText  获得字符串形式的响应数据。
  responseXML   获得 XML 形式的响应数据。

-------------------------------------
onreadystatechange 事件:
-------------------------------------

当请求被发送到服务器时,我们需要执行一些基于响应的任务。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的状态信息。

onreadystatechange
存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。

readyState  
存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。

    0: 请求未初始化
    1: 服务器连接已建立
    2: 请求已接收
    3: 请求处理中
    4: 请求已完成,且响应已就绪

status
  200: "OK"
  404: 未找到页面

*/
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
  }
}

/*
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法。

-------------------------------------
XMLHttpRequest 对象
-------------------------------------

open(method,url,async)  
规定请求的类型、URL 以及是否异步处理请求。

    method:请求的类型;GET 或 POST
    url:文件在服务器上的位置
    async:true(异步)或 false(同步)

send(string)  
将请求发送到服务器。

    string:仅用于 POST 请求

*/
xmlhttp.open("GET", "gethint.php?q="+str, true);
xmlhttp.send();
}
</script>
</head>
<body>

<h3>请在下面的输入框中键入字母(A - Z):</h3>
<form action=""> 
姓氏:<input type="text" id="txt1" onkeyup="showHint(this.value)" />
<!-- 由 "onkeyup" 事件触发 -->
</form>
<p>建议:<span id="txtHint"></span></p>
</body>

PHP页面:gethint.php

Select Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
// 用名字来填充数组
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";

//获得来自 URL 的 q 参数
$q=$_GET["q"];

//如果 q 大于 0,则查找数组中的所有提示
if (strlen($q) > 0)
  {
  $hint="";
  for($i=0; $i<count($a); $i++)
    {
    if (strtolower($q)==strtolower(substr($a[$i], 0, strlen($q))))
      {
      if ($hint=="")
        {
        $hint=$a[$i];
        }
      else
        {
        $hint=$hint." , ".$a[$i];
        }
      }
    }
  }

// 如果未找到提示,则把输出设置为 "no suggestion"
// 否则设置为正确的值
if ($hint == "")
  {
  $response="no suggestion";
  }
else
  {
  $response=$hint;
  }

//输出响应
echo $response;
?>

学习javascript: 调试onload事件执行时间的小技巧

代码示例如下:

<!DOCTYPE html>
<html>
<head>
    <title>onload事件</title>
    <meta charset=”utf-8″ />
    <script type=”text/javascript”>
        alert(“456”);
        window.onload=function(){    
            alert(“123”);
        }
        alert(“789”);
    </script>
</head>
<body>

</body>
</html>

首先弹出:456;
其次弹出:789;
最后弹出:123;

此例可说明:onload事件是在当页面被完全加载时才执行