1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml">
3
<head>
4
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
5
<title>无标题文档</title>
6
<style type="text/css">
7
<!--
8
* {
9
font-family: Verdana, Arial, Helvetica, sans-serif;
10
font-size: 12px;
11
color: #333333;
12
}
13
-->
14
</style>
15
</head>
16
17
<body>
18
<div>
19
<table id="dataTable" border="1" cellpadding="0" cellspacing="0" style="table-layout:fixed;border-collapse:collapse;">
20
<colgroup>
21
<col style="width:200px;" />
22
<col style="width:100px;" />
23
<col style="width:100px;" />
24
<col style="width:100px;" />
25
<col style="width:100px;" />
26
</colgroup>
27
<tr>
28
<td>拖动我1</td>
29
<td>拖动我2</td>
30
<td>拖动我3</td>
31
<td>拖动我4</td>
32
<td>拖动我5</td>
33
</tr>
34
<tr>
35
<td> </td>
36
<td> </td>
37
<td> </td>
38
<td> </td>
39
<td> </td>
40
</tr>
41
<tr>
42
<td> </td>
43
<td> </td>
44
<td> </td>
45
<td> </td>
46
<td> </td>
47
</tr>
48
<tr>
49
<td> </td>
50
<td> </td>
51
<td> </td>
52
<td> </td>
53
<td> </td>
54
</tr>
55
<tr>
56
<td> </td>
57
<td> </td>
58
<td> </td>
59
<td> </td>
60
<td> </td>
61
</tr>
62
<tr>
63
<td> </td>
64
<td> </td>
65
<td> </td>
66
<td> </td>
67
<td> </td>
68
</tr>
69
</table>
70
</div>
71
<script language="javascript" type="text/javascript">
72
var JPos = {};
73
(function($){
74
75
$.getAbsPos = function(pTarget){
76
var x_ = y_ = 0;
77
78
if(pTarget.style.position != "absolute"){
79
while(pTarget.offsetParent){
80
x_ += pTarget.offsetLeft;
81
y_ += pTarget.offsetTop;
82
pTarget = pTarget.offsetParent;
83
}
84
}
85
x_ += pTarget.offsetLeft;
86
y_ += pTarget.offsetTop;
87
return {x:x_,y:y_};
88
}
89
90
$.getEventPos = function(evt){
91
var _x,_y;
92
evt = JEvent.getEvent(evt);
93
if(evt.pageX || evt.pageY){
94
_x = evt.pageX;
95
_y = evt.pageY;
96
}else if(evt.clientX || evt.clientY){
97
_x = evt.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft) - (document.body.clientLeft || document.documentElement.clientLeft);
98
_y = evt.clientY + (document.body.scrollTop || document.documentElement.scrollTop) - (document.body.clientTop || document.documentElement.clientTop);
99
}else{
100
return $.getAbsPos(evt.target);
101
}
102
return {x:_x,y:_y};
103
}
104
105
})(JPos);
106
107
108
//=======================================================================================
109
110
var JEvent = {};
111
(function($){
112
$.getEvent = function(evt){
113
evt = window.event || evt;
114
115
if(!evt){
116
var fun = JEvent.getEvent.caller;
117
while(fun != null){
118
evt = fun.arguments[0];
119
if(evt && evt.constructor == Event)
120
break;
121
fun = fun.caller;
122
}
123
}
124
125
return evt;
126
}
127
128
$.doEvent = function(fun){
129
var args = arguments;
130
return function(){
131
return fun(args);
132
}
133
}
134
})(JEvent);
135
//=======================================================================================
136
137
var colIndex;
138
var dataTable = document.getElementById("dataTable");
139
var cols = dataTable.getElementsByTagName("COL");
140
141
var dragMask = document.createElement("DIV");
142
var mAWidth = mAHeight = 30;
143
document.body.insertBefore(dragMask,document.body.lastChild);
144
dragMask.style.cssText = "width:" + mAWidth + "px;height:" + mAHeight + "px;position:absolute;background-color:#000;filter: Alpha(Opacity=10);-moz-opacity:0.1;opacity: 0.1;display:none;z-index:999999999;display:none;";
145
146
var mask_mousemove = function(evt){
147
if(document.selection){//IE ,Opera
148
if(document.selection.empty)
149
document.selection.empty();//IE
150
else{//Opera
151
document.selection = null;
152
}
153
}else if(window.getSelection){//FF,Safari
154
window.getSelection().removeAllRanges();
155
}
156
157
var oPos = JPos.getAbsPos(this);
158
var mPos = JPos.getEventPos(evt);
159
160
var x = mPos.x - oPos.x - mAWidth / 2;
161
var tmpX = parseInt(cols[colIndex].style.width) + x;
162
dragMask.style.left = mPos.x - mAWidth / 2 + "px";
163
cols[colIndex].style.width = tmpX >= 2 ? tmpX + "px" : "2px";
164
if(!document.all)
165
dataTable.parentNode.style.width = dataTable.parentNode.clientWidth + x + "px";//这一句为处理FF时用。
166
}
167
168
var mask_mouseup = function(evt){
169
dragMask.style.display = "none";
170
}
171
172
dragMask.onmousemove = mask_mousemove;
173
dragMask.onmouseup = mask_mouseup;
174
175
var cell_mousedown = function(evt){
176
colIndex = this.colIndex;
177
var mPos = JPos.getEventPos(evt);
178
with(dragMask.style){
179
left = mPos.x - mAWidth / 2 + "px";
180
top = mPos.y - mAHeight / 2 + "px";
181
display = "";
182
}
183
}
184
185
var chk_click = function(evt){
186
var obj = cols[this.colIndex];
187
if(this.checked){
188
obj.style.cssText = obj.css_ ? obj.css_ : "width:100px;";
189
}else{
190
obj.css_ = obj.style.cssText;
191
obj.style.cssText = document.all ? "display:none" : "visibility: collapse;overflow:hidden;width:0px;";
192
}
193
}
194
195
var i , o;
196
var label ,chk;
197
for(i = 0 ; o = dataTable.rows[0].cells[i] ; i++){
198
o.colIndex = i;
199
o.onmousedown = cell_mousedown;
200
201
label = document.createElement("LABEL");
202
document.body.insertBefore(label,document.body.lastChild);
203
chk = document.createElement("INPUT");
204
chk.type = "checkbox";
205
label.appendChild(chk);
206
chk.onclick = chk_click;
207
chk.colIndex = i;
208
chk.checked = "checked";
209
label.appendChild(document.createTextNode(o.innerHTML));
210
}
211
</script>
212
</body>
213
</html>
214

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

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

来源:https://www.cnblogs.com/mijian/archive/2008/06/27/1231376.html