返回列表 发新帖

利用html、css 实现带表情的评论框的制作教程

452.5k 9
swmozowtfl 发表于 2015-7-12 16:09:11|湖北 | 查看全部 阅读模式
html带表情的评论框,表情通过json数据加载,可以根据自己的喜好改变表情。本评论框代码为html,css,jq三个方面的代码。图1为原始状态,图2为点击表情时出现的表情列表,可以任意选择一个或者多个。下面我们来看看实现的代码。
5 y8 l* L) @6 |( y8 m: y# @图1  w: _) `- i- z9 f8 @, ]

/ A! W# J* J/ |/ r+ s! ~! f                               
登录/注册后可看大图

, e3 y0 k7 H$ u5 R5 \' y3 R图2
  O8 q1 _* y) I3 w
0 J9 F- D5 n7 T. ]
                               
登录/注册后可看大图

0 Q( h7 O* T! U4 f# [+ s# f/ Z实现的代码:2 h1 T7 m" {  q- p
html代码:1 Y: h; R/ W; W* T. H+ v
xml/html code复制内容到剪贴板
3 r  P. {& R7 ^, K$ ]; `% S2 o<div class=main>
8 [' x2 A( q1 C  i6 M% |<div class=input_box>
$ Q& K$ U. C' ~: H+ ~. B<textarea class=input_text></textarea>
& X  c# w2 L% s/ @$ z1 ?<div class=facediv> </div> ' k; u; a5 m1 R# f
<div class=input_foot> <a class=imgbtn href=javascript:void(0);></a><a class=postbtn>确定</a> </div> # {& K2 f4 E3 G- V8 ^
</div> 2 Q' I7 B- ?  X* r6 O
</div>
( d! g; u: n# F& h$ Ccss3代码:
& `; \3 G! @2 B% Ucss code复制内容到剪贴板
% a! E1 }3 Y& ?.input_box {
5 Q4 s: g( W" y+ h1 Fwidth: 495px; : |* }* p" q  ~0 ~( b
height: 160px;
2 N8 I" V0 E7 v/ |1 Xborder: 1px solid #ccc; " G" Z$ o" F: Q0 u3 U6 H! r
transition: border linear .2s, box-shadow linear .5s;   b* x6 c, [$ s! Z' B4 a
-moz-transition: border linear .2s, -moz-box-shadow linear .5s;
" S! V2 ?( d/ N0 u. Q-webkit-transition: border linear .2s, -webkit-box-shadow linear .5s;
+ P. N: E( x( E+ ^-moz-border-radius: 5px; 6 c1 h1 |: Y7 D& y$ P; v# x
-webkit-border-radius: 5px;
0 i* x' k8 f  [( ?) dborder-radius: 5px; ( E  b, |4 r  i
background-color: #fff;
4 Y! |2 [3 x) ]5 T& Noverflow: hidden; " d: _% G1 q7 c) C) G1 E
position: absolute;
! O3 a2 |. @1 b& G, J+ w-moz-box-shadow: 0 0 5px #ccc;
9 b+ ?  M0 Q7 `! H; ~/ `-webkit-box-shadow: 0 0 5px #ccc;
2 ]$ T9 S+ C  z0 Y; ibox-shadow: 0 0 5px #ccc;
7 x1 K3 X6 \3 W} 5 f! d( {1 o$ `. ?: l' B: p5 [
.input_box>textarea {
& [7 O& n0 N! F7 O* f  Qwidth: 485px; ; x9 H* a8 v2 {
height: 111px; 4 `7 ?+ r2 o+ p1 d# M# U
padding: 5px; 2 _7 n; E* w) _' t( y- {
outline: none; 4 w8 p' @2 V# g& |3 F
border: 0px solid #fff; 0 i9 V1 A+ K% P( S8 h
resize: none;
% r& C; Q# m' K1 w; Ffont: 13px 微软雅黑, arial, helvetica, sans-serif;
' g0 s; M+ n* B3 G/ J, w-moz-border-radius: 5px;
$ t, t0 F5 U) ~-webkit-border-radius: 5px;
7 X6 q9 @  B# }. [/ n$ D) eborder-radius: 5px; 6 W  o1 E7 C) X
} 9 m) M+ h& b, O, m, l- v9 n8 l
.input_foot {
0 l: `# L; _% U: O& w2 a9 C/ {! Ewidth: 100%; 0 q' Z& m4 @( v) y7 S+ z
height: 35px;
6 _* \" K/ j1 r  l- u$ tborder-top: 1px solid #ccc; 1 h- [4 L" H* m8 Y0 S: q+ {
background-color: #fff; ; [7 B0 |% z# p
-moz-border-radius: 0 0 5px 5px; # N5 G4 m2 X& ?, V
-webkit-border-radius: 0 0 5px 5px; ) V( e9 Y8 v7 ~0 ~7 b' C  x
border-radius: 0 0 5px 5px; 1 A& b1 k5 f, w# A
position: absolute;
! j1 u+ @2 s  w( I( j4 E2 C}
6 s# J: a0 N! g$ ]% [.imgbtn { " ]' ~( }2 S; u- \, h
float: left;
9 Q3 V) }9 ~* j( Emargin-top: 8px; 1 G, ]7 h- ]; q" |* ^
margin-left: 10px; 9 @6 G# }& h/ C
background-image: url(imgs.png); 6 h2 @/ {. @. n: F5 f
background-repeat: no-repeat;
. Z! x& Q* y  F( ?( e7 x# R- L8 J5 Bbackground-position: 0 -13px;
* i. r! I# P' i4 l% Bheight: 18px; " A% }5 ^* d" ^, ^6 [' \
width: 20px;
" X' v0 z  [7 _4 c# v/ \cursor: pointer
* J4 ]; Y. Y/ E/ L} / `+ S( z# J! H2 ~$ c+ o
.imgbtn:active {
( J9 m6 A1 |" ?$ M' umargin-top: 9px; 5 v: K# D4 M) N1 [8 o
} . N1 z" u' g- \; {
.imgbtn:hover {
5 r' e1 v8 c0 U  h  b$ V3 Xbackground-position: 0 -31px ; e$ o3 t/ _6 _  V$ k
}
  @" N+ v0 v: z/ @- D.postbtn { . r2 u1 b9 D8 r7 V' i9 q$ p
float: rightright; ( M# z' T# k( K8 M  U6 c
font: 13px 微软雅黑, arial, helvetica, sans-serif;
: j- y+ W3 o6 r: e5 Z& v( e! Lcolor: #808080;
+ j- b/ [0 V' Qpadding: 9px 20px 7px 20px; , v# |5 F6 {: |" b3 ?
border-left: 1px solid #ccc; / e" \" x( u6 _6 R& V: S
cursor: pointer;
5 g! `! ^" U4 E- ?4 O" k5 Z$ h& [-moz-border-radius: 0 0 5px 0; 9 q4 Y3 m" [0 O8 n+ N
-webkit-border-radius: 0 0 5px 0;
3 k3 O* V# s+ }# [border-radius: 0 0 5px 0; 2 A0 A5 Z- ~# P' r; w
} - Y3 z& h* q. Q3 F1 F' N
.postbtn:hover { ; v' l- I' ^0 d0 @( G: l) `( ]
color: #333; ; h* E4 `, t+ Z3 p/ h6 n
background-color: #efefef;
2 L5 ]1 i( D5 j- V+ _}
' S( I7 F8 K1 R- l9 d  |.postbtn:active {
& X$ T" l2 h6 ^% T' u) W1 vpadding: 10px 20px 6px 20px; ) O' b$ B2 n" p  q% Q# _
} " D- a" e5 u5 w3 Q9 I+ A- t( k$ m9 B5 V
.facediv {
1 e5 d& T* N. y+ @) j# Rwidth: 500px; 5 o% V  C" F* Q
height: 120px; 0 m; f* i# A$ Z0 S1 U
border-top: 1px solid #ccc; ! ]* u( O! k6 y( {4 v
position: absolute; 4 d5 j! S- N$ A  F6 Y% r, }
background-color: #fff;
" ~- G' o# [4 j' Q% p3 O-moz-border-radius: 5px 5px 0 0;   w. F6 y4 g$ ?! v' Y! P
-webkit-border-radius: 5px 5px 0 0;
. e) B5 h7 E# w) F3 \# F3 ~, z+ ^border-radius: 5px 5px 0 0;
; g# W) s2 J$ {) Q% k$ C}
, P* p' t/ J  `.facediv>img {
% @* l9 t) N! b1 c6 Y& e. cborder: 1px solid #ccc; 3 J4 k' J7 T. d5 g$ B& J" z
float: left;
( m: Y6 {. U+ e  `margin-left: -1px;
3 H& T& x9 i! m6 ]0 U8 cmargin-top: -1px; $ n7 W; W2 W% C5 n0 M& x9 t* s0 U
position: relative;
1 Y4 b5 p5 I' T( V- }/ @8 C+ owidth: 24px; : w; o3 W6 M) T
height: 24px; 8 y( r1 t3 n* ^$ J/ ]1 _+ z
padding: 3px 3px 3px 3px; + d# X) `- }. m7 l" i
cursor: pointer; . D. D$ O& S- T9 y7 b& P
} - @1 ~5 Y" V. W1 t5 T' {
.facediv>img:hover { 6 U5 l% v; l3 O3 B" D( [0 E" E
background-color: #efefef;
4 T% Y! H( q8 a- r} & I1 U0 r0 W7 k- o
.facediv>img:active {
. `; L; f! b& ~' p+ u  r5 N. ypadding: 4px 3px 2px 3px;
. k- |% A( _$ Y/ E9 G/ s! k} , s) g# S# ]+ Z/ x
javascript代码:' |3 q1 F% ]; w5 t1 \! [
javascript code复制内容到剪贴板3 ~7 w: Z/ I. x; V* W/ X8 h$ J
var imgiputhandler={
% p+ L! A2 |: ]% T; Ffacepath:[ 6 F3 j8 {/ H) u! p) |
{facename:微笑,facepath:0_微笑.gif},
5 L. E8 T! `; G1 ^% x; J{facename:撇嘴,facepath:1_撇嘴.gif},
9 P9 S( [# ^) D0 ]{facename:色,facepath:2_色.gif},
/ ^; Z& C* z% v+ o. T: @{facename:发呆,facepath:3_发呆.gif},
2 z6 Y3 P6 u% Q5 h( M: W{facename:得意,facepath:4_得意.gif},
0 i* }/ F- w; _% j1 H{facename:流泪,facepath:5_流泪.gif},
, u, T, a1 s, S* A! R; p{facename:害羞,facepath:6_害羞.gif},
1 V3 x) k0 k2 U. L{facename:闭嘴,facepath:7_闭嘴.gif},
" {4 |# U5 ~2 ?2 H* c' y{facename:大哭,facepath:9_大哭.gif}, ; x4 J# Q8 ?# g1 s8 A( c
{facename:尴尬,facepath:10_尴尬.gif}, 5 x: \" G* Y+ X2 `+ v/ Z6 V
{facename:发怒,facepath:11_发怒.gif}, 5 L1 o( T% |9 W, {  f: j
{facename:调皮,facepath:12_调皮.gif}, 1 y8 R6 Y  p7 R9 u% b1 G+ H! M7 ~
{facename:龇牙,facepath:13_龇牙.gif},
) z! k0 h2 Y0 ?! E3 S5 P{facename:惊讶,facepath:14_惊讶.gif}, 1 E" |# j8 ]3 C- z2 z' ~4 M) B
{facename:难过,facepath:15_难过.gif},
: y$ V6 g1 P8 D) {6 P5 }{facename:酷,facepath:16_酷.gif}, * }) ]! @2 l$ P" a" C3 f
{facename:冷汗,facepath:17_冷汗.gif}, , O5 _5 U- |/ S, m5 k% ~. S
{facename:抓狂,facepath:18_抓狂.gif},
* k* X* C, o9 K. U2 v{facename:吐,facepath:19_吐.gif},
( M- L$ @7 h3 h4 U" ]- `! e{facename:偷笑,facepath:20_偷笑.gif},
3 h* F9 v# P! k4 H0 m7 c: D& y& E{facename:可爱,facepath:21_可爱.gif}, ' k/ C) c% n( C6 D2 |
{facename:白眼,facepath:22_白眼.gif},
! E2 w6 x1 V$ ~  M( j) z9 a# O{facename:傲慢,facepath:23_傲慢.gif}, 7 j) _* C! r; ~/ [7 l* \
{facename:饥饿,facepath:24_饥饿.gif},
: B' ~* j6 g2 K. C6 O9 s7 S+ n8 X{facename:困,facepath:25_困.gif}, / K" s/ {% `3 J0 \. L) _2 F7 S
{facename:惊恐,facepath:26_惊恐.gif}, 9 t! w+ ~) t3 e
{facename:流汗,facepath:27_流汗.gif}, : `3 T% w# \# ?) ~2 H( @- W
{facename:憨笑,facepath:28_憨笑.gif}, $ f) N. D; _5 d1 g5 d& K) `
{facename:大兵,facepath:29_大兵.gif}, 2 i- d' X5 l6 Q( r* w. C
{facename:奋斗,facepath:30_奋斗.gif}, 1 ~% r; B. \, E6 \& a
{facename:咒骂,facepath:31_咒骂.gif},
3 {7 e7 a' x; ~- e- w2 P{facename:疑问,facepath:32_疑问.gif},
' d- |- y% A8 n( }% i" C4 _2 Z{facename:嘘,facepath:33_嘘.gif}, * w4 D  U+ x- u6 D% l/ X
{facename:晕,facepath:34_晕.gif},
; L6 ^$ k3 R3 {$ t! i5 o" I3 J{facename:折磨,facepath:35_折磨.gif},
3 L! ]6 d, J* h" |; X{facename:衰,facepath:36_衰.gif},
( E+ I  p. p. [" B{facename:骷髅,facepath:37_骷髅.gif},
' u( _! D0 p$ U, a{facename:敲打,facepath:38_敲打.gif}, 5 h' ]2 n6 ?( r6 u
{facename:再见,facepath:39_再见.gif}, 6 Z+ u7 _0 Z  @" t
{facename:擦汗,facepath:40_擦汗.gif},
# N) E  J/ P* ]$ @* w* t1 S: @$ @
{facename:抠鼻,facepath:41_抠鼻.gif}, 2 ^9 c. ^" Y& _4 Q7 j( w8 R
{facename:鼓掌,facepath:42_鼓掌.gif},
% ]! t& B: |9 H& }. d5 e6 Q{facename:糗大了,facepath:43_糗大了.gif}, 8 D. u  ~, v% ]
{facename:坏笑,facepath:44_坏笑.gif},
# N0 k3 a/ d# W/ N$ E( b3 m, o( Y{facename:左哼哼,facepath:45_左哼哼.gif},
- B# ^4 D4 o* r- y1 l. X' K9 v{facename:右哼哼,facepath:46_右哼哼.gif}, * K' G) c' w6 _  ]- J
{facename:哈欠,facepath:47_哈欠.gif}, 9 v- s% R0 N* J
{facename:鄙视,facepath:48_鄙视.gif},
7 S" F3 F# O3 P: \- s: A( D{facename:委屈,facepath:49_委屈.gif}, 9 r% s) {2 H/ t
{facename:快哭了,facepath:50_快哭了.gif},
* O0 R3 L( J/ a8 \{facename:阴险,facepath:51_阴险.gif},
* c" R/ N' B: @# C# X{facename:亲亲,facepath:52_亲亲.gif}, 0 L3 j9 t7 {" T0 ?1 x
{facename:吓,facepath:53_吓.gif}, 0 s) E- o1 w( T0 n( T- @
{facename:可怜,facepath:54_可怜.gif}, 5 e8 |- k4 y$ F  `
{facename:菜刀,facepath:55_菜刀.gif}, " j# ~8 K; L4 N% R. ?
{facename:西瓜,facepath:56_西瓜.gif}, # O. ^: j0 y* H, g6 d9 T6 z
{facename:啤酒,facepath:57_啤酒.gif},
8 R4 `& B" {' C% G) I3 h{facename:篮球,facepath:58_篮球.gif},
) V3 |2 A6 b/ U. ~- I{facename:乒乓,facepath:59_乒乓.gif}, 2 j4 i- _9 w  ^. Y
{facename:拥抱,facepath:78_拥抱.gif}, . X6 P; x4 _; L' y7 g) b+ N- \
{facename:握手,facepath:81_握手.gif}, 9 W9 O+ y' T9 j: V0 e% |
{facename:得意地笑,facepath:得意地笑.gif},
* o# y" @1 K7 V3 C( `( R$ B{facename:听音乐,facepath:听音乐.gif}
8 r. U; F* Z- ^/ I' Y# Z8 l2 f# [] ) E. E  @/ I' ^
, $ J2 b: J0 E. V
init:function(){
2 @  d9 a. ]1 Y1 \5 nvar isshowimg=false;
) I. K" j7 t- Q/ e/ j$(.input_text).focusout(function(){ 5 |  a8 E  L$ Y- ~% l  L
$(this).parent().css(border-color, #cccccc); 7 |% K/ b$ s" L
$(this).parent().css(box-shadow, none);
" h6 N0 t6 D; e, Q$ I8 D; u$(this).parent().css(-moz-box-shadow, none); % Q( y: S8 s/ a1 R) c2 ^2 _
$(this).parent().css(-webkit-box-shadow, none);
5 N4 e5 n2 B1 S1 G0 I0 X4 k6 ^});
6 b+ p+ \; J/ J& c5 l! m3 F$(.input_text).focus(function(){
3 `) F$ G0 Q) w5 i; s' _, m$(this).parent().css(border-color, rgba(19,105,172,.75)); 1 `. f* W8 K. \
$(this).parent().css(box-shadow, 0 0 3px rgba(19,105,192,.5)); ) L6 v  G& _; t3 {
$(this).parent().css(-moz-box-shadow, 0 0 3px rgba(241,39,232,.5)); $ a, P" \" \8 w
$(this).parent().css(-webkit-box-shadow, 0 0 3px rgba(19,105,252,3)); 4 I) a  {7 [1 A4 v' b/ H
});
' B' }$ L9 k! t: o& C8 O) c$(.imgbtn).click(function(){ , R9 x. E9 k4 E
if(isshowimg==false){ 5 C: n1 Z0 M% r% b
isshowimg=true; : U, G6 m% n& R5 R+ V
$(this).parent().prev().animate({margintop:-125px},300);
  y: [0 K# V$ w  Iif($(.facediv).children().length==0){
( w* K: `  R5 qfor(var i=0;i<imgiputhandler.facepath.length;i ){ 5 I* Q. b3 x; V* h
$(.facediv).append(<img title=\ imgiputhandler.facepath.facename \ src=\face/ imgiputhandler.facepath.facepath \ />); % f2 H6 A) O) S- j/ C: t+ _
} 9 v4 Q2 y7 ]1 B) {* P$ L
$(.facediv>img).click(function(){ 6 V8 O/ G0 I# _3 v; A

: R3 p* W5 J- |$ ?$ P( \8 Lisshowimg=false;
: p6 L" i0 |( d' d% E6 \: |9 F$(this).parent().animate({margintop:0px},300);
; ?) q4 e* B8 J; t/ q7 ]% i( x9 b& ?8 ximgiputhandler.insertatcursor($(.input_text)[0],[ $(this).attr(title) ]); 5 B; q" u/ j' u8 i& c, z2 \& i
});
8 ~' p( U/ E! K9 c( f: a}
" d+ Z/ J8 o: w% E9 ~: @+ B7 r, L8 [}else{ # o4 K2 [, |  ~' k4 P8 S
isshowimg=false;
6 j3 a6 j$ }4 J$(this).parent().prev().animate({margintop:0px},300); 2 s& o1 u  Y' t
}
% A/ n7 `5 P% H. k: K9 S, d}); 4 ]# i* G' Q- O+ k  c0 a
$(.postbtn).click(function(){
7 `( ^/ s6 I/ S8 N+ Talert($(.input_text).val());
6 y' M, Q& W3 Q/ ]" e( T* T});
' J9 f8 I4 s; P, m/ ^7 E; t},
& f5 t, [3 C* v7 F: E) V7 oinsertatcursor:function(myfield, myvalue) {   U/ k9 U2 d4 F: X/ O2 ^
if (document.selection) {
! s6 @$ H# T. ~1 H- f5 Bmyfield.focus();
# u9 }* v& E# U4 U5 psel = document.selection.createrange(); # N) @2 h0 U# @  ^
sel.text = myvalue; % Q' [2 \: R. {% E! u+ g
sel.select(); ) J3 {5 L* s) ~- \2 D! U, H# ]& Q8 P: G
} else if (myfield.selectionstart || myfield.selectionstart == 0) { . T" w: @. C; i
var startpos = myfield.selectionstart; 8 U( n! G+ `5 V7 h! [! X
var endpos = myfield.selectionend;
. r* O& {% k! |* f% Q2 Q* S5 V- C, vvar restoretop = myfield.scrolltop; : f0 M$ [) I8 q! n7 B4 e: ?$ Q  e
myfield.value = myfield.value.substring(0, startpos) myvalue myfield.value.substring(endpos, myfield.value.length); ! Q% H' I7 L8 i' C* X1 I
if (restoretop > 0) { " K  O& l( }& R( e" w- t; F
myfield.scrolltop = restoretop;
, m1 x  A* f$ q/ Z! P9 M} ! x# X4 @/ W5 O) w' o* C& [; b
myfield.focus(); ! }0 i+ ]) j' V; c) N
myfield.selectionstart = startpos myvalue.length; , S8 \- J: X% Q# [1 y# S6 d  `
myfield.selectionend = startpos myvalue.length;
# e% c; t0 W8 s8 X$ f/ w: p} else { ' \5 E2 t! w& H9 T. N6 c
myfield.value = myvalue;
0 `' O. a+ J! M+ ymyfield.focus(); : f  c( E% m0 l9 m( V7 n7 Y: b
}
$ g  ?! I/ B- E; C}
& N) @5 m0 Z7 h1 M} ! |0 J; T# r( s( m

2 I; k! w, a7 x6 N2 W4 w
+ K2 w* O% y$ M- k更多网页制作信息请查看: 网页制作

回复|共 9 个

alapScady 发表于 2015-9-24 10:20:58|美国 | 查看全部
阿额~~~这些人都疯特勒~~~~~
buingeEvineus 发表于 2015-9-24 10:21:08|韩国 | 查看全部
真是有你的!
effoggikeftor 发表于 2015-9-24 10:21:16|西班牙 | 查看全部
先踹你一脚再说~~~~~~
GoodyFouppy 发表于 2015-9-24 10:21:24|美国 | 查看全部
我去看看 网络上的事 我不是很会 哎
seazvyt 发表于 2015-9-27 19:05:32|哥伦比亚 | 查看全部
那个家 让它沉下去吧! 不要啦
tohme 发表于 2015-9-27 19:05:49|Reserved | 查看全部
命不能争,运可以造,弱者认命,强者抗命,能者求命,智者造命。
buingeEvineus 发表于 2015-9-27 19:06:10|江苏 | 查看全部
呵呵 放心 如我算错 你以后来砸我的帖子 呵呵
buingeEvineus 发表于 2015-9-27 19:06:19|北京 | 查看全部
我想骂我自己
tohme 发表于 2015-9-27 19:06:45|美国 | 查看全部
我不是来为楼主呐喊加油的,也不是对楼主进行围堵攻击的。

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 得知互动-专注Ai与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表