返回列表 发新帖

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

452.7k 9
swmozowtfl 发表于 2015-7-12 16:09:11|湖北 | 查看全部 阅读模式
html带表情的评论框,表情通过json数据加载,可以根据自己的喜好改变表情。本评论框代码为html,css,jq三个方面的代码。图1为原始状态,图2为点击表情时出现的表情列表,可以任意选择一个或者多个。下面我们来看看实现的代码。* K0 Y  R7 m6 f( d$ _
图1
/ [) Y5 v2 b- x! y6 G

: w/ D. K& d: o4 X) x                               
登录/注册后可看大图
. I. H0 y: ~" H4 a
图2- Q% }8 O0 F' b- w3 R; o

+ J; g: t' E3 X. l" f$ Z2 w- n                               
登录/注册后可看大图

1 O! W: O* D( _' P+ v实现的代码:, G0 {  [; @+ W3 l
html代码:3 {4 x/ o6 c7 M7 h2 p5 g2 G
xml/html code复制内容到剪贴板+ r6 }) m7 W2 \- v& y( N
<div class=main>
" P; l/ Q$ y. s; Z, _: o0 s4 B<div class=input_box> 1 d; f. f. q& k4 U, ]& X- s1 f
<textarea class=input_text></textarea>
; @  ^/ A3 R4 m8 y2 ~<div class=facediv> </div>
1 U2 p' n% b( c. Q. g7 V! S; p% ^<div class=input_foot> <a class=imgbtn href=javascript:void(0);></a><a class=postbtn>确定</a> </div>
4 v3 n% ]( k% K4 Y9 M' F  ?</div>
% J" e; _2 k# c6 v0 a</div>
9 Z" k+ a8 g7 o' v; _1 e( }& G, Icss3代码:+ E4 V; }2 M# u
css code复制内容到剪贴板
8 f5 D- m' C& \8 a7 u/ g.input_box {
6 e& N; J" X7 U7 p7 [5 T$ M# [, E2 f' Ywidth: 495px; + j8 Y9 [7 a" ?9 D
height: 160px; % }4 X; G6 c- P0 q4 [
border: 1px solid #ccc;
1 V" U& M& @# g8 T3 U! l$ Htransition: border linear .2s, box-shadow linear .5s;
0 d/ Z3 ]6 l' j' i& X' l$ @3 |9 U0 F8 d-moz-transition: border linear .2s, -moz-box-shadow linear .5s;
0 x! {& _, p' a5 o5 p& l/ l-webkit-transition: border linear .2s, -webkit-box-shadow linear .5s;
! a8 H9 s+ u6 `6 E3 H: _-moz-border-radius: 5px; - N: z3 V) p) F5 s
-webkit-border-radius: 5px;
5 n+ b$ Z# e. A$ q/ ]2 Gborder-radius: 5px; , C9 R, N, U% C
background-color: #fff; ; \2 q3 h6 e" r2 [  l* P
overflow: hidden; # F/ _3 U3 V" X
position: absolute;
# N  @+ p$ A0 z! a2 U+ Z* R-moz-box-shadow: 0 0 5px #ccc;
2 ]( A6 ]: Q4 F' S! U+ c& R-webkit-box-shadow: 0 0 5px #ccc;
/ z3 H0 Z; r9 l* l( {box-shadow: 0 0 5px #ccc;
$ {0 H1 x0 G" ~/ n# R} 9 T" _$ V$ S+ k% X8 Z
.input_box>textarea {
8 {" n) _5 H6 h& v  y, \width: 485px;
. `# b: [% ]* zheight: 111px; 9 G! f5 z  r  f5 ?
padding: 5px;
8 q+ I2 W0 r- n) E8 t1 b) boutline: none;
" \* E) d8 b7 o) ~* g' u  _4 x0 `border: 0px solid #fff; - a6 J7 f, V- F7 R  |5 o
resize: none; - _' w! [* n, ]
font: 13px 微软雅黑, arial, helvetica, sans-serif;
- a2 Z- b3 L3 |  j: U% v6 m+ S-moz-border-radius: 5px;
1 s4 I* |5 z/ X4 C-webkit-border-radius: 5px; . ^, J( a9 m# K3 j. V- {& A
border-radius: 5px;
9 Y7 `4 D) D# @9 A3 t# ^8 n8 U}
' t# D, g' X0 j6 v) c+ \; |. K4 B6 G* ^.input_foot { * |1 r& E0 Y9 S+ P% _
width: 100%;
9 r7 j7 x9 ^* D* E0 [% N& }3 E) Theight: 35px;
9 _+ s* `$ g# J* }; }2 g) Y: kborder-top: 1px solid #ccc;
1 w: D/ s. n2 T' c' Gbackground-color: #fff;
3 w1 i! L+ E0 {# b# S+ ~1 H7 {, T-moz-border-radius: 0 0 5px 5px;
( V8 V- r5 k8 i" k- X-webkit-border-radius: 0 0 5px 5px;
4 t1 x2 P" l: j0 ^( R" T: R2 B1 r& ^0 Wborder-radius: 0 0 5px 5px; & v- i4 j7 t9 F/ P( g% o# s2 Z9 i3 p
position: absolute;
* m! m& e/ w! v1 \} ( k6 H  z+ S" j* m3 U; L
.imgbtn {
' U* o  n8 }6 C$ Vfloat: left; - M7 O+ J% c: `5 U7 M4 ?
margin-top: 8px;
4 L1 J8 }. d4 i. S- Q) D4 y% vmargin-left: 10px; 0 @7 t* y. V# p  S! R3 H
background-image: url(imgs.png);
! F$ ^. G& r) i$ g5 [) I8 ]. \9 ?8 @background-repeat: no-repeat;
& {$ ]1 z/ @7 x: K# j' S, pbackground-position: 0 -13px; 1 @/ T" U# }  N" k# k8 @
height: 18px; 6 ~; D6 f; J% j. V  r/ }8 h
width: 20px; ( o% x" N. {: G8 M" Z
cursor: pointer . F" {( c) _/ n
} 9 {$ }6 O. y0 {0 ~9 D$ A
.imgbtn:active {
8 ~3 i3 M- r2 omargin-top: 9px;
, v+ ^; c( F6 B* o, r; ^} / @$ m. X7 ?8 K3 L4 [& o# _; j
.imgbtn:hover { 8 P  O; F6 i5 E) E
background-position: 0 -31px ) \- P! E; B; }0 L5 f: x6 v; j( y
} % S, }' G8 h9 [3 D7 ?, O
.postbtn {   w# d6 |! h: U5 u! n% o& G! J
float: rightright;
% n: P8 G/ o: G8 c$ X$ O6 j! n. j) Dfont: 13px 微软雅黑, arial, helvetica, sans-serif; ) T- F, Q- x; U9 S
color: #808080; 9 `, {! F, G/ m3 Z  Y5 o
padding: 9px 20px 7px 20px; 7 L0 z) d. y6 R+ }2 U9 `
border-left: 1px solid #ccc;
; a2 E4 m  z2 ?3 }+ Wcursor: pointer;
4 V+ [7 f) U0 J1 {' `4 c-moz-border-radius: 0 0 5px 0;
" t3 O# z! I" P! K' H-webkit-border-radius: 0 0 5px 0; . @$ q7 K: m4 h1 K7 e- O, Q5 S
border-radius: 0 0 5px 0;
% _7 [) v/ R% Z. P} + L+ g/ W  N6 S1 Q8 G
.postbtn:hover { - @. }" o, K) X( F5 Q
color: #333;
8 h5 n, M+ M* ^background-color: #efefef;
* O2 Z# Y4 h1 j! S' ^: h5 a7 O$ n} , L' w# x! k$ q, b2 ?) k" ^
.postbtn:active { * a- @/ `* `) ]
padding: 10px 20px 6px 20px;
  y4 K+ ^9 ^( P( n+ P& |' k1 \} 7 S4 Y! _5 _  W& L1 O) L
.facediv { : r# J/ l- c3 \
width: 500px; ' i  ^% R+ w8 P  ]
height: 120px; $ M7 }6 D' l, R6 S, y/ P5 c
border-top: 1px solid #ccc;
" Y6 `% v# p0 z+ \: Z. ^position: absolute; 5 v* ^# X$ c8 S% h
background-color: #fff;
& x1 W& ]/ z0 \-moz-border-radius: 5px 5px 0 0; 9 |3 A2 m* L+ F1 F1 S
-webkit-border-radius: 5px 5px 0 0;
+ p! e" H  e; J3 u8 ]) V( Aborder-radius: 5px 5px 0 0;
8 W- |2 h, {, [& X4 f% ~}
) b& x$ x3 S1 o" U. A: V.facediv>img {
2 g, D! c1 X* V5 f# }! Yborder: 1px solid #ccc;
. Z* O: `: A8 p) l2 C  s) k5 t$ {6 {float: left; 1 w* F5 @% {' W3 D
margin-left: -1px;
& m+ r; C$ Y5 t7 |) Fmargin-top: -1px;
* `( p$ t, x& Qposition: relative; 5 F) F9 m7 B6 X4 \/ |, Y% C$ @
width: 24px; 7 j6 @1 x$ ~* U; b8 }3 W% P  F: z
height: 24px;
& f; y% I1 q1 I5 A& w* npadding: 3px 3px 3px 3px;
1 C9 t1 @! U9 @, \5 pcursor: pointer;
5 K. B# }- G: ]2 R+ T2 x* ?}
6 b! n- n3 ~9 U, ]5 Y& n.facediv>img:hover { 3 c7 E5 Q+ i' w) [
background-color: #efefef;
8 a3 K8 S& N5 S4 `- k1 e* g}
. K8 D5 i! N5 o# U# L; x.facediv>img:active { / w0 a: E# A; y+ ]; a) q. N3 p7 g: L
padding: 4px 3px 2px 3px;
3 A' M% z3 g+ o} 5 u0 k) p: N3 f& W# V
javascript代码:4 X+ t* @, q5 R4 q5 u! V  T. z7 ?& N; g
javascript code复制内容到剪贴板5 m2 l# H$ e5 o/ w, f5 U* p! S* a
var imgiputhandler={
1 }, u3 R  s7 m3 bfacepath:[
* K1 _% T2 {' i! I% \# x7 B{facename:微笑,facepath:0_微笑.gif},
+ g8 I: |4 s' ?  c& u* T( Z, A{facename:撇嘴,facepath:1_撇嘴.gif},
! O+ E; K6 X" M{facename:色,facepath:2_色.gif},
, }7 q# i+ e  |$ E/ E4 [0 T# t( O{facename:发呆,facepath:3_发呆.gif}, ; m4 q! Q7 P3 t# w$ [- z7 Q; R2 O
{facename:得意,facepath:4_得意.gif},
* `2 \. ^0 O* _, v. q% A6 `{facename:流泪,facepath:5_流泪.gif},
2 a3 B9 S; r+ t  Y$ I7 \) G' o{facename:害羞,facepath:6_害羞.gif}, ' [+ G5 m  y- {! P
{facename:闭嘴,facepath:7_闭嘴.gif},
$ T& q# Y# O4 B/ W{facename:大哭,facepath:9_大哭.gif}, 3 _# O" {/ H9 q
{facename:尴尬,facepath:10_尴尬.gif},
" Z4 N" x$ l3 ?! b, u{facename:发怒,facepath:11_发怒.gif},
3 x. U$ L& l/ l; E- Y{facename:调皮,facepath:12_调皮.gif}, $ Q) t8 J) p4 O3 W: W
{facename:龇牙,facepath:13_龇牙.gif}, " [5 o& P; Z  A
{facename:惊讶,facepath:14_惊讶.gif}, / ?2 |, ]! U- E/ i3 n/ D
{facename:难过,facepath:15_难过.gif},
0 C. z/ `" Q) R( x& e{facename:酷,facepath:16_酷.gif},
! @- w0 s( Y' [0 i; l) {# {{facename:冷汗,facepath:17_冷汗.gif}, 6 u5 x) A: {* ~: m/ ^
{facename:抓狂,facepath:18_抓狂.gif}, 5 r6 V8 n; _7 |% p5 d
{facename:吐,facepath:19_吐.gif}, 4 t3 i. E: w; b$ O- H
{facename:偷笑,facepath:20_偷笑.gif}, . T3 @$ w5 p- L" y4 c7 x
{facename:可爱,facepath:21_可爱.gif}, 0 h' W4 `) z% |3 R% z  j0 c0 }
{facename:白眼,facepath:22_白眼.gif}, $ y: B$ `6 k3 C+ w6 R
{facename:傲慢,facepath:23_傲慢.gif},
" |: t, x( S1 s{facename:饥饿,facepath:24_饥饿.gif},
( ^  y" {4 h) F4 r" c2 x{facename:困,facepath:25_困.gif},
! V7 D5 H+ v$ R1 ~* e1 l$ F{facename:惊恐,facepath:26_惊恐.gif}, 1 U. [8 h9 v# Q2 \
{facename:流汗,facepath:27_流汗.gif}, & z  H4 B- y5 l+ R9 [: o/ m2 g
{facename:憨笑,facepath:28_憨笑.gif},
. Q8 U% Z" h( w& ]2 X' p{facename:大兵,facepath:29_大兵.gif},
' |8 K# U- |5 n0 e{facename:奋斗,facepath:30_奋斗.gif}, 0 k0 r- R9 H* D0 i4 Q
{facename:咒骂,facepath:31_咒骂.gif},
" O  o0 n( M) z; B8 \! _! p/ o{facename:疑问,facepath:32_疑问.gif}, " M4 e3 N2 Q) Q
{facename:嘘,facepath:33_嘘.gif},
8 P' a4 O( y  W6 Q7 a{facename:晕,facepath:34_晕.gif}, ( ^0 w0 F3 y# N( n% s
{facename:折磨,facepath:35_折磨.gif}, 5 N2 _; o2 }8 T4 B5 V7 y8 K
{facename:衰,facepath:36_衰.gif},
% Q7 |" U* N: D! U{facename:骷髅,facepath:37_骷髅.gif},
6 ]6 k- K- X% ?. y{facename:敲打,facepath:38_敲打.gif}, ) ~% U  F6 K* ^4 i
{facename:再见,facepath:39_再见.gif},
% o: S+ l: G  ?) S$ j{facename:擦汗,facepath:40_擦汗.gif}, 4 n& ^& J- K7 L  H

: F$ j* ^! T6 ~9 D{facename:抠鼻,facepath:41_抠鼻.gif},
9 [7 T6 _( i+ }( P  ^" D* K# B{facename:鼓掌,facepath:42_鼓掌.gif}, & Q* d) S4 c/ ]+ ]6 Y6 x, N' r; \- y5 o
{facename:糗大了,facepath:43_糗大了.gif}, 2 n6 }, T$ X7 t# g5 l
{facename:坏笑,facepath:44_坏笑.gif}, 6 Y# s' U: j$ E
{facename:左哼哼,facepath:45_左哼哼.gif},
) {7 @3 r* z( q+ g7 D* a{facename:右哼哼,facepath:46_右哼哼.gif}, 1 J7 }: Y9 v( _, N, i0 v6 D
{facename:哈欠,facepath:47_哈欠.gif},
- i3 D- D8 h2 l; i{facename:鄙视,facepath:48_鄙视.gif}, - O+ M6 B) V9 c$ c' v
{facename:委屈,facepath:49_委屈.gif},   N6 q; a& T  T+ m5 S
{facename:快哭了,facepath:50_快哭了.gif},
4 T4 G+ z( f2 `9 u2 |8 G{facename:阴险,facepath:51_阴险.gif},
# T$ X( l0 G4 E# R/ d4 b{facename:亲亲,facepath:52_亲亲.gif}, ! }- ?- P0 n% f5 ]4 N$ T$ {2 v
{facename:吓,facepath:53_吓.gif},
! s* n+ h5 D3 c) N: @6 D{facename:可怜,facepath:54_可怜.gif},
2 w3 O2 l+ J  Q+ p1 O5 V, ~{facename:菜刀,facepath:55_菜刀.gif},
4 A. O4 L0 J3 q1 B{facename:西瓜,facepath:56_西瓜.gif},
, ], |9 U& ?$ A, ^* {; j( E{facename:啤酒,facepath:57_啤酒.gif}, 6 q; _1 l+ B* [! E
{facename:篮球,facepath:58_篮球.gif}, . U2 k( L! Z0 S2 c6 E
{facename:乒乓,facepath:59_乒乓.gif}, # B7 K: L( \- N4 P' k/ e, @. a' e
{facename:拥抱,facepath:78_拥抱.gif},
0 x# m8 w0 `4 k( q1 p/ Z! m- r{facename:握手,facepath:81_握手.gif},
0 J' `5 M( T' ^5 M{facename:得意地笑,facepath:得意地笑.gif},
1 L; I! r  X( z! J0 w, [9 W{facename:听音乐,facepath:听音乐.gif}
, m: X$ z; N  ~- u# s] 5 }. c( A# d5 n1 y
,
- D2 P, d1 ?2 y2 F0 Linit:function(){
+ B2 @) l; [) v8 ^) xvar isshowimg=false; * i3 _% ~. i8 J( ~% [6 r
$(.input_text).focusout(function(){
+ J& ~) L+ G. a$(this).parent().css(border-color, #cccccc);
) a9 U/ l  @; m) E: ~* v$(this).parent().css(box-shadow, none); 0 E# R( D5 q7 x: N9 N' j- r1 _
$(this).parent().css(-moz-box-shadow, none);
( V7 z8 B, _- M1 @0 Y5 @; n% U$(this).parent().css(-webkit-box-shadow, none); " {" q% F1 V- s- U' |6 d
}); ( M& m" {, N6 \. ~5 |5 v
$(.input_text).focus(function(){
1 C5 r! V5 }2 m/ I" |8 Q7 K1 N$(this).parent().css(border-color, rgba(19,105,172,.75)); $ k' r+ p8 X' G) t3 C7 x
$(this).parent().css(box-shadow, 0 0 3px rgba(19,105,192,.5)); 9 {' M, {) @. @, f
$(this).parent().css(-moz-box-shadow, 0 0 3px rgba(241,39,232,.5));
+ O) D4 L/ r- e' v& a7 U$(this).parent().css(-webkit-box-shadow, 0 0 3px rgba(19,105,252,3));
! Z8 C' t6 d2 _  m0 y6 J$ f9 [}); ! ~. R' _4 ]; J, D7 ?) D
$(.imgbtn).click(function(){ 1 I5 {- ]; H" M$ r8 [3 f/ B
if(isshowimg==false){
7 o" t; m5 }+ s1 o0 b7 aisshowimg=true; ! t+ c( K! d0 Y4 }6 }1 @
$(this).parent().prev().animate({margintop:-125px},300);
* z! N8 J% I* Y' a- Iif($(.facediv).children().length==0){
( [4 N2 f; g" q" k1 P" O3 sfor(var i=0;i<imgiputhandler.facepath.length;i ){
8 e+ F) |% {) T5 z: @' g4 c, R, v: V$(.facediv).append(<img title=\ imgiputhandler.facepath.facename \ src=\face/ imgiputhandler.facepath.facepath \ />);
/ z( s9 \" L. R6 V: _2 A1 j6 r}
- r+ p8 r- k. l: R. i$(.facediv>img).click(function(){ " L% [- ~* M: L) U9 ~

: I, c/ N! [0 E4 l2 p1 ^; l  Kisshowimg=false; * E  F, V& T$ }  c; a
$(this).parent().animate({margintop:0px},300); 5 R1 f) t$ f# @0 u) L8 I0 i
imgiputhandler.insertatcursor($(.input_text)[0],[ $(this).attr(title) ]); 1 v- z' ~/ Y4 }3 M4 D! @/ c
}); + p, L# b6 J- h2 ?/ @
} 0 v( q/ o$ B1 t  Q2 Z
}else{
0 V* Y0 c5 l4 D! K: l7 d0 jisshowimg=false;
" z9 q1 u+ j9 Q7 T$(this).parent().prev().animate({margintop:0px},300);
2 _! D9 ^9 x) [1 _} 6 K8 w' N- P  ^$ L' y) @" X
});
' x8 w- V6 H' @! F$(.postbtn).click(function(){
6 ]4 w  ]& z8 f! valert($(.input_text).val());
  T$ V2 p8 T' }0 y- g}); 9 Y& B( H1 Y. y6 X
}, , Y- P* m  i- C+ w$ v# R, o0 n% D
insertatcursor:function(myfield, myvalue) { ' f4 H' h  \  I$ z
if (document.selection) {
+ }0 O% L7 T: Vmyfield.focus();
9 M$ s) v9 E. `3 w# s* fsel = document.selection.createrange(); 6 Y5 K6 S7 K# z9 P. Y
sel.text = myvalue; , W& Z/ |, [5 U
sel.select();   q" q( s. s4 }# f- x+ s+ N
} else if (myfield.selectionstart || myfield.selectionstart == 0) {
  j; ~/ ?, Q/ vvar startpos = myfield.selectionstart;
8 @8 w/ V5 F  a+ Vvar endpos = myfield.selectionend; 4 ?2 `* w! O% b% x7 A  j. c. E( T
var restoretop = myfield.scrolltop;
* z+ P0 a& v  @$ J+ t7 C1 ^6 Wmyfield.value = myfield.value.substring(0, startpos) myvalue myfield.value.substring(endpos, myfield.value.length);
$ o1 C: r9 g$ d$ |if (restoretop > 0) { ; B8 _! Y! n8 w7 i1 d# {3 n
myfield.scrolltop = restoretop; 4 |& `! W  A) J- S
}
/ l0 j* `0 M# H; dmyfield.focus();
3 C' u$ M  N* A& Bmyfield.selectionstart = startpos myvalue.length;
% s: |, }; c. o8 S0 Jmyfield.selectionend = startpos myvalue.length;
9 H6 e$ [- c9 L$ B} else {
: |/ Q# r% ?7 t' x/ Q* d! m' v5 Pmyfield.value = myvalue; 7 c, c7 }1 N' q
myfield.focus();
6 n3 Q; x, ~+ y5 i/ G! l% x}
. V3 @9 _+ Y0 h) _}
. E  b2 U. ?( H1 Z}
% K+ h1 X2 [5 U5 M+ r1 d( u
8 {8 I& X1 _/ G( Z2 V  ~$ x2 D, i. }0 v1 V; ]' 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客服 返回顶部
快速回复 返回顶部 返回列表