Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mui
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
mui
Commits
029e5f44
Commit
029e5f44
authored
Jun 11, 2015
by
hbcui1984
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
im模板界面支持放大预览图片
parent
a06d6a5e
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
392 additions
and
2 deletions
+392
-2
examples/hello-mui/css/mui.imageviewer.css
examples/hello-mui/css/mui.imageviewer.css
+123
-0
examples/hello-mui/examples/im-chat.html
examples/hello-mui/examples/im-chat.html
+1
-2
examples/hello-mui/js/mui.imageViewer.js
examples/hello-mui/js/mui.imageViewer.js
+268
-0
No files found.
examples/hello-mui/css/mui.imageviewer.css
0 → 100644
View file @
029e5f44
.mui-imageviewer
{
position
:
absolute
;
position
:
fixed
;
background-color
:
rgba
(
0
,
0
,
0
,
0.9
);
width
:
100%
;
height
:
100%
;
z-index
:
99
;
left
:
0px
;
top
:
0px
;
display
:
none
;
opacity
:
0
;
-webkit-transition
:
all
0.6s
ease-in-out
;
transition
:
all
0.6s
ease-in-out
;
-webkit-transform-style
:
preserve-3d
;
-webkit-backface-visibility
:
hidden
;
overflow
:
hidden
;
margin
:
0px
;
padding
:
0px
;
box-sizing
:
border-box
;
}
.mui-imageviewer-mask
{
position
:
absolute
;
z-index
:
11
;
width
:
100%
;
height
:
100%
;
left
:
0px
;
top
:
0px
;
display
:
none
;
}
.mui-imageviewer
.mui-imageviewer-header
{
position
:
absolute
;
height
:
45px
;
width
:
100%
;
left
:
0px
;
top
:
0px
;
z-index
:
10
;
background-color
:
rgba
(
0
,
0
,
0
,
0.5
);
margin
:
0px
;
padding
:
0px
;
box-sizing
:
border-box
;
}
.mui-imageviewer
.mui-imageviewer-state
{
display
:
block
;
width
:
100%
;
height
:
100%
;
line-height
:
100%
;
color
:
#eee
;
text-align
:
center
;
font-size
:
16px
;
padding
:
15px
;
}
.mui-imageviewer
.mui-imageviewer-header
.mui-imageviewer-close
{
position
:
absolute
;
top
:
5px
;
right
:
5px
;
font-size
:
32px
;
color
:
#aaa
;
}
.mui-imageviewer
.mui-imageviewer-header
.mui-imageviewer-close
:active
{
color
:
#FF5053
;
}
.mui-imageviewer
.mui-imageviewer-item
{
width
:
100%
;
height
:
100%
;
left
:
0px
;
top
:
0px
;
position
:
absolute
;
z-index
:
0
;
margin
:
0px
;
padding
:
0px
;
box-sizing
:
border-box
;
-webkit-transition
:
-webkit-transform
500ms
ease-in-out
;
transition
:
transform
500ms
ease-in-out
;
display
:
table
;
overflow
:
hidden
;
}
.mui-imageviewer
.mui-imageviewer-item-center
{
-webkit-transform
:
translateX
(
0
);
transform
:
translateX
(
0
);
}
.mui-imageviewer
.mui-imageviewer-item-left
{
-webkit-transform
:
translateX
(
-100%
);
transform
:
translateX
(
-100%
);
}
.mui-imageviewer
.mui-imageviewer-item-right
{
-webkit-transform
:
translateX
(
100%
);
transform
:
translateX
(
100%
);
}
.mui-imageviewer
.mui-imageviewer-item
span
{
display
:
table-cell
;
text-align
:
center
;
vertical-align
:
middle
;
line-height
:
100%
;
font-size
:
100%
;
margin
:
0px
;
padding
:
0px
;
box-sizing
:
border-box
;
overflow
:
auto
;
}
.mui-imageviewer
.mui-imageviewer-item
img
{
backface-visibility
:
hidden
;
transform-origin
:
50%
50%
0px
;
max-width
:
100%
;
}
.mui-imageviewer-left
,
.mui-imageviewer-right
{
position
:
absolute
;
z-index
:
2
;
color
:
#aaa
;
top
:
50%
;
margin-top
:
-18px
;
font-size
:
36px
;
}
.mui-imageviewer-left
{
left
:
5px
;
}
.mui-imageviewer-right
{
right
:
5px
;
}
.mui-imageviewer-left
:active
,
.mui-imageviewer-right
:active
{
color
:
#fff
;
}
\ No newline at end of file
examples/hello-mui/examples/im-chat.html
View file @
029e5f44
...
@@ -109,7 +109,6 @@
...
@@ -109,7 +109,6 @@
.msg-item
.msg-user-img
{
.msg-item
.msg-user-img
{
width
:
38px
;
width
:
38px
;
height
:
38px
;
height
:
38px
;
border
:
solid
1px
#d3d3d3
;
display
:
inline-block
;
display
:
inline-block
;
border-radius
:
3px
;
border-radius
:
3px
;
vertical-align
:
top
;
vertical-align
:
top
;
...
@@ -398,7 +397,7 @@
...
@@ -398,7 +397,7 @@
});
});
}
}
};
};
var
imageViewer
=
new
$
.
ImageViewer
(
'
img
'
,
{
var
imageViewer
=
new
$
.
ImageViewer
(
'
.msg-content-image
'
,
{
dbl
:
false
dbl
:
false
});
});
var
bindMsgList
=
function
()
{
var
bindMsgList
=
function
()
{
...
...
examples/hello-mui/js/mui.imageViewer.js
0 → 100644
View file @
029e5f44
/**
* 图片预览组件
* varstion 0.4.0
* by Houfeng
* Houfeng@DCloud.io
*/
(
function
(
$
,
document
)
{
$
.
init
({
gestureConfig
:
{
tap
:
true
,
//默认为true
doubletap
:
true
,
//默认为false
longtap
:
true
,
//默认为false
swipe
:
true
,
//默认为true
drag
:
true
,
//默认为true
hold
:
true
,
//默认为false,不监听
release
:
true
//默认为false,不监听
}
});
var
touchSupport
=
(
'
ontouchstart
'
in
document
);
var
tapEventName
=
touchSupport
?
'
tap
'
:
'
click
'
;
var
enterEventName
=
touchSupport
?
'
tap
'
:
'
click
'
;
var
imageClassName
=
$
.
className
(
'
image
'
);
//创建DOM (此函数是否可放在 mui.js 中)
$
.
dom
=
function
(
str
)
{
if
(
!
$
.
__create_dom_div__
)
{
$
.
__create_dom_div__
=
document
.
createElement
(
'
div
'
);
}
$
.
__create_dom_div__
.
innerHTML
=
str
;
return
$
.
__create_dom_div__
.
childNodes
;
};
//图片预览组件类
var
ImageViewer
=
$
.
ImageViewer
=
$
.
Class
.
extend
({
//构造函数
init
:
function
(
selector
,
options
)
{
var
self
=
this
;
self
.
options
=
options
||
{};
self
.
selector
=
selector
||
'
img
'
;
if
(
self
.
options
.
dbl
)
{
enterEventName
=
touchSupport
?
'
doubletap
'
:
'
dblclick
'
;
}
self
.
findAllImage
();
self
.
createViewer
();
self
.
bindEvent
();
},
//创建图片预览组件的整体 UI
createViewer
:
function
()
{
var
self
=
this
;
self
.
viewer
=
$
.
dom
(
"
<div class='mui-imageviewer'><div class='mui-imageviewer-mask'></div><div class='mui-imageviewer-header'><i class='mui-icon mui-icon-closeempty mui-imageviewer-close'></i><span class='mui-imageviewer-state'></span></div><i class='mui-icon mui-icon-arrowleft mui-imageviewer-left'></i><i class='mui-icon mui-icon-arrowright mui-imageviewer-right'></i></div>
"
);
self
.
viewer
=
self
.
viewer
[
0
]
||
self
.
viewer
;
//self.viewer.style.height = screen.height;
self
.
closeButton
=
self
.
viewer
.
querySelector
(
'
.mui-imageviewer-close
'
);
self
.
state
=
self
.
viewer
.
querySelector
(
'
.mui-imageviewer-state
'
);
self
.
leftButton
=
self
.
viewer
.
querySelector
(
'
.mui-imageviewer-left
'
);
self
.
rightButton
=
self
.
viewer
.
querySelector
(
'
.mui-imageviewer-right
'
);
self
.
mask
=
self
.
viewer
.
querySelector
(
'
.mui-imageviewer-mask
'
);
document
.
body
.
appendChild
(
self
.
viewer
);
},
//查找所有符合的图片
findAllImage
:
function
()
{
var
self
=
this
;
self
.
images
=
[].
slice
.
call
(
$
(
self
.
selector
));
},
//检查图片是否为启动预览的图片
checkImage
:
function
(
target
)
{
var
self
=
this
;
if
(
target
.
tagName
!==
'
IMG
'
)
return
false
;
return
self
.
images
.
some
(
function
(
image
)
{
return
image
==
target
;
});
},
//绑定事件
bindEvent
:
function
()
{
var
self
=
this
;
//绑定图片 tap 事件
document
.
addEventListener
(
enterEventName
,
function
(
event
)
{
if
(
!
self
.
viewer
)
return
;
var
target
=
event
.
target
;
if
(
!
self
.
checkImage
(
target
))
return
;
self
.
viewer
.
style
.
display
=
'
block
'
;
setTimeout
(
function
()
{
self
.
viewer
.
style
.
opacity
=
1
;
},
0
);
self
.
index
=
self
.
images
.
indexOf
(
target
);
self
.
currentItem
=
self
.
createImage
(
self
.
index
);
},
false
);
//关系按钮事件
self
.
closeButton
.
addEventListener
(
tapEventName
,
function
(
event
)
{
self
.
viewer
.
style
.
opacity
=
0
;
setTimeout
(
function
()
{
self
.
viewer
.
style
.
display
=
'
none
'
;
self
.
disposeImage
(
true
);
},
600
);
event
.
preventDefault
();
event
.
cancelBubble
=
true
;
},
false
);
//处理左右按钮
self
.
leftButton
.
addEventListener
(
tapEventName
,
function
()
{
self
.
prev
();
},
false
);
self
.
rightButton
.
addEventListener
(
tapEventName
,
function
()
{
self
.
next
();
},
false
);
//处理划动
self
.
mask
.
addEventListener
(
'
touchmove
'
,
function
(
event
)
{
event
.
preventDefault
();
event
.
cancelBubble
=
true
;
},
false
);
self
.
viewer
.
addEventListener
(
'
swipeleft
'
,
function
(
event
)
{
if
(
self
.
scaleValue
==
1
)
self
.
next
();
event
.
preventDefault
();
event
.
cancelBubble
=
true
;
},
false
);
self
.
viewer
.
addEventListener
(
'
swiperight
'
,
function
(
event
)
{
if
(
self
.
scaleValue
==
1
)
self
.
prev
();
event
.
preventDefault
();
event
.
cancelBubble
=
true
;
},
false
);
//处理缩放开始
self
.
viewer
.
addEventListener
(
'
touchstart
'
,
function
(
event
)
{
var
touches
=
event
.
touches
;
if
(
touches
.
length
==
2
)
{
var
p1
=
touches
[
0
];
var
p2
=
touches
[
1
];
var
x
=
p1
.
pageX
=
p2
.
pageX
;
//x1-x2
var
y
=
p1
.
pageY
-
p2
.
pageY
;
//y1-y2
self
.
scaleStart
=
Math
.
sqrt
(
x
*
x
+
y
*
y
);
self
.
isMultiTouch
=
true
;
}
else
if
(
touches
.
length
=
1
)
{
self
.
dragStart
=
touches
[
0
];
}
},
false
);
self
.
viewer
.
addEventListener
(
'
touchmove
'
,
function
(
event
)
{
var
img
=
self
.
currentItem
.
querySelector
(
'
img
'
);
var
touches
=
event
.
changedTouches
;
if
(
touches
.
length
==
2
)
{
event
.
preventDefault
();
event
.
cancelBubble
=
true
;
var
p1
=
touches
[
0
];
var
p2
=
touches
[
1
];
var
x
=
p1
.
pageX
=
p2
.
pageX
;
var
y
=
p1
.
pageY
-
p2
.
pageY
;
self
.
scaleEnd
=
Math
.
sqrt
(
x
*
x
+
y
*
y
);
self
.
_scaleValue
=
(
self
.
scaleValue
*
(
self
.
scaleEnd
/
self
.
scaleStart
));
//self.state.innerText = self._scaleValue;
img
.
style
.
webkitTransform
=
"
scale(
"
+
self
.
_scaleValue
+
"
,
"
+
self
.
_scaleValue
+
"
)
"
;
// + " translate(" + self.dragX || 0 + "px," + self.dragY || 0 + "px)";
}
else
if
(
!
self
.
isMultiTouch
&&
touches
.
length
==
1
&&
self
.
scaleValue
!=
1
)
{
event
.
preventDefault
();
event
.
cancelBubble
=
true
;
self
.
dragEnd
=
touches
[
0
];
self
.
_dragX
=
self
.
dragX
+
(
self
.
dragEnd
.
pageX
-
self
.
dragStart
.
pageX
);
self
.
_dragY
=
self
.
dragY
+
(
self
.
dragEnd
.
pageY
-
self
.
dragStart
.
pageY
);
img
.
style
.
marginLeft
=
self
.
_dragX
+
'
px
'
;
img
.
style
.
marginTop
=
self
.
_dragY
+
'
px
'
;
//img.style.transform = "translate(" + self._dragX + "px," + self._dragY + "px) " + " scale(" + self.scaleValue || 1 + "," + self.scaleValue || 1 + ")";
}
},
false
);
self
.
viewer
.
addEventListener
(
'
touchend
'
,
function
()
{
self
.
scaleValue
=
self
.
_scaleValue
||
self
.
scaleValue
;
self
.
_scaleValue
=
null
;
self
.
dragX
=
self
.
_dragX
;
self
.
dragY
=
self
.
_dragY
;
self
.
_dragX
=
null
;
self
.
_dragY
=
null
;
var
touches
=
event
.
touches
;
self
.
isMultiTouch
=
(
touches
.
length
!=
0
);
});
// doubletap 好像不能用
self
.
viewer
.
addEventListener
(
'
doubletap
'
,
function
()
{
var
img
=
self
.
currentItem
.
querySelector
(
'
img
'
);
if
(
self
.
scaleValue
===
1
)
{
self
.
scaleValue
=
2
;
}
else
{
self
.
scaleValue
=
1
;
}
self
.
dragX
=
0
;
self
.
dragY
=
0
;
img
.
style
.
marginLeft
=
self
.
dragX
+
'
px
'
;
img
.
style
.
marginTop
=
self
.
dragY
+
'
px
'
;
img
.
style
.
webkitTransform
=
"
scale(
"
+
self
.
scaleValue
+
"
,
"
+
self
.
scaleValue
+
"
)
"
;
//+ " translate(" + self.dragX || 0 + "px," + self.dragY || 0 + "px)";
self
.
viewer
.
__tap_num
=
0
;
},
false
);
//处理缩放结束
},
//下一张图片
next
:
function
()
{
var
self
=
this
;
self
.
mask
.
style
.
display
=
'
block
'
;
self
.
index
++
;
var
newItem
=
self
.
createImage
(
self
.
index
,
'
right
'
);
setTimeout
(
function
()
{
self
.
currentItem
.
classList
.
remove
(
'
mui-imageviewer-item-center
'
);
self
.
currentItem
.
classList
.
add
(
'
mui-imageviewer-item-left
'
);
newItem
.
classList
.
remove
(
'
mui-imageviewer-item-right
'
);
newItem
.
classList
.
add
(
'
mui-imageviewer-item-center
'
);
self
.
oldItem
=
self
.
currentItem
;
self
.
currentItem
=
newItem
;
// TODO: 临时,稍候将调整
setTimeout
(
function
()
{
self
.
disposeImage
();
self
.
mask
.
style
.
display
=
'
none
'
;
},
600
);
},
25
);
},
//上一张图片
prev
:
function
()
{
var
self
=
this
;
self
.
mask
.
style
.
display
=
'
block
'
;
self
.
index
--
;
var
newItem
=
self
.
createImage
(
self
.
index
,
'
left
'
);
setTimeout
(
function
()
{
self
.
currentItem
.
classList
.
remove
(
'
mui-imageviewer-item-center
'
);
self
.
currentItem
.
classList
.
add
(
'
mui-imageviewer-item-right
'
);
newItem
.
classList
.
remove
(
'
mui-imageviewer-item-left
'
);
newItem
.
classList
.
add
(
'
mui-imageviewer-item-center
'
);
self
.
oldItem
=
self
.
currentItem
;
self
.
currentItem
=
newItem
;
// TODO: 临时,稍候将调整
setTimeout
(
function
()
{
self
.
disposeImage
();
self
.
mask
.
style
.
display
=
'
none
'
;
},
600
);
},
25
);
},
//释放不显示的图片
disposeImage
:
function
(
all
)
{
var
sel
=
'
.mui-imageviewer-item-left,.mui-imageviewer-item-right
'
;
if
(
all
)
sel
+=
"
,.mui-imageviewer-item
"
;
var
willdisposes
=
$
(
sel
);
willdisposes
.
each
(
function
(
i
,
item
)
{
if
(
item
.
parentNode
&&
item
.
parentNode
.
removeChild
)
item
.
parentNode
.
removeChild
(
item
,
true
);
});
},
//创建一个图片
createImage
:
function
(
index
,
type
)
{
var
self
=
this
;
type
=
type
||
'
center
'
;
if
(
index
<
0
)
index
=
self
.
images
.
length
-
1
;
if
(
index
>
self
.
images
.
length
-
1
)
index
=
0
;
self
.
index
=
index
;
var
item
=
$
.
dom
(
"
<div class='mui-imageviewer-item'></div>
"
)[
0
];
item
.
appendChild
(
$
.
dom
(
'
<span><img src="
'
+
self
.
images
[
self
.
index
].
src
+
'
"/></span>
'
)[
0
]);
item
.
classList
.
add
(
'
mui-imageviewer-item-
'
+
type
);
self
.
viewer
.
appendChild
(
item
);
self
.
state
.
innerText
=
(
self
.
index
+
1
)
+
"
/
"
+
self
.
images
.
length
;
//重置初始缩放比例
self
.
scaleValue
=
1
;
self
.
dragX
=
0
;
self
.
dragY
=
0
;
return
item
;
}
});
$
.
imageViewer
=
function
(
selector
,
options
)
{
return
new
ImageViewer
(
selector
,
options
);
};
$
.
ready
(
function
()
{
$
.
imageViewer
(
'
.
'
+
imageClassName
);
});
}(
mui
,
document
));
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment