返回列表 发新帖

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

452.3k 9
swmozowtfl 发表于 2015-7-12 16:09:11|湖北 | 查看全部 阅读模式
html带表情的评论框,表情通过json数据加载,可以根据自己的喜好改变表情。本评论框代码为html,css,jq三个方面的代码。图1为原始状态,图2为点击表情时出现的表情列表,可以任意选择一个或者多个。下面我们来看看实现的代码。# f9 X" C- O8 F
图1
& S$ p; |; X+ e7 w7 D% A' Y" h6 ~
4 [% j+ t" X5 E; \/ i% j
                               
登录/注册后可看大图

$ y2 _' y$ e( q: d; ^6 ?图2
, b# n4 |" c- s/ q7 g+ y5 P7 m

# ]; _* o: z3 \# I: q# y1 s                               
登录/注册后可看大图

/ a% {- |; {3 j/ X) K实现的代码:
) b. D& }! o7 Y5 Z7 c7 b8 X6 }html代码:
; ^0 G; v3 K$ {& k5 P2 y6 m, Z" fxml/html code复制内容到剪贴板* R/ }+ M( F+ j3 z( w# J
<div class=main>
$ a$ G. s! d# i+ X) R4 S4 ]0 P<div class=input_box> 8 T) f! Q; q: O' @) T0 ?
<textarea class=input_text></textarea>
9 x( \* z* ?& p<div class=facediv> </div> # Q9 ]6 D% c! S3 A3 c
<div class=input_foot> <a class=imgbtn href=javascript:void(0);></a><a class=postbtn>确定</a> </div> + `* F4 C6 m2 a" U+ N' ]7 Q& [
</div> 2 c2 o) B. W8 X2 ?
</div>
+ d5 g& i0 x+ kcss3代码:3 n, h" D4 v5 u
css code复制内容到剪贴板0 F3 v6 T. V4 K8 q( L
.input_box { : ~' Z8 E3 T4 ?5 ~
width: 495px; 3 s  K2 I. }$ g
height: 160px; * @2 [) G; ]" N0 F$ k& p0 g, I
border: 1px solid #ccc; $ j% ~- G# Q: b
transition: border linear .2s, box-shadow linear .5s; : S3 s2 J0 {: {8 s) q
-moz-transition: border linear .2s, -moz-box-shadow linear .5s;
$ @% S3 f0 A! e% m* z-webkit-transition: border linear .2s, -webkit-box-shadow linear .5s; / P: Y! B! {0 a  q
-moz-border-radius: 5px; ( R' H3 \; Y- E. H+ L
-webkit-border-radius: 5px; $ l( L. s9 T+ y2 \4 x
border-radius: 5px; # B/ f4 |* q+ L/ [
background-color: #fff;
/ G: t' q9 f2 \) s, T6 Aoverflow: hidden; 6 h6 r, \. Y* v  o5 B
position: absolute;
9 w: I% Y* n1 X6 Q1 Y' M! L" s' M-moz-box-shadow: 0 0 5px #ccc;
0 i8 ?9 f6 o- J  ?8 D- h-webkit-box-shadow: 0 0 5px #ccc; ! t1 d5 w. \7 G3 x
box-shadow: 0 0 5px #ccc;
6 f6 L( W- ]6 `5 E}
- M; L5 u7 B" }5 `" h* @.input_box>textarea {
$ B& z+ W9 W( ~* l, Z7 K8 ?! awidth: 485px; # L1 a. q, r6 }  D
height: 111px;
$ ?7 u# C' l. F5 M* N( c& D* x: xpadding: 5px;
/ e! v! g1 n/ r) M' y; e/ ~outline: none;
4 t0 `8 A3 _/ y2 P- h. T% F% jborder: 0px solid #fff; 4 X/ E, _3 r4 \1 m+ B' p
resize: none; ' P  s3 u, g' r- f& b$ ^$ r' X4 _
font: 13px 微软雅黑, arial, helvetica, sans-serif; ( D. k! H; Q2 K% z
-moz-border-radius: 5px;   m. o) g: w8 l6 T2 X/ W2 a4 o  z4 O
-webkit-border-radius: 5px; 3 j. y! O* |1 C
border-radius: 5px;
3 W- d) n: k" g4 D/ s) y6 {} 9 P, \% `1 H% v/ w* j
.input_foot { 9 G# n1 m5 E7 D. u; K
width: 100%;
0 l: H% Q# b+ k: Y" ]height: 35px; 5 h# ?! ?  ]2 d; r
border-top: 1px solid #ccc;
) f, x5 T7 J! _8 q! P: P) bbackground-color: #fff; 5 k/ p1 H. |) t+ h9 V% Q
-moz-border-radius: 0 0 5px 5px;
# M. l) P/ [4 S7 r. E9 _-webkit-border-radius: 0 0 5px 5px;
1 {" w# B% K; W: `" _4 p* dborder-radius: 0 0 5px 5px;
6 K# l# \" b5 U4 J, {8 m$ \  Zposition: absolute;
* @( Y! i1 B! h1 ~( _' w2 @4 x}
9 I9 F# A8 L  K& n4 C.imgbtn {
. K- A5 J, S* R7 Ffloat: left; ( N  c6 }. R- X& p- [
margin-top: 8px;
/ a- D+ n* m) J- i- s: B; E4 \margin-left: 10px;   p, y) I' r& V* v
background-image: url(imgs.png);
& b7 f$ n& o# x! pbackground-repeat: no-repeat;
8 M. f% r1 R9 L7 e' n/ @3 p5 Gbackground-position: 0 -13px; * {) N! Q6 T$ ?; @) [: a9 ~3 o
height: 18px;
& E0 R, U! ]5 Z0 t% C/ h$ Z' Ewidth: 20px;
! i+ L; V0 @" m% \/ Tcursor: pointer   e: {) a2 `/ j3 U* D( r
} / }# {6 B4 x& |6 ^
.imgbtn:active {
; I- ]" X! r) D" V% {margin-top: 9px;
3 `* O8 ?- W/ }/ l9 e} 5 B3 u4 y& L  O9 ]
.imgbtn:hover { 4 f! T. F. y3 X9 T( |7 r' q$ h
background-position: 0 -31px
( x9 r  e* i. L9 t4 ]} * n9 d" K, v4 E4 ]& N
.postbtn { % b1 L" F8 m4 x
float: rightright; $ [; \  u8 n2 s' \5 f: @" |
font: 13px 微软雅黑, arial, helvetica, sans-serif; . B% f3 H1 l# t1 ^3 ~# k" F  \
color: #808080; 6 w* @- \7 v3 _; |! x! s. N: c
padding: 9px 20px 7px 20px; - I/ E( k# ?5 @1 W
border-left: 1px solid #ccc; " G+ x7 k1 [( q+ D5 q- S
cursor: pointer;
1 \0 m! w. c1 V2 S5 H- E6 j: }0 j-moz-border-radius: 0 0 5px 0;
" p8 i7 ?2 i' J4 ?. o-webkit-border-radius: 0 0 5px 0; ) B8 V+ \7 D* o3 r- B7 G
border-radius: 0 0 5px 0;
$ g4 j3 M; b: j. R3 n" U+ I  O} + j' j$ x, q; ]4 [
.postbtn:hover {
( @+ Q  Y# V& m, `2 D% Ycolor: #333; ; Z$ ~( X1 C/ M! q( U. a3 `! o& w) M$ @  x' S
background-color: #efefef; 1 @9 r" A. Q# F( _! z
}   a. @+ H6 x# |. c% o6 B
.postbtn:active {
* R# C+ [6 v$ |" G7 mpadding: 10px 20px 6px 20px;
( n0 H2 Y/ j0 F6 r0 K( c: e' ?9 M" Y}
* Q5 L% a# h0 a! B  O.facediv { 7 ~: e" V, R1 T2 g) G. P) K2 x
width: 500px;
4 z  e; W: G2 T( xheight: 120px;
) o0 k. x- l3 ?9 v' |. ]# ]border-top: 1px solid #ccc; " F# q3 H8 E: J( p( ]# h3 ?' e3 z
position: absolute; # U' ?, y& n# F- J! w0 `
background-color: #fff;
* H" o3 [. o. [- a) H& f-moz-border-radius: 5px 5px 0 0; * B$ D8 U5 d( i: L$ M4 ^0 [8 A
-webkit-border-radius: 5px 5px 0 0; ' S8 W6 [' x! F8 P
border-radius: 5px 5px 0 0;
" T% y( Z/ Y) S5 [, F  x} ) B  q& M; s3 d4 z. A& e$ \/ S. i" H
.facediv>img {
5 w) |% v% i5 Cborder: 1px solid #ccc; 8 W7 T# \( q. G  F* q3 \/ q
float: left; . g8 ]8 _% p3 ?4 s% b6 h
margin-left: -1px; 8 c5 A. g9 a" v4 L3 J1 `
margin-top: -1px;
7 p  K# v' U, j$ t- a1 U9 ]position: relative;
) F- ?0 ]2 O. fwidth: 24px; % z3 x  N3 R. s' g7 e
height: 24px; - r2 ^" h. f0 D, ?
padding: 3px 3px 3px 3px;
$ `; f1 U; y# l% C+ F  gcursor: pointer;
# ]. z9 q3 h# S' y} 5 W7 L8 ^9 K3 |1 j
.facediv>img:hover { & u. y/ m% I+ h2 c. A
background-color: #efefef; ) Y% v& O5 F, p) p0 u, T
}
6 {5 {- x4 L4 T, H$ o: j.facediv>img:active { : z1 ^; a; X: X, [% B
padding: 4px 3px 2px 3px;
+ d/ i3 T2 ^! [& D9 [7 L% ~}
) }" C# k* V9 Cjavascript代码:
+ v5 ?. }6 z7 u0 N9 Qjavascript code复制内容到剪贴板$ a$ U; R  K- m* t
var imgiputhandler={ 1 P1 g$ }) ^4 f- o
facepath:[
: O" Z9 M; i" p{facename:微笑,facepath:0_微笑.gif},
3 t! @! y! H3 Y* C3 ?- c. `4 }{facename:撇嘴,facepath:1_撇嘴.gif}, & V" S# ^$ W8 p
{facename:色,facepath:2_色.gif},
3 ^1 N  v. k  l* [{facename:发呆,facepath:3_发呆.gif},
; H, G9 h8 U# Q2 k: e" A{facename:得意,facepath:4_得意.gif}, ' [& K% G. N& k# k7 ?3 l8 p! i0 a
{facename:流泪,facepath:5_流泪.gif}, * M/ z* J% B; t/ X( u
{facename:害羞,facepath:6_害羞.gif},
  Q9 `; ?4 G# H1 w5 q5 ?+ \' g{facename:闭嘴,facepath:7_闭嘴.gif},
  C9 k  J! V9 k0 W$ N) ^{facename:大哭,facepath:9_大哭.gif},
; a# s* |; ~! @8 p' W{facename:尴尬,facepath:10_尴尬.gif}, 6 Y2 i7 l/ [( G* s  T& z% g; }
{facename:发怒,facepath:11_发怒.gif}, 2 w0 J/ v; }' b/ l, Q
{facename:调皮,facepath:12_调皮.gif}, * [! M6 c" N) A8 d: b
{facename:龇牙,facepath:13_龇牙.gif}, 3 ^3 m" u; x+ ^* e
{facename:惊讶,facepath:14_惊讶.gif}, ' c: @- E# y5 t5 D# C
{facename:难过,facepath:15_难过.gif},
+ ?. O2 X% v- L" @/ Z( b{facename:酷,facepath:16_酷.gif},
; l# K  `+ ]1 L4 `  ?( ?. M, N& `0 m{facename:冷汗,facepath:17_冷汗.gif},
& l; d) q, b+ q+ O) G. a! w9 y, G{facename:抓狂,facepath:18_抓狂.gif}, . y* g3 z7 k1 D5 i$ d
{facename:吐,facepath:19_吐.gif},
; j+ G5 i/ f+ r2 D8 q  X7 c' `{facename:偷笑,facepath:20_偷笑.gif},
% T' s, A- H7 b  f3 B. F. s{facename:可爱,facepath:21_可爱.gif}, 5 n# y; n1 o& w
{facename:白眼,facepath:22_白眼.gif},
& d2 Q2 T' l& |  l+ I4 V: [7 E: L{facename:傲慢,facepath:23_傲慢.gif},
: Q! g3 H% N$ d5 T5 R0 d& c{facename:饥饿,facepath:24_饥饿.gif}, ) o+ A. \+ s% y2 N
{facename:困,facepath:25_困.gif},
3 g5 ?" f, g5 n9 z* h1 M{facename:惊恐,facepath:26_惊恐.gif},
0 `# B0 X) {8 Y3 E  G! \{facename:流汗,facepath:27_流汗.gif},
: [" h4 j7 i- u/ z$ ]+ ]6 H' R{facename:憨笑,facepath:28_憨笑.gif}, * h2 c+ E$ q4 n
{facename:大兵,facepath:29_大兵.gif}, 3 q1 z' z9 a% A3 G, [% }5 D- d8 g
{facename:奋斗,facepath:30_奋斗.gif}, : X, j" `" K/ ^9 N' a
{facename:咒骂,facepath:31_咒骂.gif}, & ~: i; H0 G6 U3 P! ]
{facename:疑问,facepath:32_疑问.gif}, 5 D( T! ]6 ~, `  J
{facename:嘘,facepath:33_嘘.gif}, + m& y- I: d" ~0 S% }
{facename:晕,facepath:34_晕.gif},
$ K1 O0 W' p2 D, `( {; h{facename:折磨,facepath:35_折磨.gif},
& C! L0 j+ d9 A0 F0 ?- h+ m{facename:衰,facepath:36_衰.gif},
- U7 b9 f! q+ u/ n5 Y; R{facename:骷髅,facepath:37_骷髅.gif},
9 g- H8 u* x; L2 j; X2 k& l{facename:敲打,facepath:38_敲打.gif}, & z3 b5 O* e) w. ^, y  ^5 N
{facename:再见,facepath:39_再见.gif}, 2 O. G6 `: \1 j) v. q9 Z. _) ^' l
{facename:擦汗,facepath:40_擦汗.gif},
2 }* U$ c& w6 F1 r  ^3 c& M* h
/ J( f+ Y& a4 t7 M9 }4 S' ]{facename:抠鼻,facepath:41_抠鼻.gif}, ; N' W  U9 }- Q; X. n, m# d$ q
{facename:鼓掌,facepath:42_鼓掌.gif},
5 x: s1 ~  x  o4 U{facename:糗大了,facepath:43_糗大了.gif}, , l% V  t) ]* }4 z1 ~# k4 {
{facename:坏笑,facepath:44_坏笑.gif}, 6 r) I) a! K1 i8 F& T% D/ L
{facename:左哼哼,facepath:45_左哼哼.gif}, 0 x2 _. J+ ]9 |% s7 B7 S  L. d
{facename:右哼哼,facepath:46_右哼哼.gif}, 4 s: O3 N8 X8 `; H, _7 r5 \
{facename:哈欠,facepath:47_哈欠.gif},
" ^) b# z) j3 R4 K& q{facename:鄙视,facepath:48_鄙视.gif},
! }4 c" j5 g* [9 p' d8 s, a* K# W{facename:委屈,facepath:49_委屈.gif},
4 S  u8 W- ]% D4 D+ }8 x2 F- {7 ^{facename:快哭了,facepath:50_快哭了.gif},
3 G% n9 D% C/ v* a- M" |2 _2 f{facename:阴险,facepath:51_阴险.gif}, / S7 }' x0 m& a7 Z/ C8 U
{facename:亲亲,facepath:52_亲亲.gif},
) [0 T" v4 h7 w2 U5 x{facename:吓,facepath:53_吓.gif}, " {( O( K3 ~) k3 t' D
{facename:可怜,facepath:54_可怜.gif}, 0 \; J, ]$ I$ N8 O$ Q, P0 K
{facename:菜刀,facepath:55_菜刀.gif},
* ?: `$ B5 P' b* T{facename:西瓜,facepath:56_西瓜.gif}, , n/ t9 W% s2 ]( F
{facename:啤酒,facepath:57_啤酒.gif},
. s+ U- q; A) p) s- a( z{facename:篮球,facepath:58_篮球.gif}, 6 k9 Y) z1 H" l) x
{facename:乒乓,facepath:59_乒乓.gif},
  I2 K  i; a( x+ n{facename:拥抱,facepath:78_拥抱.gif}, . q* l  P5 w- g# ?$ [8 A  y
{facename:握手,facepath:81_握手.gif}, % U, w2 v6 l; K4 @
{facename:得意地笑,facepath:得意地笑.gif}, % C5 Z. U/ b, g8 v% v
{facename:听音乐,facepath:听音乐.gif} - L# Z' m" Y9 E$ L( g
]
: |" N/ S& I6 F0 `7 I! E,
% G( |4 F. L! N7 S0 B' c8 tinit:function(){
) k" b- B. Z+ G& g$ F- y) u. @# zvar isshowimg=false;
: O$ y( n7 f: ?1 K( u+ B: r& V$(.input_text).focusout(function(){ ( c3 v6 c0 C+ v$ l
$(this).parent().css(border-color, #cccccc);
) {4 V' _% u$ U' p$(this).parent().css(box-shadow, none); 2 Y3 m% v) y/ |! Y& }9 @) `  F
$(this).parent().css(-moz-box-shadow, none);
8 z6 s0 m; w: @0 G( a' E7 n3 m; n6 ~$(this).parent().css(-webkit-box-shadow, none);
* x, _( ?" u& s2 b/ Q* d  X, r});
& i7 [6 S, {6 ^$(.input_text).focus(function(){ 6 U) C1 [/ p" D* Q# J% ^
$(this).parent().css(border-color, rgba(19,105,172,.75)); ! T; K' }) q% }% F2 t
$(this).parent().css(box-shadow, 0 0 3px rgba(19,105,192,.5)); $ U$ }3 l6 z3 D
$(this).parent().css(-moz-box-shadow, 0 0 3px rgba(241,39,232,.5)); / |2 ~" b% _" y0 _4 ?
$(this).parent().css(-webkit-box-shadow, 0 0 3px rgba(19,105,252,3));
( a* |, e+ Q1 t3 X5 `});
: S/ U4 ?1 R8 w" Y2 S. f: s$(.imgbtn).click(function(){ & ~' p" \' J2 u* E
if(isshowimg==false){ ' r: Q1 l4 k8 `
isshowimg=true; 7 \. R4 _; c) P) V) C& }  s
$(this).parent().prev().animate({margintop:-125px},300);
+ g; d/ u: s$ W7 i! cif($(.facediv).children().length==0){
6 b7 T; `+ U7 Cfor(var i=0;i<imgiputhandler.facepath.length;i ){ ' @0 u  R& ]& \, u0 f* T1 H5 i
$(.facediv).append(<img title=\ imgiputhandler.facepath.facename \ src=\face/ imgiputhandler.facepath.facepath \ />);
( E- z0 W0 f2 u% U' ~}
, ?5 `! H5 b! o4 b* D$(.facediv>img).click(function(){ : e  S# Z& v; v. B2 \/ X4 `

' _, _+ ^( f5 j" G) a/ U# v$ H3 xisshowimg=false; 6 b9 l7 W& r' S& B: ~0 _7 T
$(this).parent().animate({margintop:0px},300);
/ f; Y5 M: X/ `4 e4 E; Zimgiputhandler.insertatcursor($(.input_text)[0],[ $(this).attr(title) ]);
" T: h2 Z& |) {# ]5 U});
% F2 Z  S, c$ \' y& y, X+ L}
2 X* J. J8 D$ I  S}else{ $ e* k3 v+ V5 G
isshowimg=false;   q3 Q* X/ j: R7 s0 F
$(this).parent().prev().animate({margintop:0px},300); . `* w! d0 M- v, ?# M. h4 F$ k( F# n
}
+ I  p( O6 S: O, w* i$ [' y9 x' h4 s}); 7 g/ N) J. A7 `$ ?& u; [3 j* c1 m
$(.postbtn).click(function(){
& v: \! s1 _: ^( ^& yalert($(.input_text).val()); # r6 W, p( r1 T9 t+ r
}); + B/ Z7 O  N" Y- t* V9 W8 G; H
},
+ Z, m9 ^4 z' r9 s$ L, M8 @- a; Qinsertatcursor:function(myfield, myvalue) { 0 J! @- q$ M. D* H! i7 J4 [$ l9 U7 C
if (document.selection) { # A* A7 ~0 K3 Y% |* [( N
myfield.focus(); 5 M( i7 i2 i* F" v$ R
sel = document.selection.createrange();
  U% x; T% v6 h+ i0 o; Tsel.text = myvalue; , U# a) D; }" ?4 D4 z1 E
sel.select(); : P3 c+ _% o7 H1 C: h
} else if (myfield.selectionstart || myfield.selectionstart == 0) {
" W6 Y, Z! l* S: {* @. ]var startpos = myfield.selectionstart;
5 I/ E- ~# d4 c2 |+ n% Svar endpos = myfield.selectionend; ( Q+ k9 v/ H6 _) z
var restoretop = myfield.scrolltop;
3 r- {! w& |, D  r2 P2 Nmyfield.value = myfield.value.substring(0, startpos) myvalue myfield.value.substring(endpos, myfield.value.length);
5 ~' h$ \3 ^1 @8 W- |/ I7 Vif (restoretop > 0) { . o2 v- M% h4 _( P- {6 k: g" o. |
myfield.scrolltop = restoretop;
% H& [7 z7 i- p/ d} # l7 g, |, O, p
myfield.focus();
; G3 U9 n; ?; F  g* {2 |) Lmyfield.selectionstart = startpos myvalue.length;
' ]0 f1 g/ p) ~- @0 u8 imyfield.selectionend = startpos myvalue.length;
2 ^5 E4 }# K! M& E$ V# c} else { 7 K2 k. S% @" E8 b
myfield.value = myvalue; ; J6 T' v" ]2 x# p7 W5 Y: Y
myfield.focus();
5 J. B; g( w4 v2 L1 G" N; K4 I}
  l: S, i8 h: [# x* @! D5 b}
  d/ a8 e( K& V8 B} : x9 z& O6 v& j! x% n/ F

  R& C% C# T' r; S
; a* l$ `: f) X6 |: F( N8 n, @- A更多网页制作信息请查看: 网页制作

回复|共 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客服 返回顶部
快速回复 返回顶部 返回列表