评论回复是个很常见的东西,但是各大网站实现的方式却不尽相同。大体上有两种方式

1.

像优酷这种最常见,在输入框中@要回复的人,这种方式下,用www.cppcns.com户可以修改@。

新浪微博则是在这个基础上,弹出好友菜单。这种方式的好处是不需要任何js,css处理兼容。

2.

像qq空间这种,对回复的人整个删除。本屌感觉这种方式比较好,但这种方式有些兼容性上的细节,这个后面会详细说明。

事实上,qq空间的这种实现在效果上是兼容了ie和现代浏览器的,做的非常好。上面是chrome

ie8

ie7

ie6就不上图片了,太卡了,都懂得,最后本屌会附上最终例子的,当然也兼容http://www.cppcns.comie6。

下面就说说怎么实现的。

先看看qq空间是怎么做的

chrome

上面可以看到,qq空间是在button中加上文字,这样在删除的时候对被回复的用户名就能整个删除了。

不过这样做还不够,首先是样式,需要把button设置成inline-block,

消除button默认的透明背景,边框,当然还有padding,margin设为0

复制代码 代码如下:

button{ border: 0; background:none; }

这时在ie6,7中插入会发现,似乎还存在padding,而且还很大

所以还需要加上overflow: visible;

另外属性contenteditable设置成为false,否则光标会跳到button里面,

然后在ie8下会发现,输入的时候如果有回车,然后在依次删除的过程中,会发现button标签删不掉,光标会跑到button标签前面,而且再次按右光标键或用鼠标点击button标签右边都无法让光标跑到button标签右边。事实上,qq空间在ie8中也有这个问题

ie8

而在ie6,7下,就没有这个问题

ie7

ie6

这里针对ie8需要对文本框绑定dBryckeydown事件回调check_comment,对ie6,7绑定了也没有问题,这里就统一的对ie绑定。

function getPositionForTextArea(ctrl) { //获取光标位置

var CaretPos = 0;

if(document.selection) {

ctrl.focus();

var Sel = document.selection.createRange();

var Sel2 = Sel.duplicate();

Sel2.moveToElementText(ctrl);

var CaretPos = -1;

while(Sel2.inRange(Sel)){

Sel2.moveStart('character');

CaretPos++;

}

}else if(ctrl.selectionStart || ctrl.selectionStart == '0'){

CaretPos = ctrl.selectionStart;

}

return (CaretPos);

}

vm.check_comment=function(e,i){

var a=getPositionForTextArea($('reply'+i));

if(e.keyCode==8&&a<3){

var pat = new RegExp("^

.*?

$",'i');

if(pat.test(this.innerHTML))

this.innerHTML='';

}

};

光标位置<3表明光标前面就是button标签了,这时就可以清www.cppcns.com空输入框了。注意这里为了严谨,用正则表达式验证是不是button标签.

另外在正则表达式中button标签外包裹p标签,是因为ie在按回车换行时,会默认自动对前面的行包裹p标签。当然,一开始在输入框也要在button标签外包裹p标签。

题外话

qq空间在ff上用的是img标签

之前一直以为qq空间在现代浏览器上统一用的是img标签,写的时候才发现在chrome中用的是button标签,于是就在chrome下试了一下插入img标签,发现怎么也弄不掉边框,而且删除的时候,绑定中光标位置的判断也会和ie不一致,因为现代浏览器换行默认插入
,于是索性对chrome也用button标签。

另外在我的例子中,ff中插入button标签的话,输入框不容易获得焦点。本屌也懒得去改了,仍然是在ff中插入img标签,对应的keydown回调

if(!!-[1,]&&e.keyCode==8&&$('reply'+i).childNodes.length==2){//ff

this.innerHTML='';

retur

只用判断输入框的子节点个数就可以了。

最终效果

chrome

ff

ie8

ie7

ie6

附上例子下载

以上所述就是本文的全部内容了,希望大家能够喜欢。

本文标题: 完美实现仿QQ空间评论回复特效

本文地址: http://www.cppcns.com/ruanjian/java/124171.html

java仿qq空间音乐播放_完美实现仿QQ空间评论回复特效相关推荐

  1. java仿qq空间音乐播放_使用JS改造的简单网页音乐播放器,仿QQ空间样式

    最近有好多东西要发表分享给大家,但由于时间问题,越多反而显得越乱,都不知道从何下手,该做的事情还有很多,最近整博客,又整得有点不兼容了,在想抽个时间修复它,可能时间要比较长,因为无从下手,必须一个一个 ...

  2. Java和vue实现音乐播放器_躁!DJ 风格 Java 桌面音乐播放器

    本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 版桌面 DJ 音乐播放器. 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列 ...

  3. 仿酷狗音乐播放器开发日志——整体框架分析

    转载请说明出处,谢谢~~ 学习duilib界面库有一段时间了,除了仓鼠软件共享以外还没用它开发过什么完整的软件项目.今天看到酷狗音乐播放器做得不错,经过几年的改革,酷狗现在的UI已经相当不错了.在这个 ...

  4. 【游戏开发创新】手把手教你使用Unity制作一个高仿酷狗音乐播放器,滨崎步,旋律起,爷青回(声音可视化 | 频谱 | Audio)

    文章目录 一.前言 二.获取UI素材 三.使用UGUI制作界面 1.界面布局 2.账号圆形头像 3.搜索框 4.调节UI层 5.黑色按钮悬浮高亮效果 6.纯文字按钮 7.滚动列表自适应 8.歌名与视频 ...

  5. 仿酷狗音乐播放器已开源!

    转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/41037875 距离我发布测试版的Redrain音乐盒(仿酷狗播放器),现在正 ...

  6. Java图形用户界面设计音乐播放器

    Java图形用户界面设计音乐播放器 设计思路 音乐播放器的基础是可以播放音乐,所以要有一个实现播放音乐功能的类audioplay,图形界面就是通过动作调用audioplay里面的函数.关于实现播放器图 ...

  7. 移动应用开发——uni-app框架 仿网易云音乐播放器学习心得

    目录 一.uni-app框架介绍 1.什么是 uni-app 2.为什么要选择uni-app 3.uni-app 统一规范 4.uni-app功能框架 二.开发工具与项目创建 1.开发工具 2.项目创 ...

  8. 仿酷狗音乐播放器开发日志二十二 动态调色板控件第二版(性能大幅提升附源码)...

    转载请说明原出处,谢谢~~ 在上次写的博客<仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源码)>发布后,我在群里和网友讨论这个控件的性能和优 缺点,发现了他很多不足,还有很多提升 ...

  9. 基于Qt的仿酷狗音乐播放器设计(二)

    简述 在上一文"基于Qt的仿酷狗音乐播放器设计(一)"中,博主给出了仿酷狗界面的部分内容,在本文中将继续分析酷狗界面,并作出相应的分析. 下面我们来看一下酷狗界面中的左侧滑动页控制 ...

最新文章

  1. 漫谈Word2vec之skip-gram模型
  2. java lucene demo,lucene自带的两个demo的运行测试方法
  3. Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法
  4. Docker 的优势
  5. Android帧布局(Frame Layout)
  6. spcomm控件的使用
  7. ab plc软件_回收拆机拆厂二手机械设备回收PLC自动化物资回收【研发吧】
  8. Apache Flink 零基础入门(九)Flink支持哪些数据类型
  9. esxi命令关机虚拟机_虚拟机镜像使用说明
  10. Chrome上网问题解决记录
  11. Ruby数组(2):数组方法详细整理
  12. python之pygame,详解坦克大战
  13. 龙格库塔方法在实际生活中的应用(数值计算Java)
  14. python类似图片查找_python检测相似图片
  15. 自建公众号服务器开发教程,01-微信公众号开发入门篇
  16. CentOS Install Passenger for ROR
  17. 哲理小故事---理想和现实
  18. Kafka 中的这些设计思想值得一学!
  19. 全球及中国多普勒导航仪行业投资分析及前景预测报告2022-2028年
  20. 马斯克76岁父亲与继女生子,华强北又出一个芯片IPO,原蚂蚁副总投身AI制药,今日更多大新闻在此...

热门文章

  1. 静态编译和动态编译区别
  2. org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx
  3. 第三方软件要使用QQ邮箱进行发邮件相关设置
  4. 石化总部java面试题_中国石化面试经验
  5. php 与 python对接_关于PHP调用Python的实施以及配置
  6. index加载显示servlet数据_[WEB篇]-JavaWeb基础与应用-02-Servlet开发
  7. c语言变量相等问题穷举法,C语言穷举法经典例题.ppt
  8. 【APICloud系列|9】APICloud自定义APPloader一个月未更新,快速更新的办法
  9. easyswoole数据库连接池_如何在 Swoole 中优雅的实现 MySQL 连接池
  10. 如何用纯 CSS 创作一个文本淡入淡出的 loader 动画