原生js 实现输入框emoji表情发布

代码地址在 github地址

emogi 实现思路

  • 页面首先有一个textarea 输入框 点击发布按钮 还有一个表情图列表
  • 表情图列表其实是每一张图片在代替表情包 在这里我用了六张图片代替六个表情包
  • 点击单独的每个表情包 会把对应得表情包转有属性 添加到输入框 例如[跪了]
  • 然后点击发布的时候 进行正则匹配每个表情包属性 替换成对应得图片路径即可
  • 在这里碰到了一个问题,如何保留文本输入框的换行符空白符,
  • 我想过用正则匹配换行符空白符,然后进行替换,后来发现有一个css的属性特别好用 white-space:pre

我觉得white-space这个css属性特别好用,以前没有着重关注过,刚好在这里用到

  • white-space:normal 默认,空白会被浏览器忽略 normal表示合并空格,多个相邻空格合并成一个空格,在源码中的换行作为空格处理,只会根据容器的大小进行自动换行。 这里的空白是值空白字符,包括空格,制表符等空白字符,下面为了行文方便,统一用“空格”代表。
white-space:nowrap不换行
white-space:nowrap和normal一样,也合并空格,但是不会根据容器大小换行,表示不换行。
white-space:nowrap会导致文本不换行,经常和overflow,text-overflow一起使用
复制代码
white-space:pre保留空格不换行
white-space:pre的作用是保持源码中的空格,有几个空格算几个空格显示,同时换行只认源码中的换行和<br/>标签。
复制代码
white-space:pre-wrap保留空格换行
white-space:pre-wrap的作用是保留空格,并且除了碰到源码中的换行和<br/>会换行外,还会自适应容器的边界进行换行。
white-space:pre-wrap和white-space:pre的区别就是会自适应容器的边界进行换行。
复制代码
white-space:pre-line合并空格换行
white-space:pre-line的作用是合并空格,换行和white-space:pre-wrap一样,遇到源码中的换行和<br/>会换行,碰到容器的边界也会换
行。
复制代码
white-space属性源码空格源码换行换行容器边界换行
normal合并忽略换行换行
nowrap合并忽略换行不换行
pre保留保留换行不换行
pre-wrap保留保留换行换行
pre-line合并换行换行换行

转载于:https://juejin.im/post/5c9cd1ecf265da60d0005235

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中实现 emoji 表情选择的 View,一般可以采用以下两种方式: 1. 使用第三方库 可以使用一些开源的第三方库,如: - Emoji-Keyboard:https://github.com/rockerhieu/emojicon - EmojiEditText:https://github.com/kimoBiko/EmojiEditText - EmojiCompat:https://developer.android.com/topic/libraries/support-library/packages#emoji-compat 这些库都提供了丰富的 emoji 表情选择界面和相关的实现方法,可以方便地集成到项目中。 2. 自定义 View 如果需要更灵活地实现 emoji 表情选择的 View,可以自己实现一个自定义 View。具体实现步骤如下: 1. 准备 emoji 表情资源 首先需要准备 emoji 表情的资源,可以自己设计或者使用现成的资源。将这些资源放在项目的 res 目录下。 2. 自定义 View 自定义 View 可以继承自 LinearLayout,包含一个 EditText 和一个 GridView。 在 EditText 的右侧添加一个按钮,点击按钮时显示 emoji 表情选择的 GridView,点击表情后将表情插入到 EditText 中。 3. 实现表情选择的 GridView GridView 中的每个表情可以使用 ImageView 显示,可以通过设置表情资源的 ID 来显示不同的表情。在表情选择界面的底部可以添加一个删除按钮,点击删除按钮可以删除 EditText 中的最后一个字符或者最后一个表情。 4. 实现点击表情插入到 EditText 的功能 当用户点击 GridView 中的表情时,可以将表情插入到 EditText 中。可以通过在 EditText 中插入一个 SpannableString 来实现,其中 SpannableString 中包含了表情的资源 ID。 以上就是实现 emoji 表情选择的 View 的一般步骤,可以根据具体需求进行自定义实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值