Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kityminder-core
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
吴志俊
kityminder-core
Commits
8ded3fe6
Commit
8ded3fe6
authored
Jul 08, 2014
by
campaign
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release-1.2.0' of
https://github.com/fex-team/kityminder
into release-1.2.0
parents
7dc99d33
d81b8019
Changes
15
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
122 additions
and
374 deletions
+122
-374
index.html
index.html
+7
-0
mobile.html
mobile.html
+0
-61
social.css
social/social.css
+25
-242
social.js
social/social.js
+4
-0
social.less
social/social.less
+2
-2
contextmenu.js
src/adapter/contextmenu.js
+5
-1
editor.receiver.js
src/module/editor.receiver.js
+1
-1
expand.js
src/module/expand.js
+4
-0
view.js
src/module/view.js
+15
-9
zoom.js
src/module/zoom.js
+28
-24
png.js
src/protocal/png.js
+12
-15
svg.js
src/protocal/svg.js
+5
-10
default.js
src/theme/default.js
+1
-1
snow.js
src/theme/snow.js
+1
-1
kityminder.css
themes/default/css/kityminder.css
+12
-7
No files found.
index.html
View file @
8ded3fe6
...
...
@@ -5,6 +5,7 @@
<meta
name=
"title"
content=
"百度脑图(KityMinder)"
>
<meta
name=
"keyword"
content=
"kityminder,脑图,思维导图,kity,svg,minder,百度,fex,前端,在线"
>
<meta
name=
"description"
content=
"百度脑图,便捷的脑图编辑工具。让您在线上直接创建、保存并分享你的思路。"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1, user-scalable=no"
>
<script
src=
"lib/jquery-2.1.0.min.js"
charset=
"utf-8"
></script>
<script
src=
"lib/ZeroClipboard.min.js"
charset=
"utf-8"
></script>
...
...
@@ -34,6 +35,7 @@
</head>
<body>
<div
id=
"content-wrapper"
>
<div
id=
"panel"
></div>
<div
id=
"kityminder"
onselectstart=
"return false"
></div>
...
...
@@ -94,6 +96,7 @@
target=
"_blank"
>
Contact Us
</a>
</div>
</div>
</body>
<!--脑图启动代码-->
...
...
@@ -124,6 +127,10 @@
km
.
on
(
'unknownprotocal'
,
function
(
ev
)
{
alert
(
'不支持的文件格式!'
);
});
document
.
body
.
ontouchmove
=
function
(
e
)
{
//e.preventDefault();
}
</script>
<!--社会分享代码-->
...
...
mobile.html
deleted
100644 → 0
View file @
7dc99d33
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1, user-scalable=no"
>
<script
src=
"lib/jquery-2.1.0.min.js"
charset=
"utf-8"
></script>
<script
src=
"kity/dist/kitygraph.all.js"
charset=
"utf-8"
></script>
<script
src=
"import.js"
charset=
"utf-8"
></script>
<script
src=
"kityminder.config.js"
charset=
"utf-8"
></script>
<script
src=
"lang/zh-cn/zh-cn.js"
charset=
"utf-8"
></script>
<script
src=
"lib/zip.js"
charset=
"utf-8"
></script>
<script>
zip
.
inflateJSPath
=
'lib/inflate.js'
;
</script>
<script
src=
"lib/jquery.xml2json.js"
charset=
"utf-8"
></script>
<script
src=
"lib/baidu-frontia-js-full-1.0.0.js"
charset=
"utf-8"
></script>
<script
src=
"social/social.js"
charset=
"utf-8"
></script>
<link
href=
"social/social.css"
rel=
"stylesheet"
>
<link
href=
"themes/default/css/import.css"
type=
"text/css"
rel=
"stylesheet"
/>
<link
href=
"favicon.ico"
type=
"image/x-icon"
rel=
"shortcut icon"
>
<link
href=
"favicon.ico"
type=
"image/x-icon"
rel=
"apple-touch-icon-precomposed"
>
<style>
.kmui-toolbar
,
#social
button
#save-btn
,
#draft-btn
,
.user-file-menu
li
:first-child
{
display
:
none
;
}
</style>
</head>
<body>
<div
id=
"kityminder"
onselectstart=
"return false"
></div>
<div
id=
"share-dialog"
>
<h3>
URL分享:
</h3>
<p>
<input
id=
"share-url"
type=
"url"
value=
"http://naotu.baidu.com/?shareId=kcev3dd"
/>
<button
id=
"copy-share-url"
data-clipboard-target=
"share-url"
type=
"button"
>
复制
</button>
</p>
<h3>
社交分享:
</h3>
<p
id=
"share-platform"
class=
"bdsharebuttonbox"
>
<a
href=
"#"
class=
"bds_tsina"
data-cmd=
"tsina"
title=
"分享到新浪微博"
></a>
<a
href=
"#"
class=
"bds_qzone"
data-cmd=
"qzone"
title=
"分享到QQ空间"
></a>
<a
href=
"#"
class=
"bds_tqq"
data-cmd=
"tqq"
title=
"分享到腾讯微博"
></a>
<a
href=
"#"
class=
"bds_renren"
data-cmd=
"renren"
title=
"分享到人人网"
></a>
<a
href=
"#"
class=
"bds_weixin"
data-cmd=
"weixin"
title=
"分享到微信"
></a>
</p>
</div>
<script>
window
.
_bd_share_config
=
{
"common"
:{
"bdSnsKey"
:{},
"bdMini"
:
"2"
,
"bdMiniList"
:[],
"bdPic"
:
""
,
"bdStyle"
:
"1"
,
"bdSize"
:
"32"
},
"share"
:{}};
with
(
document
)
0
[(
getElementsByTagName
(
'head'
)[
0
]
||
body
).
appendChild
(
createElement
(
'script'
)).
src
=
'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='
+~
(
-
new
Date
()
/
36
e5
)];
</script>
</body>
<script>
// create km instance
window
.
km
=
KM
.
getKityMinder
(
'kityminder'
);
//km.setDisabled();
km
.
execCommand
(
'hand'
);
</script>
</html>
\ No newline at end of file
social/social.css
View file @
8ded3fe6
This diff is collapsed.
Click to expand it.
social/social.js
View file @
8ded3fe6
...
...
@@ -249,6 +249,10 @@ $(function() {
e
.
stopPropagation
();
});
$
(
'body'
).
delegate
(
'#global-zeroclipboard-html-bridge'
,
'mousedown'
,
function
(
e
)
{
e
.
stopPropagation
();
});
var
copyTrickTimer
=
0
;
$
(
'body'
).
on
(
'mousedown'
,
function
(
e
)
{
copyTrickTimer
=
setTimeout
(
function
()
{
...
...
social/social.less
View file @
8ded3fe6
...
...
@@ -183,7 +183,7 @@ button {
}
input {
width: 2
60
px;
width: 2
55
px;
height: 22px;
line-height: 22px;
padding: 4px 4px 0;
...
...
@@ -204,7 +204,7 @@ button {
#copy-share-url {
display: inline-block;
margin: 0;
width: 7
0
px;
width: 7
5
px;
height: 28px;
line-height: 28px;
vertical-align: middle;
...
...
src/adapter/contextmenu.js
View file @
8ded3fe6
...
...
@@ -62,9 +62,13 @@ KM.registerUI( 'contextmenu', function () {
if
(
item
.
divider
){
data
.
pop
();
}
var
pos
=
e
.
getPosition
(
'screen'
);
var
offset
=
$
(
me
.
getPaper
().
container
).
offset
();
pos
.
y
-=
offset
.
top
;
pos
.
x
-=
offset
.
left
;
$menu
.
kmui
().
setData
({
data
:
data
}).
position
(
e
.
getPosition
()
).
show
();
}).
position
(
pos
).
show
();
}
});
...
...
src/module/editor.receiver.js
View file @
8ded3fe6
...
...
@@ -145,7 +145,7 @@ Minder.Receiver = kity.createClass('Receiver', {
me
.
minderNode
.
getRenderContainer
().
bringTop
();
me
.
minderNode
.
render
();
//移动光标不做layout
if
(
!
keymap
.
direction
[
keyCode
]
&&
!
orgEvt
.
shiftKey
&&
!
orgEvt
.
metaKey
&&
orgEvt
.
ctrlKey
){
if
(
!
keymap
.
direction
[
keyCode
]
&&
!
orgEvt
.
shiftKey
&&
!
orgEvt
.
metaKey
&&
!
orgEvt
.
ctrlKey
){
clearTimeout
(
me
.
inputTextTimer
);
me
.
inputTextTimer
=
setTimeout
(
function
(){
...
...
src/module/expand.js
View file @
8ded3fe6
...
...
@@ -163,6 +163,10 @@ KityMinder.registerModule('Expand', function() {
e
.
stopPropagation
();
e
.
preventDefault
();
});
this
.
on
(
'dblclick click mouseup'
,
function
(
e
)
{
e
.
stopPropagation
();
e
.
preventDefault
();
});
},
setState
:
function
(
state
)
{
...
...
src/module/view.js
View file @
8ded3fe6
...
...
@@ -28,8 +28,11 @@ var ViewDragger = kity.createClass("ViewDragger", {
lastPosition
=
null
,
currentPosition
=
null
;
this
.
_minder
.
on
(
'normal.mousedown readonly.mousedown readonly.touchstart'
,
function
(
e
)
{
this
.
_minder
.
on
(
'normal.mousedown normal.touchstart readonly.mousedown readonly.touchstart'
,
function
(
e
)
{
if
(
e
.
originEvent
.
button
==
2
)
{
e
.
originEvent
.
preventDefault
();
// 阻止中键拉动
}
// 点击未选中的根节点临时开启
if
(
e
.
getTargetNode
()
==
this
.
getRoot
()
||
e
.
originEvent
.
button
==
2
)
{
lastPosition
=
e
.
getPosition
();
...
...
@@ -37,18 +40,19 @@ var ViewDragger = kity.createClass("ViewDragger", {
}
})
.
on
(
'normal.mousemove normal.touchmove'
,
function
(
e
)
{
.
on
(
'normal.mousemove normal.touchmove
readonly.touchmove readonly.mousemove
'
,
function
(
e
)
{
if
(
!
isTempDrag
)
return
;
var
offset
=
kity
.
Vector
.
fromPoints
(
lastPosition
,
e
.
getPosition
());
if
(
offset
.
length
()
>
3
)
this
.
setStatus
(
'hand'
);
})
.
on
(
'hand.beforemousedown hand.beforetouch
end
'
,
function
(
e
)
{
.
on
(
'hand.beforemousedown hand.beforetouch
start
'
,
function
(
e
)
{
// 已经被用户打开拖放模式
if
(
dragger
.
isEnabled
())
{
lastPosition
=
e
.
getPosition
();
e
.
stopPropagation
();
}
console
.
log
(
'touchstart'
);
})
.
on
(
'hand.beforemousemove hand.beforetouchmove'
,
function
(
e
)
{
...
...
@@ -65,7 +69,7 @@ var ViewDragger = kity.createClass("ViewDragger", {
}
})
.
on
(
'mouseup'
,
function
(
e
)
{
.
on
(
'mouseup
touchend
'
,
function
(
e
)
{
lastPosition
=
null
;
// 临时拖动需要还原状态
...
...
@@ -86,8 +90,7 @@ KityMinder.registerModule('View', function() {
base
:
Command
,
execute
:
function
(
minder
)
{
minder
.
_viewDragger
.
setEnabled
(
!
minder
.
_viewDragger
.
isEnabled
());
if
(
minder
.
_viewDragger
.
isEnabled
())
{
if
(
minder
.
getStatus
()
!=
'hand'
)
{
minder
.
setStatus
(
'hand'
);
}
else
{
minder
.
rollbackStatus
();
...
...
@@ -96,7 +99,7 @@ KityMinder.registerModule('View', function() {
},
queryState
:
function
(
minder
)
{
return
minder
.
_viewDragger
.
isEnabled
()
?
1
:
0
;
return
minder
.
getStatus
()
==
'hand'
?
1
:
0
;
},
enableReadOnly
:
false
});
...
...
@@ -156,7 +159,10 @@ KityMinder.registerModule('View', function() {
e
.
preventDefault
();
}
},
mousewheel
:
function
(
e
)
{
statuschange
:
function
(
e
)
{
this
.
_viewDragger
.
setEnabled
(
e
.
currentStatus
==
'hand'
);
},
mousewheel
:
function
(
e
)
{
var
dx
,
dy
;
e
=
e
.
originEvent
;
if
(
e
.
ctrlKey
||
e
.
shiftKey
)
return
;
...
...
src/module/zoom.js
View file @
8ded3fe6
...
...
@@ -5,39 +5,46 @@ KityMinder.registerModule('Zoom', function() {
me
.
setDefaultOptions
(
'zoom'
,
[
50
,
80
,
100
,
120
,
150
,
200
]);
function
fixPaperCTM
()
{
var
paper
=
me
.
getPaper
();
function
fixPaperCTM
(
paper
)
{
var
node
=
paper
.
shapeNode
;
var
ctm
=
node
.
getCTM
();
var
matrix
=
new
kity
.
Matrix
(
ctm
.
a
,
ctm
.
b
,
ctm
.
c
,
ctm
.
d
,
(
ctm
.
e
|
0
)
+
0.5
,
(
ctm
.
f
|
0
)
+
0.5
);
node
.
setAttribute
(
'transform'
,
'matrix('
+
matrix
.
toString
()
+
')'
);
}
function
zoomMinder
(
minder
,
zoom
)
{
kity
.
extendClass
(
Minder
,
{
zoom
:
function
(
value
)
{
var
paper
=
this
.
getPaper
();
var
viewport
=
paper
.
getViewPort
();
viewport
.
zoom
=
value
/
100
;
viewport
.
center
=
{
x
:
viewport
.
center
.
x
,
y
:
viewport
.
center
.
y
};
paper
.
setViewPort
(
viewport
);
fixPaperCTM
(
paper
);
}
});
function
zoomMinder
(
minder
,
value
)
{
var
paper
=
minder
.
getPaper
();
var
viewport
=
paper
.
getViewPort
();
if
(
!
zoom
)
return
;
if
(
!
value
)
return
;
var
animator
=
new
kity
.
Animator
({
beginValue
:
viewport
.
zoom
,
finishValue
:
zoom
/
100
,
beginValue
:
minder
.
_zoomValue
,
finishValue
:
value
,
setter
:
function
(
target
,
value
)
{
viewport
.
zoom
=
value
;
viewport
.
center
=
{
x
:
viewport
.
center
.
x
,
y
:
viewport
.
center
.
y
};
target
.
setViewPort
(
viewport
);
fixPaperCTM
();
target
.
zoom
(
value
);
}
});
minder
.
zoom
=
zoom
;
minder
.
_zoomValue
=
value
;
if
(
timeline
)
{
timeline
.
pause
();
}
timeline
=
animator
.
start
(
paper
,
5
00
,
'ease'
,
function
()
{
minder
.
refresh
(
5
00
);
timeline
=
animator
.
start
(
minder
,
1
00
,
'ease'
,
function
()
{
minder
.
refresh
(
1
00
);
});
}
...
...
@@ -45,7 +52,7 @@ KityMinder.registerModule('Zoom', function() {
base
:
Command
,
execute
:
zoomMinder
,
queryValue
:
function
(
minder
)
{
return
minder
.
zoom
;
return
minder
.
_zoomValue
;
}
});
...
...
@@ -61,7 +68,7 @@ KityMinder.registerModule('Zoom', function() {
var
stack
=
minder
.
getOptions
(
'zoom'
),
i
;
for
(
i
=
0
;
i
<
stack
.
length
;
i
++
)
{
if
(
stack
[
i
]
>
minder
.
zoom
)
return
stack
[
i
];
if
(
stack
[
i
]
>
minder
.
_zoomValue
)
return
stack
[
i
];
}
return
0
;
},
...
...
@@ -80,7 +87,7 @@ KityMinder.registerModule('Zoom', function() {
var
stack
=
minder
.
getOptions
(
'zoom'
),
i
;
for
(
i
=
stack
.
length
-
1
;
i
>=
0
;
i
--
)
{
if
(
stack
[
i
]
<
minder
.
zoom
)
return
stack
[
i
];
if
(
stack
[
i
]
<
minder
.
_zoomValue
)
return
stack
[
i
];
}
return
0
;
},
...
...
@@ -89,7 +96,7 @@ KityMinder.registerModule('Zoom', function() {
return
{
init
:
function
()
{
this
.
zoom
=
100
;
this
.
_zoomValue
=
100
;
},
commands
:
{
'zoom-in'
:
ZoomInCommand
,
...
...
@@ -113,9 +120,6 @@ KityMinder.registerModule('Zoom', function() {
}
},
'ready'
:
function
()
{
this
.
_zoomValue
=
1
;
},
'normal.mousewheel readonly.mousewheel'
:
function
(
e
)
{
if
(
!
e
.
originEvent
.
ctrlKey
)
return
;
var
delta
=
e
.
originEvent
.
wheelDelta
;
...
...
src/protocal/png.js
View file @
8ded3fe6
...
...
@@ -10,14 +10,11 @@ if (!kity.Browser.ie) {
fileDescription
:
'PNG 图片'
,
fileExtension
:
'.png'
,
encode
:
function
(
json
,
km
)
{
var
paper
=
km
.
getPaper
();
var
viewport
=
paper
.
getViewPort
();
var
originZoom
=
viewport
.
zoom
;
var
originZoom
=
km
.
_zoomValue
;
viewport
.
zoom
=
1
;
paper
.
setViewPort
(
viewport
);
var
domContainer
=
km
.
getPaper
().
container
,
var
paper
=
km
.
getPaper
(),
paperTransform
=
paper
.
shapeNode
.
getAttribute
(
'transform'
),
domContainer
=
paper
.
container
,
svgXml
,
$svg
,
...
...
@@ -27,27 +24,27 @@ if (!kity.Browser.ie) {
renderContainer
=
km
.
getRenderContainer
(),
renderBox
=
renderContainer
.
getRenderBox
(),
transform
=
renderContainer
.
getTransform
(),
width
=
renderBox
.
width
,
height
=
renderBox
.
height
,
width
=
renderBox
.
width
+
1
,
height
=
renderBox
.
height
+
1
,
padding
=
20
,
canvas
=
document
.
createElement
(
'canvas'
),
ctx
=
canvas
.
getContext
(
'2d'
),
blob
,
DomURL
,
url
,
img
,
finishCallback
;
paper
.
shapeNode
.
setAttribute
(
'transform'
,
'translate(0.5, 0.5)'
);
renderContainer
.
translate
(
-
renderBox
.
x
,
-
renderBox
.
y
);
svgXml
=
km
.
getPaper
()
.
container
.
innerHTML
;
svgXml
=
paper
.
container
.
innerHTML
;
renderContainer
.
translate
(
renderBox
.
x
,
renderBox
.
y
);
viewport
.
zoom
=
originZoom
;
paper
.
s
etViewPort
(
viewport
);
paper
.
s
hapeNode
.
setAttribute
(
'transform'
,
paperTransform
);
$svg
=
$
(
svgXml
).
filter
(
'svg'
);
$svg
.
attr
({
width
:
renderBox
.
width
,
height
:
renderBox
.
height
,
width
:
renderBox
.
width
+
1
,
height
:
renderBox
.
height
+
1
,
style
:
'font-family: Arial, "Microsoft Yahei","Heiti SC";'
});
...
...
src/protocal/svg.js
View file @
8ded3fe6
...
...
@@ -6,14 +6,9 @@ if (!kity.Browser.ie) {
fileExtension
:
'.svg'
,
mineType
:
'image/svg+xml'
,
encode
:
function
(
json
,
km
)
{
var
paper
=
km
.
getPaper
();
var
viewport
=
paper
.
getViewPort
();
var
originZoom
=
viewport
.
zoom
;
viewport
.
zoom
=
1
;
paper
.
setViewPort
(
viewport
);
var
domContainer
=
km
.
getPaper
().
container
,
var
paper
=
km
.
getPaper
(),
paperTransform
=
paper
.
shapeNode
.
getAttribute
(
'transform'
),
svgXml
,
$svg
,
...
...
@@ -24,13 +19,15 @@ if (!kity.Browser.ie) {
height
=
renderBox
.
height
,
padding
=
20
;
paper
.
shapeNode
.
setAttribute
(
'transform'
,
'translate(0.5, 0.5)'
);
svgXml
=
km
.
getPaper
().
container
.
innerHTML
;
paper
.
shapeNode
.
setAttribute
(
'transform'
,
paperTransform
);
$svg
=
$
(
svgXml
).
filter
(
'svg'
);
$svg
.
attr
({
width
:
width
+
padding
*
2
|
0
,
height
:
height
+
padding
*
2
|
0
,
style
:
'font-family: Arial, "Microsoft Yahei", "Heiti SC";
'
style
:
'font-family: Arial, "Microsoft Yahei", "Heiti SC";
background: '
+
km
.
getStyle
(
'background'
)
});
$svg
[
0
].
setAttribute
(
'viewBox'
,
[
renderBox
.
x
-
padding
|
0
,
renderBox
.
y
-
padding
|
0
,
...
...
@@ -42,8 +39,6 @@ if (!kity.Browser.ie) {
svgXml
=
$
(
'<div></div>'
).
append
(
$svg
).
html
();
svgXml
=
$
(
'<div></div>'
).
append
(
$svg
).
html
();
viewport
.
zoom
=
originZoom
;
paper
.
setViewPort
(
viewport
);
// svg 含有 符号导出报错 Entity 'nbsp' not defined
svgXml
=
svgXml
.
replace
(
/ /g
,
' '
);
...
...
src/theme/default.js
View file @
8ded3fe6
KityMinder
.
registerTheme
(
'classic'
,
{
'background'
:
'url(themes/default/images/grid.png) repeat'
,
'background'
:
'
#3A4144
url(themes/default/images/grid.png) repeat'
,
'root-color'
:
'#430'
,
'root-background'
:
'#e9df98'
,
...
...
src/theme/snow.js
View file @
8ded3fe6
KityMinder
.
registerTheme
(
'snow'
,
{
'background'
:
'url(themes/default/images/grid.png) repeat'
,
'background'
:
'
#3A4144
url(themes/default/images/grid.png) repeat'
,
'root-color'
:
'#430'
,
'root-background'
:
'#e9df98'
,
...
...
themes/default/css/kityminder.css
View file @
8ded3fe6
...
...
@@ -2,13 +2,21 @@
html
,
body
,
div
{
margin
:
0
;
padding
:
0
;
/* background: #FFFFFF; */
margin-top
:
0
!important
;
}
html
,
body
,
#kityminder
,
div
.kmui-editor-body
{
overflow
:
hidden
;
-moz-user-select
:
none
;
width
:
100%
;
}
#content-wrapper
{
overflow
:
hidden
;
position
:
fixed
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
}
#title
,
#panel
{
background
:
hsl
(
224
,
16%
,
27%
);
font-family
:
'Hiragino Sans GB'
,
'Arial'
,
'Microsoft Yahei'
;
...
...
@@ -61,7 +69,6 @@ html, body, #kityminder, div.kmui-editor-body {
#menu
{
float
:
left
;
flo
}
#panel
button
:hover
,
#panel
button
.active
{
...
...
@@ -258,7 +265,7 @@ svg, body {
font-family
:
Arial
,
"Microsoft Yahei"
,
"Heiti SC"
,
sans-serif
;
}
#about
{
position
:
absolute
;
position
:
absolute
;
bottom
:
0
;
right
:
0
;
height
:
40px
;
...
...
@@ -266,14 +273,12 @@ svg, body {
background
:
#5d697a
;
color
:
#eee
;
font-family
:
Arial
;
font-size
:
13px
;
font-size
:
13px
;
font-weight
:
normal
;
margin
:
0
;
text-align
:
right
;
padding
:
0
15px
0
60px
;
border-bottom
:
5px
solid
#393F4F
;
-webkit-font-smoothing
:
antialiased
;
position
:
absolute
;
transition
:
all
ease
.3s
0.3s
;
...
...
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