contenteditable是html的一个全局属性,可以大致理解为"可以使一个元素处于可编辑状态",像极了textarea,不过还是存在许多不足跟问题,比如没有change钩子等,本文不作深入探讨❌

01

开胃

使一个div可以进行内容编辑:

contenteditable>点击我进行编辑

乍一看,好像很普通,但是它可以解决一个textarea的一个痛点,那就是可以自适应高度,textarea可不行 ❕

02

正菜

假如... 把该属性加在style元素上呢?,是不是就可以在页面上直接编写样式并且自带"热更新"?因此有如下代码:

>
   html {
     background-color: #f1f1f1;
   }
 

然后激动的切到页面上看效果,发现空空如也:

经过一番研究,想要在页面上编辑style元素,必须要满足以下两点:

  • style元素必须放在body元素内

  • style元素要设置display: block;

于是代码变成了这样:

>
   html {
     background-color: #fff;
   }
 body>

于是就有了以下场景:

03

缺点

存在的缺点很明显,我也很刻意的去避开,那就是代码无法换行,因为回车后,内容会新增div元素,破坏了原有的文本结构:

04

解决

网上冲浪查资料后,发现了一个css属性 - user-modify,可取值为以下四个:

  • read-only

  • read-write

  • write-only

  • read-write-plaintext-only

我们取第四个值就行,定义内容只可输入纯文本,因此回车也就不会产生div?

document.title = "user-modify跟style标签可真是天生一对?";

改造后的代码如下:

style="display: block; -webkit-user-modify: read-write-plaintext-only;">
 html {
   background-color: #fff;
 }

于是就有了以下场景:

细心的人又发现了,我又刻意的不输入Tab制表符,是的没错,因为按Tab键会跳焦(失去焦点)!所以应该需要用脚本去处理,具体网上冲浪一大堆哈 ?

05

总结

麦当劳的家有金桶挺好吃的

06

往期推荐

css掩人耳目式海浪动效,这可能是最简单的实现方式了吧?

07最后本文到此结束,希望以上内容对你有些许帮助,如若喜欢请记得在右下角点个在看跟关注?微信公众号「不会写前端」,将不定时更新最新、实用的前端技巧/技术性文章,欢迎关注 ?

div contenteditable 换行_contenteditable跟style标签可真是天生一对相关推荐

  1. python爬取疫情信息html.xpath p标签_python xpath 如何过滤div中的script和style标签

    爬取一个页面中的div,想获取div中的文字,我是这么写的: selector.xpath('//div[@class="text-con"]').xpath('string(.) ...

  2. 控制两个div不换行

    控制两个div不换行 <html> <head> <style type="text/css"> #row1 { float: left; wi ...

  3. vue 在style标签中引入js变量控制样式

    START 如果希望元素的样式根据js代码去控制,常见的办法呢,是在元素的style属性绑定变量即可 例如 <h3 :style="{ color: colorList[0] }&qu ...

  4. 如何让多个div不换行

    前几天做项目遇到一个小问题,如何让多个div不换行. 现在把解决的办法记录下来(通过white-space解决的) 请看下面这段代码 <!doctype html> <html la ...

  5. .vue文件中style标签的几个标识符

    .vue文件中style标签的几个标识符 在人生就要绝望的时候, 被编辑器所提示的一个scopedSlots所拯救. 卧槽, 写到最后才发现这个属性的具体卵用. 详情见最后解决办法. 问题背景 问题由 ...

  6. 深入了解style标签元素

    <style>标签元素是一种"metadata"(元数据),它的主要作用是为文档中的元素提供样式.我们通过使用这个标签在HMTL文档中嵌入样式,而不是通过它来引用外部样 ...

  7. style标签上的scoped属性

    vue中 在vue文件中的style标签上有一个特殊的属性:scoped(布尔值): <style scoped> </style> 作用 该属性的作用是将当前标签下的样式私有 ...

  8. style 标签属性 scoped 的作用和原理

    在vue项目里面经常在页面下面的 style 标签上面加上 scoped 属性,对于这个 scoped 属性的了解做一下介绍. 1.作用 当 style 标签里面有 scoped 属性时,它的css只 ...

  9. html 换行字体,div字体换行

    div里面文字不自动换行谁能告诉我,我照着视频教学写的,为什么视频里面在#div1中加入 以下代码 word-wrap:break-word;允许长单词换行到下一行: div 字体换行 高度怎么控制 ...

最新文章

  1. Python 基础(6)(常用数据结构)
  2. Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行
  3. PHP.ini的register_globals参数
  4. 【Flask】ORM高级操作之排序和分页操作
  5. Python - 字符串
  6. Fanout交换器-搭建环境
  7. API---有意思的API
  8. 说实话,用完Gradle之后,有点嫌弃Maven了。贼好用!
  9. 《Python编程从入门到实践》第9章类动手试一试答案(附代码)
  10. 2017-2018-1 20155339 《信息安全系统设计基础》第三周学习总结
  11. php mysql化妆品商城计算机毕业设计网站成品
  12. 創業團隊基建工具選擇
  13. axure操作回复_Axure8.0基础教程(21-30)新手必须掌握的基础操作
  14. 项目——网络对战五子棋(Web-Gobang)
  15. 如何扩充C盘容量(在不重装系统或删除其他盘内容的条件下)
  16. 秋招 | 携程 | 携程集团2022秋招内推正式启动啦~!
  17. VMware14安装windows7的详细过程
  18. 爬虫-漫画喵的100行逆袭
  19. 用计算机弹奏体面6,抖音计算器乐谱汇总 抖音计算器按出的音乐乐谱有哪些
  20. vim替换字符串带斜杠_VI中的查找和替换

热门文章

  1. Windows服务简单实例
  2. 做了极度危险的事情各种奔忙
  3. dojochina ExtJS视频解压密码
  4. php 二维数组 根据值 找,PHP编程根据二维数组某个字段的值查找值所在的一维数组...
  5. python3档案管理程序源码_php人事档案管理系统,源码免费分享
  6. android 距离感应器控制屏幕熄灭_书房大变身!有格调的屏幕挂灯,加了它桌面秒变神仙颜值...
  7. 十大“史上最佳”自动化测试工具
  8. html新标准,HTML 5新标准将会在2022年正式发布
  9. zend 安装php 5.6,CentOS7.0+Zend Guard Loader for PHP 5.6环境搭建
  10. fiddler显示服务器IP