HTML 技巧

1.用于内联编辑的 contenteditable 属性

前端常用的输入文本内容便是input与textarea,但是有一些他们有一些局限性,比如input只能输入一行,textarea虽然可以通过设置rows属性来动态调整高度,但是他们都不能存在多种格式的内容,更不能有标签一样样式了。

浏览器对于一些dom元素有一个属性contenteditable可以快速将该元素变成可编辑的输入框

html 复制代码
<div id="myInput" contenteditable="true">   
    这是一个子段落
</div>

contenteditable的缺陷

  • 样式难以控制:使用 contentEditable 属性时,用户可以自由编辑文本内容,这可能会导致样式混乱或不一致,尤其在不同浏览器之间表现可能会有所不同。
  • 操作dom困难,通过选区range操作选中区域进行修改元素来改变样式,会使编辑器内部元素结构混乱,没有一套标准,或者这套标准会一些缺陷
  • 安全性问题:开启 contentEditable 属性可能会带来安全隐患,因为用户可以插入不安全的脚本代码或其他恶意内容,从而导致跨站脚本攻击(XSS)等安全漏洞。
  • 兼容性问题:不同浏览器对 contentEditable 属性的支持程度各不相同,可能会导致页面在不同浏览器上表现不一致或出现兼容性问题。
  • 性能问题:当页面中有大量元素设置为可编辑时,可能会影响页面的性能,导致页面加载缓慢或卡顿。
  • 可访问性问题:对于一些特殊用户群体(如视力受损或使用辅助技术的用户),contentEditable 可能会影响页面的可访问性,导致他们无法正常使用页面。

市面上的很多编辑器其实就是基于contenteditable的属性封装改编的。

2. <input>属性

当用户在填写表格时,要确保他们提供了正确的信息。与其编写大量 JavaScript 代码,HTML5 有内置的方法可以检查这一点。可以使用 required、pattern 或 type="email" 等属性。

html 复制代码
<form>
  <input type="email" required placeholder="Enter your email">
  <input type="text" pattern="[A-Za-z]+" title="Only letters allowed">
</form>

3.隐藏属性

有时,想隐藏页面上的某些内容,但又不想删除它。

html 复制代码
<div hidden>这是隐藏的内容。。。</div>

4.inputmode 属性

通过 inputmode 属性,可以控制用户在移动设备上输入时看到的键盘。例如,如果想让用户输入数字,就可以确保他们获得数字键盘。

html 复制代码
<input type="text" inputmode="numeric" placeholder="仅支持输入数字">
  • "none"无虚拟键盘。在应用程序或者站点需要实现自己的键盘输入控件时很有用。
  • "text"使用用户本地区域设置的标准文本输入键盘。
  • "decimal"小数输入键盘,包含数字和分隔符(通常是" . "或者" , "),设备可能也可能不显示减号键。
  • "numeric"数字输入键盘,所需要的就是 0 到 9 的数字,设备可能也可能不显示减号键。
  • "tel"电话输入键盘,包含 0 到 9 的数字、星号(*)和井号(#)键。表单输入里面的电话输入通常应该使用 <input type="tel"> 。
  • "search"为搜索输入优化的虚拟键盘,比如,返回键可能被重新标记为"搜索",也可能还有其他的优化。
  • "email"为邮件地址输入优化的虚拟键盘,通常包含"@"符号和其他优化。表单里面的邮件地址输入应该使用 <input type="email"> 。
  • "url"为网址输入优化的虚拟键盘,比如,"/"键会更加明显、历史记录访问等。表单里面的网址输入通常应该使用 <input type="url"> 。
  • 如果没有设置这个属性,它的默认值是 "text",表明使用本地的标准文本输入键盘。

5. <datalist> 元素

  • <datalist> 标签为 <input> 元素规定预定义选项的列表。
  • <datalist> 标签用于为 <input> 元素提供"自动完成"功能。用户在输入数据时,将看到预定义选项的下拉列表。
  • <datalist> 元素的 id 属性必须等于 <input> 元素的 list 属性(这会把它们绑定在一起)。
html 复制代码
<label for="browser">请从列表中选择您的浏览器:</label>
<input list="browsers" name="browser" id="browser">

<datalist id="browsers">
  <option value="Edge">
  <option value="Firefox">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>

6.控制浏览器行为的 http-equiv 属性

html 复制代码
<meta http-equiv="refresh" content="30">

让页面自己刷新,比如在新闻或天气网站上

相关推荐
LHX sir28 分钟前
什么是UIOTOS?
前端·前端框架·编辑器·团队开发·个人开发·web
Gazer_S36 分钟前
【前端状态管理技术解析:Redux 与 Vue 生态对比】
前端·javascript·vue.js
小光学长1 小时前
基于Vue的图书馆座位预约系统6emrqhc8(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
Y学院1 小时前
vue的组件通信
前端·javascript·vue.js
PairsNightRain1 小时前
React Concurrent Mode 是什么?怎么使用?
前端·react.js·前端框架
小岛前端1 小时前
React 剧变!
前端·react.js·前端框架
teeeeeeemo1 小时前
Webpack 模块联邦(Module Federation)
开发语言·前端·javascript·笔记·webpack·node.js
岁月宁静2 小时前
AI聊天系统 实战:打造优雅的聊天记录复制与批量下载功能
前端·vue.js·人工智能
小小弯_Shelby2 小时前
uniApp App内嵌H5打开内部链接,返回手势(左滑右滑页面)会直接关闭H5项目
前端·uni-app
IT_陈寒2 小时前
SpringBoot性能飞跃:5个关键优化让你的应用吞吐量提升300%
前端·人工智能·后端