【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景)

这篇具有很好参考价值的文章主要介绍了【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

API参考文档:

  • contenteditable : https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/contenteditable
  • resize :https://developer.mozilla.org/zh-CN/docs/Web/CSS/resize

一、实现 Input 组件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div {
				padding: 5px;
				overflow: auto;
				border: 1px solid #d9d9d9;
				outline: 0;
			}

			/* 输入框为空时显示 placeholder */
			div:empty:before {
				content: attr(placeholder);
				color: #bfbfbf;
			}

			/* 输入框获取焦点时移除 placeholder */
			div:focus:before {
				content: none;
			}
		</style>
	</head>
	<body>
		<!-- contenteditable="true" 属性,使 div 元素变成用户可编辑  -->
		<div contenteditable="true" placeholder="请输入内容" onkeydown="myFunction()"></div>
	</body>
	<script type="text/javascript">
		// 禁止回车换行
		function myFunction() {
			if (window.event && window.event.keyCode == 13) {
				window.event.returnValue = false;
			}
		}
	</script>
</html>

【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景),工作随记,html,前端,contenteditable

  • 不禁止回车换行就会变成这个样子:

【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景),工作随记,html,前端,contenteditable

二、实现 Textarea 组件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div {
				resize: both;
				padding: 5px;
				overflow: auto;
				border: 1px solid #d9d9d9;
				height: 100px;
				outline: 0;
			}

			/* 输入框为空时显示 placeholder */
			div:empty:before {
				content: attr(placeholder);
				color: #bfbfbf;
			}

			/* 输入框获取焦点时移除 placeholder */
			div:focus:before {
				content: none;
			}
		</style>
	</head>
	<body>
		<!-- contenteditable="true" 属性,使 div 元素变成用户可编辑  -->
		<div contenteditable="true" placeholder="请输入内容"></div>
	</body>
	<script type="text/javascript">
	</script>
</html>

【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景),工作随记,html,前端,contenteditable
【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景),工作随记,html,前端,contenteditable

三、React 实践案例

react 使 多行文本输入框 里面的原有文案,与生成后的推理文案,用颜色区分开来

  • 效果图:

【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景),工作随记,html,前端,contenteditable文章来源地址https://www.toymoban.com/news/detail-543313.html

  • 代码实现:

import { Button } from 'antd';
import {  useState } from 'react';

export default function ({ dataset }) {
  const [textArea, setTextArea] = useState('');
  const [textAreaDiv, setTextAreaDiv] = useState('');
  const [loading, setLoading] = useState(false);


  const fetchInfer = async () => {
    const title = document.getElementById('contentEditableSpanTitle')?.innerHTML ?? '';
    const data = document.getElementById('contentEditableSpanData')?.innerHTML ?? '';
    const params = { inputs: `${title}${data}` };
    console.log('params = ', title, '---', data);
    setLoading(true);
    try {
      const data = await api(params);
      setTextAreaDiv(data.replace(title, ''));
    } catch (error) {}
    setLoading(false);
  };

  return (
    <div>
      <div
        style={{
          resize: 'both',
          overflow: 'auto',
          padding: '5px',
          border: '1px solid #d9d9d9',
          minHeight: '100px',
        }}
      >
        <span id="contentEditableSpanTitle" contentEditable="true" style={{ border: 0, outline: 0 }}>
          {textArea}
          <span id="contentEditableSpanData" contentEditable="true" style={{ border: 0, outline: 0, color: '#2563eb' }}>
          	{textAreaDiv}
          </span>
        </span>
      </div>
      <Button onClick={fetchInfer} loading={loading} style={{ margin: '10px 0' }}>
        Compute
      </Button>
    </div>
  );
}

到了这里,关于【HTML】使用 div 自定义实现 input、textarea 输入框(适合定制化场景)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • div标签改写textarea,实现部分文本内容标红

    示例 div本来是没有focus和blur事件的,正常情况下无法获得焦点,解决方案如下: 如果用div来模拟一个texarea标签,同时需要它和texarea一样响应focus和blur事件,就需要给他加上attribute:tabindex; 只要元素的tabIndex属性设置成任何有效的整数那么该元素就能取得焦点。元素在取得

    2024年01月17日
    浏览(39)
  • 解决uni-app微信小程序input,textarea输入框在底部时,键盘弹起页面整体上移问题

    问题是这样的input ,textarea获取焦点时会自动调起手机键盘,设置 :adjust-position=“true”,和不设置都会导致键盘弹起时页面整体上移 问题分析 input 获取焦点时会自动调起手机键盘,设置 :adjust-position=“true”,会导致键盘弹起时页面整体上移 思路: 设置使键盘弹起使页面不

    2024年02月11日
    浏览(67)
  • html中如何给input输入框这个一个默认值

    在HTML中,要给 input 输入框设置一个默认值,你可以使用 value 属性。下面是一个简单的例子,展示了如何为一个文本输入框设置一个默认值: 在这个例子中, input 元素的 type 属性设置为 text ,表示这是一个文本输入框。 value 属性被设置为 这是默认值 ,这意味着当页面加载

    2024年02月21日
    浏览(40)
  • 前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input

    前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input, 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法 HTML代码实现部分

    2024年02月10日
    浏览(51)
  • js监听input输入事件及使用防抖封装函数处理的实现

    循序渐进: 1.实现input框的输入监听事件: 2.防抖函数 防抖函数的目的:为了限制函数的执行频率而出现,优化解决函数触发频率过高导致延迟及假死卡顿等bug的出现。大多用在查询和提交功能上。 设置时间内多次点击或者输入只会执行最后一次点击或者输入; 代码: 3.i

    2024年02月12日
    浏览(40)
  • vue自定义rules,对input表单输入框校验重复值

    对input表单输入框检验重复值,如对如下图参数名进行校验重复值  el-form-item添加属性:rules=\\\"rules.paramname\\\" 1.写一个rules 2.Method里面添加如下方法 rule:指的是表单中rules属性 value:指的表单输入框中输入的值 callback:回调函数(再次调用校验函数)

    2024年02月11日
    浏览(41)
  • 解决:element ui表格表头自定义输入框单元格el-input不能输入问题

    表格表头如图所示,有 40-45,45-50 数据,且以输入框形式呈现,现想修改其数据或点击右侧加号增加新数据编辑。结果不能输入,部分代码如下 我看在这一块 template 中不需要用到 scope 去获取数据,于是没有加上 slot-scope=\\\"scope\\\" 结果不能输入,解决方法就是在表头自定义时将

    2024年02月03日
    浏览(55)
  • Selenium4+python被单独定义<div>的动态输入框和二级下拉框要怎么定位?

    今天在做练习题的时候,发现几个问题捣鼓了好久,写下这篇来记录   对于这种拥有二级框的选项无法定位,也不是select属性. 我们查看下HTML,发现它是被单独封装在body内拥有动态属性的独立div,当窗口点击的时候才会触发.     这个日历和上一个问题一样,也是被单独封装在最后的

    2024年02月05日
    浏览(40)
  • 设置<el-input type=“textarea“/>高度

    .el-textarea{     height:88px;     :deep(.el-textarea__inner){         height: 88px;     } } :deep(.el-input__wrapper){     font-size: 14px;     width:100%;     height:32px; } :deep(.el-form-item.is-required:not(.is-no-asterisk).asterisk-left.el-form-item__label:before) {     content: \\\"*\\\";     color: var(--el-color-primary);    

    2024年02月04日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包