返回列表 发新帖

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

452.5k 9
swmozowtfl 发表于 2015-7-12 16:09:11|湖北 | 查看全部 阅读模式
html带表情的评论框,表情通过json数据加载,可以根据自己的喜好改变表情。本评论框代码为html,css,jq三个方面的代码。图1为原始状态,图2为点击表情时出现的表情列表,可以任意选择一个或者多个。下面我们来看看实现的代码。) X5 I3 a5 w+ l, K4 u
图1! I; A' e% y, x% d5 A& s* j' R

0 i# ~% n3 K) }4 Y                               
登录/注册后可看大图
3 \+ u- i6 V% m/ C, G9 r9 |1 y
图23 c0 U0 Z0 v/ s( v; Q% n" w1 G

9 ?4 h! L+ N& C+ L: C1 ?                               
登录/注册后可看大图
' }3 X0 }" J# G# g
实现的代码:
  U5 n, ~; t8 R, chtml代码:
/ X$ V- W3 D1 M' N, [  I; Z: `xml/html code复制内容到剪贴板5 n' ~2 O9 H* e1 M% w4 F+ n
<div class=main> - D  S" G) M, r* K6 {+ ^
<div class=input_box> ) q% P5 r$ y: c' a& @0 z
<textarea class=input_text></textarea> * j% o) U3 `4 Q$ N" w
<div class=facediv> </div>
$ [1 `- W: y5 O! w9 B. }  p<div class=input_foot> <a class=imgbtn href=javascript:void(0);></a><a class=postbtn>确定</a> </div>
/ Q$ F1 Q8 {' q  ~+ B# ^, Q</div> 9 q: U5 V0 B+ \# \! _) E) W+ G2 T; ~
</div> ( w3 O+ \1 v1 X7 D& p1 W0 b
css3代码:
; s7 d+ G' G* G4 ^/ E& Xcss code复制内容到剪贴板
% c1 \+ D9 s, n! R, j  W8 Y.input_box {
7 D6 W4 T; d7 N+ I6 Y2 gwidth: 495px;
0 U3 p5 p/ q' {height: 160px;
* ~' G7 L1 i' Q  J, kborder: 1px solid #ccc;
  {; K/ C3 T& F3 B8 j/ {transition: border linear .2s, box-shadow linear .5s; 2 |) `% N, F& O# V% ~6 [: S
-moz-transition: border linear .2s, -moz-box-shadow linear .5s; % x) l2 T. D$ C) J- ]
-webkit-transition: border linear .2s, -webkit-box-shadow linear .5s; & j1 R8 l6 Q! V; T: m
-moz-border-radius: 5px; . {4 \2 l: j5 `1 s8 V- n. c7 \, {
-webkit-border-radius: 5px;
8 W- o5 n9 P5 f" ?3 \* J) [border-radius: 5px; ; ?% [( x0 W+ k' ]. s
background-color: #fff; ' O0 p0 `% s6 ~# E2 {
overflow: hidden; / p+ `! p1 }' y. I
position: absolute;
8 ]$ R* \! d. s% I9 f. T1 ?: _" }-moz-box-shadow: 0 0 5px #ccc;
0 _$ ?- _8 ~2 v% P-webkit-box-shadow: 0 0 5px #ccc;
% y6 K. J- z8 a* p- U4 }  c" f) R* X8 W0 U' \box-shadow: 0 0 5px #ccc;
; {' h8 c: C* B5 T; t3 L3 s+ b} 9 S  F! Z8 Z  R2 z. H+ x, H9 i
.input_box>textarea {
* a$ A4 g# Y6 c/ e1 A5 h8 M. }! i; Wwidth: 485px; + k, Y3 i" t: Y2 u5 Z
height: 111px;
- e- f$ D  y/ C7 f  a5 m7 O9 Npadding: 5px;
1 i' w+ a% h( R6 Joutline: none; 7 ?" _+ ?3 A' C( y
border: 0px solid #fff;
) ~- p; a8 _  a* G- T$ t! d" ?resize: none; / m$ w/ ~. ]4 i/ Z1 R- |! @( l
font: 13px 微软雅黑, arial, helvetica, sans-serif; & `2 f# B& R, z. K
-moz-border-radius: 5px;
2 u/ g" D& R  x3 U-webkit-border-radius: 5px; ( x  P  s! ^- F/ J: w2 n4 C( |
border-radius: 5px;
9 a3 ]8 K/ J% Q+ @# J}
& W4 X! T3 I0 U: Q7 A& ]. h' f  k2 k.input_foot {
& L! @2 m  Y) `5 {width: 100%;
% [+ j# [, ?6 W/ q1 P% I+ rheight: 35px; ( C( x" \7 s( ?9 B* a& h1 N
border-top: 1px solid #ccc;
2 C  }' f# p7 v: |3 w! Qbackground-color: #fff; ! _/ L8 h8 Y! ^2 W' A( ]$ {) i
-moz-border-radius: 0 0 5px 5px; ' X4 f! `& a- J, y$ k( B5 D. C- K
-webkit-border-radius: 0 0 5px 5px;
+ r) d1 F, Y. v* _) Yborder-radius: 0 0 5px 5px;
2 B+ r) M( ?8 \. d& X! Aposition: absolute;
8 k! c& |$ U& F& u}
: H. X! m% c- P+ k.imgbtn { : b0 u- ]; |% g2 F; U  e
float: left;
8 O. |( F2 F) i6 J! B1 Y( Imargin-top: 8px;
: i4 A% r& f$ omargin-left: 10px;
6 ^/ A2 @) h! J; U, D8 r0 nbackground-image: url(imgs.png); 3 l; S* v8 b' M; s2 U, B
background-repeat: no-repeat;
5 [, i4 W3 t& S& _6 Wbackground-position: 0 -13px; : k# o& U. p9 E9 i; d; q3 z  I
height: 18px; " Z* H- c9 F. l4 Y3 x
width: 20px; : Q5 v2 o8 w  t7 O) f
cursor: pointer 0 d2 W# H* ^3 U& z
}
; Q7 \+ _$ h" O6 \7 @; c, l.imgbtn:active { 6 o# j( H. R+ V  X% }: T
margin-top: 9px;
0 y$ ^6 U9 z" M/ a}
8 Z. T$ B5 P! y2 z& K.imgbtn:hover { + \+ B  u# M/ D" e& ]' G' _2 z5 D9 K
background-position: 0 -31px + Y+ \  E9 C( g9 K# R
} # F4 o% b$ U+ @% q8 O8 `- q
.postbtn {
$ o2 M& m# y$ e9 w2 @float: rightright; 9 u; }  J' Y6 `
font: 13px 微软雅黑, arial, helvetica, sans-serif;
) O& p9 f+ G! ?( rcolor: #808080;
% y6 i- @1 T2 h, u1 H7 b3 t1 u& Ipadding: 9px 20px 7px 20px;
" h+ u+ W) \# u" m2 c) vborder-left: 1px solid #ccc;
7 R( R6 {+ t# Tcursor: pointer;
* @/ d2 k. g7 X8 O- y-moz-border-radius: 0 0 5px 0;
4 e; x! i$ X. S9 g8 H- C6 m-webkit-border-radius: 0 0 5px 0; ; }0 J* M/ B- _0 J5 r, B7 v; h7 D3 ~
border-radius: 0 0 5px 0; * _; `- z! A8 Q5 n
}
$ r) [1 N$ [, a! j.postbtn:hover { 2 ^+ V" }6 p5 N# E
color: #333; 8 Q/ |1 S% @. J% d; C
background-color: #efefef; # I& J6 K# x* S2 `2 \% K6 [
} + Z" V) y2 [' [; j( o# |4 C
.postbtn:active {
* X1 H- O! B7 N8 T6 y1 y: rpadding: 10px 20px 6px 20px;
+ u2 E, p8 M3 r0 }' K( b}
  |4 l% Q" s5 ^, o.facediv {
9 G8 A' A$ Z- T  [, owidth: 500px; " D$ x) I, X: _
height: 120px;
# x5 v/ J- e2 Pborder-top: 1px solid #ccc; + I+ U2 ~$ Q% H' f
position: absolute; $ z. l+ y) _+ \* Z( Z" h9 r( w' w% p$ P
background-color: #fff; 0 T) u& E! r& O( Y/ \+ o
-moz-border-radius: 5px 5px 0 0;
7 k; l  v0 {3 H/ ?" J+ p-webkit-border-radius: 5px 5px 0 0;
( Y% v3 X, }; x8 P: C# eborder-radius: 5px 5px 0 0;
8 N+ f: D: v2 R$ T- U5 q0 J} $ u1 z. d5 V' f9 X. m7 C
.facediv>img {
& v3 H; |' ?  T5 n% e3 B% O+ O8 x6 rborder: 1px solid #ccc;
; [* f$ D, H  T8 ~float: left; ! W- b$ r/ }, H
margin-left: -1px; 3 f- }0 p5 u) ^3 S! ]& z1 o
margin-top: -1px; # ?6 _6 b- q* o' |* |4 ~% W7 x' G
position: relative; ' e% d* }. l- M. P7 L' a. Z. _
width: 24px; / O: w# w! ?1 ?! l+ d- L
height: 24px;
5 T2 i; }1 V  Y% r! b( Y) o- Qpadding: 3px 3px 3px 3px; % I) q" W) p% ], l5 F
cursor: pointer;
: k$ P- I/ ?" b/ Q$ A- s; h} % B6 i  x8 i' ?: B
.facediv>img:hover {
/ G3 T: c. h8 X/ \# b' wbackground-color: #efefef; ' G( _6 I3 i! C; U- U
}
0 y" D: @' @" j$ n4 D.facediv>img:active {
, u  _+ ]) b* x. b% J% ^padding: 4px 3px 2px 3px; 7 G( X2 {# |4 f) \
}
" z" s! ]/ {1 n% [/ B9 Bjavascript代码:0 S: A* w. P8 X" ~
javascript code复制内容到剪贴板! X9 R  _# ^+ y  H
var imgiputhandler={
/ J0 L/ x& G" T0 [facepath:[ % E; O( S: {5 q/ Y  S7 x0 [
{facename:微笑,facepath:0_微笑.gif}, 8 n5 M1 ?/ E: }- G3 y; d5 B
{facename:撇嘴,facepath:1_撇嘴.gif},
6 D  k. T! l5 C{facename:色,facepath:2_色.gif}, 1 b5 S! ?# s) x/ o/ p) k  K! r
{facename:发呆,facepath:3_发呆.gif},
) Y9 ^* \: z" ]  i, ]7 v{facename:得意,facepath:4_得意.gif}, 5 Q) c! ]6 R# ^1 \3 U# Q- M" ?
{facename:流泪,facepath:5_流泪.gif},
- l7 d4 b# M$ u! L1 X9 {{facename:害羞,facepath:6_害羞.gif},
: O. X; A- X6 t: T{facename:闭嘴,facepath:7_闭嘴.gif},
# E: ]/ ~% v2 a5 _/ Z{facename:大哭,facepath:9_大哭.gif}, . h  }5 |. D0 y! N/ x
{facename:尴尬,facepath:10_尴尬.gif}, ' a# d% O1 ]6 R
{facename:发怒,facepath:11_发怒.gif},
; p/ e/ N2 H& O' e{facename:调皮,facepath:12_调皮.gif}, 9 y4 N. }8 U# C" i. M* E# s0 m
{facename:龇牙,facepath:13_龇牙.gif}, ( l; C1 v. s4 ?# {9 v( S/ v
{facename:惊讶,facepath:14_惊讶.gif}, " T$ H$ m- G( M1 I: A
{facename:难过,facepath:15_难过.gif},
2 p% m/ p1 y  r{facename:酷,facepath:16_酷.gif},
' O% _& b. \6 |: T0 n$ X/ V, D{facename:冷汗,facepath:17_冷汗.gif},
5 w& E, E9 e& X% U9 u: A0 ~{facename:抓狂,facepath:18_抓狂.gif}, 8 [/ d7 W- h: m2 E9 v1 k$ P
{facename:吐,facepath:19_吐.gif},
2 N: i$ i' F2 d8 D# [{facename:偷笑,facepath:20_偷笑.gif}, 6 P+ h/ Z6 q5 \# C1 G* o3 ]
{facename:可爱,facepath:21_可爱.gif}, ) m. M9 m0 l. B# G; k
{facename:白眼,facepath:22_白眼.gif},
' ?0 ?6 |% S+ p3 \" k! y{facename:傲慢,facepath:23_傲慢.gif},
% p/ P3 M9 [/ p1 s7 g' W( n{facename:饥饿,facepath:24_饥饿.gif},
' O0 D, k& L* K* W$ m' D{facename:困,facepath:25_困.gif},
. n) B9 E' t6 G+ c1 l{facename:惊恐,facepath:26_惊恐.gif}, 1 \. J# T3 R, k0 a
{facename:流汗,facepath:27_流汗.gif},
% J* K* O9 C& N% b{facename:憨笑,facepath:28_憨笑.gif},
- B% e/ Z$ X+ E/ H/ W6 s{facename:大兵,facepath:29_大兵.gif}, 3 R  f# ^) U+ [' [. H" k3 V+ Z7 }
{facename:奋斗,facepath:30_奋斗.gif}, / y. V2 k. U! y# G  Z
{facename:咒骂,facepath:31_咒骂.gif}, 8 Q; I0 A% N& W3 P/ C7 E  q
{facename:疑问,facepath:32_疑问.gif}, / H) B7 I. X8 b, V. g( M5 |
{facename:嘘,facepath:33_嘘.gif}, 7 ^* o- s  q# P( a) D9 \+ r5 R3 [
{facename:晕,facepath:34_晕.gif},
& o1 i9 z2 M1 i1 k  {5 }9 F/ D{facename:折磨,facepath:35_折磨.gif},
. ]0 E/ o3 o$ l& r6 V2 `3 e: K! F{facename:衰,facepath:36_衰.gif},
% \; w/ q9 p3 o$ p: H- Y{facename:骷髅,facepath:37_骷髅.gif}, % Q3 ~2 I4 I) m$ f. m
{facename:敲打,facepath:38_敲打.gif},
' y( E0 a2 K+ f$ f  R; Z{facename:再见,facepath:39_再见.gif},
; v$ }3 @0 w; u! X! K{facename:擦汗,facepath:40_擦汗.gif},
" e! V4 R2 I/ w  z) [" K+ T
) H+ e5 e% s5 w' a9 h( c9 @+ ^{facename:抠鼻,facepath:41_抠鼻.gif}, * T9 L$ n/ f, k1 K, K( H6 I
{facename:鼓掌,facepath:42_鼓掌.gif}, 4 a! O* _/ t6 r$ J6 e2 S' ]! a: n: _: ~
{facename:糗大了,facepath:43_糗大了.gif},
5 N( [, v; E. ]$ D& c{facename:坏笑,facepath:44_坏笑.gif},
# P+ m+ g, f, ^9 I{facename:左哼哼,facepath:45_左哼哼.gif},
$ U6 L/ w  T  w, _- C: E$ A0 I{facename:右哼哼,facepath:46_右哼哼.gif},
# u/ d/ r; q7 f. \, b{facename:哈欠,facepath:47_哈欠.gif},
5 z/ t9 c$ H0 `  N8 W' F{facename:鄙视,facepath:48_鄙视.gif}, & Y8 U- D0 h& y9 A' }( _- x8 W
{facename:委屈,facepath:49_委屈.gif},
- B1 T( E2 b4 c$ S{facename:快哭了,facepath:50_快哭了.gif},
8 D' p( }1 X( A) v{facename:阴险,facepath:51_阴险.gif},
/ s* n/ y; q9 l1 h3 D4 G4 L, f{facename:亲亲,facepath:52_亲亲.gif}, 0 h4 L( I2 O4 O
{facename:吓,facepath:53_吓.gif}, ; D$ a5 e2 e# x) z
{facename:可怜,facepath:54_可怜.gif}, ; q% H" b+ ~/ j$ s% H* j; T
{facename:菜刀,facepath:55_菜刀.gif}, 6 E. x) B2 _! L) q" f/ A$ [
{facename:西瓜,facepath:56_西瓜.gif},
  Y* @% D9 Q, i& |8 q0 I{facename:啤酒,facepath:57_啤酒.gif},
! j9 L7 X0 U/ z{facename:篮球,facepath:58_篮球.gif}, : {1 ~0 w5 m$ O6 d
{facename:乒乓,facepath:59_乒乓.gif}, * h9 ^* w4 O) o
{facename:拥抱,facepath:78_拥抱.gif}, ! w+ u4 j: X8 c+ J! N
{facename:握手,facepath:81_握手.gif},
- L: d; j! L( }/ [+ e{facename:得意地笑,facepath:得意地笑.gif},
0 t( M% l) F8 O+ D- f+ t$ V# G{facename:听音乐,facepath:听音乐.gif} + J' }$ W! Y  \" k# ?! A2 z" o
]
* u$ {1 s1 o& c# ?, K4 Y, ( p  h& J6 r0 y' }+ }
init:function(){
8 ~& K8 N0 R4 |" o3 q% ]/ J& Yvar isshowimg=false; ) R2 t2 Q4 N0 U0 z% a. T( n
$(.input_text).focusout(function(){ 6 w9 ]0 n, y" L0 Z
$(this).parent().css(border-color, #cccccc);
2 q: |4 o: \' d& I7 ?$(this).parent().css(box-shadow, none); % a; a* J5 q& p! K; X1 V3 }! p& y5 E
$(this).parent().css(-moz-box-shadow, none); " a8 ]' P1 G1 @) Y9 f  b
$(this).parent().css(-webkit-box-shadow, none);
) _5 q% i7 w! W});   L; I/ Q# p: R3 M" F) Q
$(.input_text).focus(function(){ $ j% c- g9 r* X4 L0 p! w
$(this).parent().css(border-color, rgba(19,105,172,.75));
# R- V+ t& U( T6 {$(this).parent().css(box-shadow, 0 0 3px rgba(19,105,192,.5));
3 f& k' a3 G6 ]$(this).parent().css(-moz-box-shadow, 0 0 3px rgba(241,39,232,.5));
/ s0 a2 T+ H  Q" X$(this).parent().css(-webkit-box-shadow, 0 0 3px rgba(19,105,252,3));
) }& l" ]$ I6 o( G# C}); . B& t0 v6 @9 o  C* f; @& l
$(.imgbtn).click(function(){ - d* t/ m1 A, N: C6 }- `( b
if(isshowimg==false){
2 G4 F  F6 V/ B1 t( O& L& ]isshowimg=true;
8 U+ u& p5 _3 s, L1 f/ \$(this).parent().prev().animate({margintop:-125px},300);
# f8 B( g- R% w% `if($(.facediv).children().length==0){ 3 O$ @( Z" y6 X5 @, h# d
for(var i=0;i<imgiputhandler.facepath.length;i ){
) s2 g" m  @1 S6 h% W. K  d7 K$ o$(.facediv).append(<img title=\ imgiputhandler.facepath.facename \ src=\face/ imgiputhandler.facepath.facepath \ />);
. I# H. H* v# o) h' Z) y) A}
5 h/ F9 p; u3 L( r  h3 U$(.facediv>img).click(function(){ 4 h8 p" E4 z; |+ ~! I$ Q, h$ p% j& j& [

' j0 |2 c- M( y8 Disshowimg=false; & Z$ a8 c- W/ Z0 e# a5 d9 M
$(this).parent().animate({margintop:0px},300);
1 Q' W  r# y$ Y; Limgiputhandler.insertatcursor($(.input_text)[0],[ $(this).attr(title) ]);
" ?$ K6 k, B4 Y, W) ^% {+ r});
' Q5 T3 K5 t& U}
: t9 Z+ b/ p% |3 d! U}else{
' R$ z4 v) N- F; [isshowimg=false;
5 F0 [3 }9 l1 H% [# l6 b$(this).parent().prev().animate({margintop:0px},300); " _& b4 U5 Z( F4 F
}
, ~# Y, w' i9 S7 ^) O6 {& q4 a}); " \! g' }7 x6 C& k3 W  T! j
$(.postbtn).click(function(){ 7 q$ f* K" U' I* a: B! |2 A
alert($(.input_text).val());
# o( P$ P# q+ G( V}); 0 g+ x3 {& o5 C& R8 g- U$ G
},
' E: q( }+ \, a8 O2 rinsertatcursor:function(myfield, myvalue) {
* B8 @# @( s5 wif (document.selection) {
( \! W, R5 T% q7 u6 `myfield.focus(); $ A: t0 K) O( B3 v8 ]
sel = document.selection.createrange();
! K* E, ~' A( i/ L  }. Tsel.text = myvalue;
# ^3 Y* x, i& A- K% |sel.select(); ) g# r8 i3 o" M, I3 ]) ]+ A
} else if (myfield.selectionstart || myfield.selectionstart == 0) { 2 t: f) Y. X% p% ?$ [; `2 N+ x. \
var startpos = myfield.selectionstart;
& K& Y5 I; \5 U4 z2 Kvar endpos = myfield.selectionend;
2 s; e1 ^3 q/ Z" E0 k3 c- I1 avar restoretop = myfield.scrolltop; 3 k. l/ n% {9 n" q* L
myfield.value = myfield.value.substring(0, startpos) myvalue myfield.value.substring(endpos, myfield.value.length);
% D! n- ~+ H2 _, o4 m: yif (restoretop > 0) {
, \( f$ R$ t# [2 Hmyfield.scrolltop = restoretop; 1 f+ ?; p" d4 S! @
} * M6 _8 t8 C- V/ o
myfield.focus();
0 O# n* h5 ]- Amyfield.selectionstart = startpos myvalue.length; . H" B2 C" \6 j8 G' R  L- j( K
myfield.selectionend = startpos myvalue.length;
- a* D; L2 v4 E  `} else {
6 d* u* o) A; D3 \, C( B( Y8 hmyfield.value = myvalue;
0 ^0 Y' h1 Q- o) [: I0 T5 Wmyfield.focus(); . c  _; m5 q! [' f9 \/ c4 e
} . f' h# s4 E# y+ z7 |- q4 i' P/ Y2 g% S
}
: W5 R8 L1 d' O" ^$ S$ |} , Y+ _! m1 k7 s
, z) Z  \) q1 h  p' L
9 d. E) k2 J/ }4 ]6 }  C4 R  ]' N
更多网页制作信息请查看: 网页制作

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