返回列表 发新帖

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

452.7k 9
swmozowtfl 发表于 2015-7-12 16:09:11|湖北 | 查看全部 阅读模式
html带表情的评论框,表情通过json数据加载,可以根据自己的喜好改变表情。本评论框代码为html,css,jq三个方面的代码。图1为原始状态,图2为点击表情时出现的表情列表,可以任意选择一个或者多个。下面我们来看看实现的代码。
3 s9 K$ g6 l. A4 A9 i图19 I& \: k( {5 J0 V( D6 A4 p
, x% @* a- z7 N
                               
登录/注册后可看大图

( F: @3 w6 Z7 Q7 u图2* m7 u: \. [: J0 m9 c
7 m* J- _, e( [- _3 C4 ]& }
                               
登录/注册后可看大图
) y, A. u, A) o
实现的代码:) l+ M  P3 X' B$ ?8 i
html代码:
7 k* e/ ]) E2 [1 S3 h3 {xml/html code复制内容到剪贴板
  [: E' S9 m# }2 X1 }<div class=main>
  |$ M$ o" p$ ^8 v  s  e) Q. h<div class=input_box> 2 H" \0 {$ e/ C) W4 _4 c5 w( N" l
<textarea class=input_text></textarea>
! p0 M$ K; m9 W<div class=facediv> </div>
' p( i, `3 i/ T; Z- H0 G+ ~0 R; P<div class=input_foot> <a class=imgbtn href=javascript:void(0);></a><a class=postbtn>确定</a> </div>
1 A/ y. q* n5 y' `$ o9 l/ a; e7 i</div>
! T6 T( {: F  f" f+ W+ l2 u; t; v</div>
1 n6 q6 J1 p! A2 ^0 I( Wcss3代码:
! ], r/ R# @! e/ q' t% hcss code复制内容到剪贴板
# u* L3 m6 o) I! Y* {* P.input_box { 8 S- U! \. S! j: E" E" l% M
width: 495px;
; W% a, G' Y. A0 lheight: 160px;
+ G( m. P" `3 K9 Y$ ^3 O( pborder: 1px solid #ccc; ( \2 e6 l2 G1 T2 D
transition: border linear .2s, box-shadow linear .5s;
% O% Q* e) Q. }- K/ a-moz-transition: border linear .2s, -moz-box-shadow linear .5s;
1 E% c% S; F, U% {: d-webkit-transition: border linear .2s, -webkit-box-shadow linear .5s;
9 ^7 [& J% I, P6 ]0 h2 [-moz-border-radius: 5px;
* n/ y" N; U& h: ^1 f8 y4 K-webkit-border-radius: 5px; 4 X' O2 B( X! r% b0 R
border-radius: 5px;
7 f% X8 }% j2 y' A3 w/ Abackground-color: #fff; 0 z1 Z2 G5 q6 q8 N
overflow: hidden;
3 F% `" O+ \7 f) xposition: absolute;
# ~5 @: ]& K, |0 g6 i, b# ?- D, c-moz-box-shadow: 0 0 5px #ccc;
( L( H7 p  w( T3 \-webkit-box-shadow: 0 0 5px #ccc; - ]0 X; c. T$ J  y9 I
box-shadow: 0 0 5px #ccc;
' E9 h" S# a! P1 O: p1 O}
2 {+ V: Y: T. Q  ?.input_box>textarea { " H' l( Q# l8 j% O4 `
width: 485px;
/ s9 o* ]% i" z8 }: bheight: 111px;
4 v2 a2 X: \5 r8 m) h$ |  g9 Cpadding: 5px;
$ w4 ?' {$ [; _7 Loutline: none; 4 |0 o9 e3 L9 W* O9 [& T
border: 0px solid #fff; ) U7 ]) \) j% E/ U: H  i- T* A
resize: none;
. P: U: B2 B' M0 ~font: 13px 微软雅黑, arial, helvetica, sans-serif; # @& f- k" `) s: Z- k/ d# L
-moz-border-radius: 5px;
! [6 G/ h- `" H$ F0 n8 J-webkit-border-radius: 5px; & M- o# x) v- s; f; i
border-radius: 5px;
9 G6 P* p+ c9 g3 o' _; i}
( E) N9 I- M+ S( s  X! i' }.input_foot { 4 X# y# e0 h- P* e+ b! G
width: 100%;
4 A! U+ Y% Y6 Hheight: 35px; + _1 c! {# {% B4 O' ]0 }8 A
border-top: 1px solid #ccc; * q& D( A( M# s7 _5 Z
background-color: #fff; 1 C6 C! W+ D* L- ~9 K: Z$ a1 [
-moz-border-radius: 0 0 5px 5px; 6 f4 I) H4 U; R2 O2 m" Y
-webkit-border-radius: 0 0 5px 5px;
5 R" B6 Y! h" v5 T- f0 S% Tborder-radius: 0 0 5px 5px;
6 o9 C1 |3 X1 [+ x# ]: cposition: absolute; 3 p0 _( T9 ?$ X) c8 Y7 W
} ' e6 f5 P: }" a$ t5 \
.imgbtn {
( H" [/ ]# |: X- o9 Zfloat: left; ! c( w/ W6 T; a# O, e1 S: s6 Y) J
margin-top: 8px;
. C( i) u0 ^* S. [' i+ kmargin-left: 10px; 6 r) U9 v% c( ]2 ]! R  R
background-image: url(imgs.png); ' l% ^# ?3 O, H% U
background-repeat: no-repeat; 3 R! U% w, i; ~1 R! P- [3 H
background-position: 0 -13px; 4 Q# H2 q6 b$ b4 g9 {, `4 Y
height: 18px;
& _" [2 `& ^; E2 c; X/ q, N3 Swidth: 20px;
# }5 Q6 Z7 c0 d1 M# fcursor: pointer ) l! e6 a; p8 E4 t
}
/ c# q! r4 X6 s* d8 F.imgbtn:active {
, C/ @% [4 e1 omargin-top: 9px;
; U' F: b5 h8 d" k6 p} , f2 K2 a. l8 v. x% Y" Z
.imgbtn:hover {
: C4 ~3 V1 ?) A: ~! P" s9 obackground-position: 0 -31px
9 s- c8 e; T; u: V; j: i} * V9 ~; H- W5 E7 x; N% y: ]4 i: O# ?: W3 s
.postbtn {
& q: z. Q% Y* E* M2 n3 A0 zfloat: rightright; # H! ], s) t: \: A4 h
font: 13px 微软雅黑, arial, helvetica, sans-serif; 0 d7 E( f* w* w( Z3 R0 |) ]6 i
color: #808080; - N8 j" V  f5 P: U# x* C) A
padding: 9px 20px 7px 20px; 9 n! [5 I+ ^7 \- G" G7 x
border-left: 1px solid #ccc;
* ^. S4 a. r6 Y. i0 hcursor: pointer;
: ~0 c7 a( [7 Z# G-moz-border-radius: 0 0 5px 0;
/ p* p7 j1 ?8 g' ?' R' U! ]-webkit-border-radius: 0 0 5px 0;
' K8 c+ u$ t% h  {9 V& vborder-radius: 0 0 5px 0;
5 F9 a8 ]/ q4 ]- Q! T! e} . z9 G  m" _; W/ U: `
.postbtn:hover { 4 a1 b2 B5 i: w+ v1 X( p# s9 a
color: #333; $ _, e4 h6 i4 z1 ]# ^, Z
background-color: #efefef; " z/ M" O# M+ D
} / q! Z( r& B: C. ^, z1 }7 B- _
.postbtn:active { . z4 C% G. L0 |. c* D5 A
padding: 10px 20px 6px 20px;   b/ w+ t. E' @1 L6 L
} % y& k* p( D. M! p8 y3 ?
.facediv { 8 b+ `6 Y+ z* z9 k
width: 500px;
7 }' S4 O" Z1 C' t1 `, @% U( @height: 120px; ; n" I/ H1 ], k7 }
border-top: 1px solid #ccc; 0 e! d5 \7 D& k; R6 _+ B" v
position: absolute;
4 x# N2 B. o) C  v$ nbackground-color: #fff; 6 F6 I& U/ a/ W' e& w* L, I6 g
-moz-border-radius: 5px 5px 0 0; % v7 \* z6 R% c# x0 k9 d
-webkit-border-radius: 5px 5px 0 0;   ]: _4 p$ l6 @5 q+ w8 V
border-radius: 5px 5px 0 0;
+ a1 u  b) S' w8 n6 C: ^} 6 A7 h0 s% i: u: C7 k1 e+ }: v
.facediv>img {
+ _4 S9 v" B% k8 s2 ]border: 1px solid #ccc; : f5 k! Z2 T! N' o2 W. h1 I2 M
float: left; + y7 G  n6 c; H
margin-left: -1px;
! a6 K! e5 w4 v$ qmargin-top: -1px; ' |& u, y9 g  f+ h) m4 R
position: relative; 6 e+ P3 O$ n# F. r
width: 24px; ' m8 q4 L& R/ t9 c+ D0 h+ E
height: 24px; ; D$ A$ g/ k/ c! Y. _1 o2 V1 B6 ?! h! o
padding: 3px 3px 3px 3px;
( N0 R+ N3 M; R) Mcursor: pointer; # {" Z  d) L" R5 T; i- M8 q5 i
}
8 `* ]2 F+ |/ b7 ?( A- Q! v: ].facediv>img:hover { 6 a2 U& x4 f% N, G& F
background-color: #efefef;
1 s& @/ q$ o7 G( [4 t. c. N  ~}
6 \; l% _. A* ]2 U4 }" y.facediv>img:active { 0 B7 Y- }2 X% K8 X
padding: 4px 3px 2px 3px;
% H# Y, m, J3 }8 B6 m7 C}
+ W+ @( |" c9 q- Ajavascript代码:. G* v. i* J" k
javascript code复制内容到剪贴板
4 A( W' e4 P9 S5 O2 ?- `var imgiputhandler={ ( t8 w" R- Y8 y8 ?- p
facepath:[
" h2 c4 m: `) L5 D0 ]7 K" y5 ~{facename:微笑,facepath:0_微笑.gif}, $ w3 I( j+ p8 D
{facename:撇嘴,facepath:1_撇嘴.gif},
1 }4 `8 @. W( Y{facename:色,facepath:2_色.gif},
0 Y5 ]" b* v; F$ @: o% j{facename:发呆,facepath:3_发呆.gif},
; q$ t; E' R3 m8 S{facename:得意,facepath:4_得意.gif}, 9 e( j+ O, o- A
{facename:流泪,facepath:5_流泪.gif},
/ i0 y* [6 X, q) W; I8 ]$ D1 g{facename:害羞,facepath:6_害羞.gif},
4 p7 J1 m  M5 h6 d  G9 F  c' z+ y{facename:闭嘴,facepath:7_闭嘴.gif},
% a8 E2 ]: ?6 k5 J" R{facename:大哭,facepath:9_大哭.gif}, % f; ^% l8 k8 L" E
{facename:尴尬,facepath:10_尴尬.gif}, ; K, F# @5 Z9 R. ^* W9 m" i
{facename:发怒,facepath:11_发怒.gif}, % d* e) z0 o' \/ f3 \
{facename:调皮,facepath:12_调皮.gif},
. t2 K& s! o  c: d  F{facename:龇牙,facepath:13_龇牙.gif}, * Y) ]( h% g4 T
{facename:惊讶,facepath:14_惊讶.gif}, % u# M: P* X4 U$ `+ P) J+ n
{facename:难过,facepath:15_难过.gif},
7 z7 a, \+ ~# ]2 X{facename:酷,facepath:16_酷.gif},
- C* n& }9 T8 R1 D, |4 G{facename:冷汗,facepath:17_冷汗.gif},
2 ?. L" A0 K5 y* a{facename:抓狂,facepath:18_抓狂.gif}, . q7 h) f% i3 E: T
{facename:吐,facepath:19_吐.gif},
' T7 u! k. ]1 P$ B9 r+ G$ a: N{facename:偷笑,facepath:20_偷笑.gif},
; K0 ~1 S: W) B. ]{facename:可爱,facepath:21_可爱.gif},
- `' b- U% J  ~- K! m{facename:白眼,facepath:22_白眼.gif},
  i+ T3 ^$ W# z{facename:傲慢,facepath:23_傲慢.gif}, ' \4 p6 @3 |6 z2 K" z+ f6 K
{facename:饥饿,facepath:24_饥饿.gif}, ( k! L  O7 _( L$ C2 \" u
{facename:困,facepath:25_困.gif}, # v  u7 {* A8 B( I8 g5 {9 c
{facename:惊恐,facepath:26_惊恐.gif}, : h7 u. ]: E5 |$ Q: K" n; a8 D
{facename:流汗,facepath:27_流汗.gif}, 9 U" `: ^0 [" m9 ?  q4 M9 D9 g) T
{facename:憨笑,facepath:28_憨笑.gif},
) h' a' K4 l' [) s: J7 x- n{facename:大兵,facepath:29_大兵.gif},
5 U. v- h+ `! g8 m4 s4 G) J0 M& z{facename:奋斗,facepath:30_奋斗.gif}, ! k3 E( ~8 k( l1 T. u  x
{facename:咒骂,facepath:31_咒骂.gif}, : l4 k# O( m( O" o; o6 V( _
{facename:疑问,facepath:32_疑问.gif},
( G# @& V2 `& F$ n4 {% Q' h: D{facename:嘘,facepath:33_嘘.gif},
* @* t$ r$ c" c( m! N; \{facename:晕,facepath:34_晕.gif},
8 P% w" y& x) k{facename:折磨,facepath:35_折磨.gif},
- n9 d6 Z6 ~, \5 V$ m0 K{facename:衰,facepath:36_衰.gif}, 2 s& C7 v: V" C" Y1 o0 H
{facename:骷髅,facepath:37_骷髅.gif}, " z. e! a3 l! S3 `# u
{facename:敲打,facepath:38_敲打.gif}, $ a$ E7 ^0 B: Z1 A
{facename:再见,facepath:39_再见.gif},
/ K! N4 b6 ~3 i9 L$ M{facename:擦汗,facepath:40_擦汗.gif}, ( ]# ]6 ~# v& Z
& R, o) x) H+ U2 [* ]
{facename:抠鼻,facepath:41_抠鼻.gif},   n! p* G: B: P3 E# I7 s
{facename:鼓掌,facepath:42_鼓掌.gif},
% |: B6 d2 z+ r. k{facename:糗大了,facepath:43_糗大了.gif},
0 g! g. a2 S9 e5 ?* Q, l" {' S{facename:坏笑,facepath:44_坏笑.gif}, 5 S* P# s7 z2 b! T3 o* f
{facename:左哼哼,facepath:45_左哼哼.gif}, 5 t: c- u) B2 t" z
{facename:右哼哼,facepath:46_右哼哼.gif}, 0 K' J# b- }+ p) b. h8 r$ l1 g$ [
{facename:哈欠,facepath:47_哈欠.gif}, ! E! Y4 Y' W8 t2 u
{facename:鄙视,facepath:48_鄙视.gif},
8 K7 i( K( i  \/ o( D1 r2 @+ V/ t! w{facename:委屈,facepath:49_委屈.gif}, 0 g( L0 j% ]7 n4 g! U
{facename:快哭了,facepath:50_快哭了.gif}, " V! }: ~0 t0 @% F" f# d
{facename:阴险,facepath:51_阴险.gif},
+ y- k5 _9 F( }+ ?{facename:亲亲,facepath:52_亲亲.gif},
7 R* b) S8 m% w7 n! r: x{facename:吓,facepath:53_吓.gif},
3 M* ^! q% g" K% l9 ?; `# C! P7 @{facename:可怜,facepath:54_可怜.gif}, ! x* q9 q$ |7 y5 u& t7 D- m
{facename:菜刀,facepath:55_菜刀.gif}, / p2 f2 \* ?  F) z  ]: o
{facename:西瓜,facepath:56_西瓜.gif},
2 n: d6 D# o4 a) w, o! E) @5 h{facename:啤酒,facepath:57_啤酒.gif},
$ O4 V4 }; X( j; _" g{facename:篮球,facepath:58_篮球.gif},
& j# k1 M1 F4 C# S8 B{facename:乒乓,facepath:59_乒乓.gif}, 2 g2 D3 d# Z8 m0 O( W" f
{facename:拥抱,facepath:78_拥抱.gif}, ( ]% C$ R& o% q8 ]  \
{facename:握手,facepath:81_握手.gif},
; j  ^  p3 w8 _! q! ~{facename:得意地笑,facepath:得意地笑.gif}, 7 t8 r1 i9 I- T0 K
{facename:听音乐,facepath:听音乐.gif} 4 m  A# r0 T5 O+ y/ y* w
]
/ b3 ~, d% X% e& o4 Y5 ^' U5 V,
! P3 J3 Y' D3 n- L* Winit:function(){ 3 D& N8 m: B6 t5 I# \+ x. e
var isshowimg=false; 4 O( t# F4 d9 A" R1 L- _, N
$(.input_text).focusout(function(){ 9 {/ N. X& N+ }! v3 x1 T% D3 E& o
$(this).parent().css(border-color, #cccccc); 6 }- [# L. Q5 m
$(this).parent().css(box-shadow, none);
. C5 B: Y# R# W3 N' p$(this).parent().css(-moz-box-shadow, none); 9 O- Z: V8 _5 P* ]' E$ F3 c3 e
$(this).parent().css(-webkit-box-shadow, none);
+ ~9 R) L" d) p4 N4 I/ o* V) n}); ( e2 {- i0 a0 j8 J
$(.input_text).focus(function(){
( ?6 |& r0 U6 P  O$ u$(this).parent().css(border-color, rgba(19,105,172,.75)); 9 |' L' P+ J% o- T# p1 j
$(this).parent().css(box-shadow, 0 0 3px rgba(19,105,192,.5));   |& l. u) R- f5 g
$(this).parent().css(-moz-box-shadow, 0 0 3px rgba(241,39,232,.5));
9 g5 O8 E) v% }+ R: x/ I2 h5 Z" A$(this).parent().css(-webkit-box-shadow, 0 0 3px rgba(19,105,252,3)); 0 g' V0 E- ~0 X; y& @( h1 s4 d$ L
});
# \6 q7 ]% c- Q& ?/ O: w- G' ?$(.imgbtn).click(function(){
% g$ ?0 ]* b) H1 vif(isshowimg==false){ 7 M5 L; P2 W0 _6 X: u' A' p
isshowimg=true;
: B5 O& w! H- d/ s; j7 @$(this).parent().prev().animate({margintop:-125px},300);
; @' M5 E# m- g/ Pif($(.facediv).children().length==0){
% ^6 I$ w$ W. D! Q& N% y0 Gfor(var i=0;i<imgiputhandler.facepath.length;i ){ 2 `# e" g4 ?( s- N
$(.facediv).append(<img title=\ imgiputhandler.facepath.facename \ src=\face/ imgiputhandler.facepath.facepath \ />); - E. U$ m5 H* y- l+ Y
}
" S0 f" Z( c4 t5 _" t% Z( j$(.facediv>img).click(function(){ ' v3 O- ]- Z! o3 y- [5 j* O3 m

4 j, x/ e7 N: n& V+ p  q' _isshowimg=false;
) w( d/ Q$ Q( ]. f3 T0 y3 i! N$(this).parent().animate({margintop:0px},300);
% l, a+ _3 O, b7 g3 \imgiputhandler.insertatcursor($(.input_text)[0],[ $(this).attr(title) ]); ' {7 C9 l0 z: C. j* w# O: u
});
. C5 ?8 E' H& v8 V* {}
# H  e4 z4 H+ H' ~}else{
  d! \2 e! Y, @isshowimg=false;
7 N. o$ q4 F: p9 z" {$(this).parent().prev().animate({margintop:0px},300);
2 d7 x/ E# d' j2 ]6 q% }} ! b- k7 ~+ W9 n* m( h+ n+ m
}); 7 r4 m- B$ F7 j' U  l* n- A
$(.postbtn).click(function(){ 7 f: o! i2 O- b4 C2 |% o5 Y
alert($(.input_text).val());
  Y* s. U( b: e. C0 P5 K9 o2 C! m}); + k$ U( ]; ]/ G( X+ Q
},
/ ?4 K- y5 e; r; ]' L5 i! yinsertatcursor:function(myfield, myvalue) {
4 W! B: c  ~! @5 {# d) Oif (document.selection) {
( F, m5 y% G* ?myfield.focus();
+ r4 K4 C# D- U8 p7 Q/ U. l( L& osel = document.selection.createrange(); 3 ]" H  h' Z. G
sel.text = myvalue;   D% x9 X( t% s: _
sel.select(); 0 B: f. X) r* L+ v" @
} else if (myfield.selectionstart || myfield.selectionstart == 0) { & Q9 G* E1 A/ ^  i& a/ p: z% o8 }
var startpos = myfield.selectionstart; - b9 b+ d, h: m" e/ s
var endpos = myfield.selectionend;
1 r/ P% A/ j9 Q1 `  pvar restoretop = myfield.scrolltop; 9 y) L; |' `( J
myfield.value = myfield.value.substring(0, startpos) myvalue myfield.value.substring(endpos, myfield.value.length);   N& p  E8 t2 V% `- L8 S5 N; P
if (restoretop > 0) {
9 O' ]) _$ q; A; }1 h2 P& amyfield.scrolltop = restoretop;
2 R0 h* T" M1 o# l$ a6 g}
8 _/ A4 `$ i6 c6 O9 L) n$ E1 Nmyfield.focus(); ; k* b% a+ ^5 D  f" l
myfield.selectionstart = startpos myvalue.length; $ Q/ q3 `& s% l5 Q) i
myfield.selectionend = startpos myvalue.length; # m' K. L4 y) Z- O( Y
} else {
+ P9 x8 [, c0 o1 Mmyfield.value = myvalue;
& U; e0 C0 y- D, A, F1 K, Mmyfield.focus();
; x" @  [6 L0 G8 |3 e/ k( y. h}
/ W7 D# o& q& h& J. C4 Q! i} ) H7 ]' {" J$ y5 u9 }0 n
}
/ o$ @$ R! v7 L/ {: H5 E2 q9 ~" r  `7 L0 y  ~  g, U& {+ u/ X
, i5 K9 l# c  }/ ?; [' 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客服 返回顶部
快速回复 返回顶部 返回列表