其中大部分是靠scrollHeight(非W3C标准,由IE引入),keyup事件来完成。有一种比较有意思的是 通过“镜像元素(mirror element)”, 和setTimeout轮询实现。大致的实现思路如下:
把一个单独的pre元素,通过position:absolute的方式定位于client view之外,并且把它和textarea的样式设置的一样,我们把这个pre元素称为“mirror“,然后通过setTimeout进行200ms的轮询,把textarea中新的值更新到mirror元素中,由于mirror元素被设为block,所以它的大小会随内容的多少而变化,再通过取得mirror元素的offsetHeight来应用到对应的textarea,使之高度随内容变化。
这确实是个过不错的想法。但是这样的轮询似乎有点”浪费“,因为一般用户不会一直不停的进行输入, 而且每次去计算offsetHeight,也是比较耗费资源的。
既然发现了问题,那么我们就针对问题进行改进,在他人的思路上进行修改,不会太困难。
先去掉计算mirror元素offsetHeight这一操作,我们可以用个wrapper包裹mirror元素和textarea,把它们的样式设置成相同,mirror元素通过visibility:hidden进行隐藏(注意不是display:none),这样mirror元素空间依然占着, 然后把textarea相对于wrapper绝对定位,把textarea覆盖于mirror元素之上,我们的例子中就是textarea覆盖于pre之上, textarea的height,width属性均设为100%,这样pre的高度变化可以直接反应到wrapper上, textarea的大小也会随之改变, 这都是自动的,我们利用了”块级“元素的特点
针对无止境的轮询,我还是觉得用keyup来做好些,但是事件的处理上,我们可以给用户一个时间间隔,并不需要每次输入都要进行处理,例子中设置的时间间隔为250ms,当用户输入的过程中,如果用户停顿了下,有250ms间隙的话,就把textarea的value赋值给pre的span中。
思路讲完了,应该还是比较简单的。
下面是html和对应javascript(最近喜欢上mootools了),由于css篇幅较长,具体可以看页面底部的jsfiddle share.
复制代码 代码如下:
<div class="expanding-wrap">
<div class="expanding-area">
<pre class="mirror-wrap"><span class="mirror"></span><br/></pre>
<textarea class="source" cols="30" rows="10"></textarea>
</div>
</div>
复制代码 代码如下:
(function($, $$) {
var mirrorEl = $$('.expanding-area .mirror'),
textEl = $$('.expanding-area .source'),
timehandle = null,
handler = function() {
mirrorEl.set('text', textEl.get('value'));
};
handler();
textEl.addEvent('keyup', function(event) {
clearTimeout(timehandle);
timehandle = handler.delay(200);
});
})($, $$);
最后,有个参考文献,觉得不错,感兴趣的可以看看“参考”,本例子可能不支持IE6,放弃IE6有段时间了,我们做前端的,得先前看呐: D
相关推荐:
SEO趋势:2025年搜索引擎优化的未来发展,河南省营销推广系统官网
目前最火的AI软件有哪些?深度解析必备工具
“多网建站”助力企业跨越发展,开启全新数字化时代,海南网站优化电池
ChatGPT支付时银行卡被拒绝?教你几招轻松解决问题!,国内ai换图
用AI创作的文章算原创吗?深度背后的逻辑与意义
摘要AI生成:高效工作的新时代利器
AI免费生成文章让创作变得轻松自如
文章AI生成软件高效创作新纪元
SEO模板:提升网站排名,助你快速抢占搜索引擎流量高地,选择seo职业缺点
ChatGPT为什么打不开?背后原因与解决方案,慧ai写作
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,解决您的使用困扰!,ai光晕制作
ChatGPTO1Pro模型:开启AI新纪元,免费应用带来无尽可能,苹果上的ai写作在哪里
OpenPose大白话解释:让你轻松理解姿态识别的神奇技术,ai天天晴
ChatGPT与讯飞:AI语音与智能对话的完美融合,ai直角变圆角
GPT哪个模型是最新的?AI语言生成的未来,ai回头
SEO观察:2025年搜索引擎优化的新趋势与机遇,seo2是什么状态
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
今时CMS:引领数字化转型的智慧之选,河南seo优化网站联系方式
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
ChatGPT的破解版:AI世界的新突破,ai无禁忌
ChatGPT无法打开?这些解决办法让你重新畅享智能对话!,北大写作ai
ChatGPT暂时不可用?如何高效应对并寻找最佳替代方案!,logo ai教程视频
seo配置是什么,seo设置是什么 ,ai图标制作教程
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
ChatGPT当前不可用?如何应对AI服务中断的挑战,ai文章免费写作app
WP原创:打造属于你的独特网站,从这里开始!,一个网站推广一个月需要多少钱
SEO优化需要花钱吗?从零起步,如何让SEO成为企业的“隐形财富”,字体如何往ai里面倒
SEO优化引导新官网,助力企业迈向成功之路,宋轶ai换
为什么选择老域名工具?提升网站SEO与品牌影响力的秘密武器,软文与seo文章区别
ChatGPT403:引领人工智能新时代,颠覆你的工作与生活方式,ai nak
为什么选择收录网站是企业在线营销的必备策略,全网营销与推广
SEO建议:如何通过优化提升网站流量,赢得市场竞争,自媒体网站免费推广平台
SEO通过-如何通过SEO优化让你的业务在搜索引擎中脱颖而出,保定网站建设推广专家
文章AI排版,让创作更高效的秘密武器
SEO要点:提升网站排名的核心技巧与策略,福田市网站建设推广费用
ChatGPT登录界面都不显示了?可能是这些原因导致的!,上海小学ai智能课
SEO运营是什么职业,seo运营工程师招聘 ,把ai图层改横幅
SEO本站:提升网站流量与排名的秘密武器,荆门专业的抖音seo
亚马逊的seo是什么阿,亚马逊seo项目 ,中考用ai写作会判0分吗
ChatGPT点不了?背后的真相与解决方法,ai.520523
seo要懂些什么,seo主要做什么的 ,小艾艾AI
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
AI软件不用登录,让你的工作更高效轻松,智能ai写作改稿怎么改
优化平台:让数字化转型更简单、更高效,莆田谷歌seo品牌排行
SEO确实是企业增长的关键,这些技巧让你走在行业前沿,山东网站建设信息
用AI修改文章,提升写作效率与质量的新时代
未来科技:AI工具为生活赋能,打造智能未来
什么是seo快排,seo快排方案 ,ai剪图形
SEO优化做什么的?揭秘SEO优化的核心价值与实战应用,ai做金色
云推SEO:让您的网站在激烈竞争中脱颖而出,网站优化公司欢迎来电