在基于web的HTML编辑器、la Dreamweaver和其他编辑器中显示div周围的轮廓
我正在编写一个简单的基于contenteditable的HTML编辑器,它允许用户编辑一个由他们自己的CSS(他们可以实时编辑)设计的页面,还可以做一些基本的事情,比如插入新标签、应用类等 我想要的一个特性是,可以切换div周围虚线边框的显示,这与您通常在所见即所得HTML编辑器(如Dreamweaver、Expression Web和其他许多编辑器)中看到的非常相似。(这有助于用户查看她的div,即使它们没有可见的边框。) 有什么可能的方法可以做到这一点吗?一些想法:在基于web的HTML编辑器、la Dreamweaver和其他编辑器中显示div周围的轮廓,html,css,contenteditable,Html,Css,Contenteditable,我正在编写一个简单的基于contenteditable的HTML编辑器,它允许用户编辑一个由他们自己的CSS(他们可以实时编辑)设计的页面,还可以做一些基本的事情,比如插入新标签、应用类等 我想要的一个特性是,可以切换div周围虚线边框的显示,这与您通常在所见即所得HTML编辑器(如Dreamweaver、Expression Web和其他许多编辑器)中看到的非常相似。(这有助于用户查看她的div,即使它们没有可见的边框。) 有什么可能的方法可以做到这一点吗?一些想法: 我不能简单地修改实际/现
:hover
之类的情况时- 包装器的样式必须与其子项类似,例如,宽度为
的div必须具有宽度为width:50px
(大致上)的包装器,因此我要么需要持续轮询(因为无法收到间接样式更改的通知,例如在类上)以获取对计算样式的更改(这是完全不可伸缩的),或者实现我自己的CSS引擎,该引擎运行并确定每次用户实时编辑他们的CSS时发生的更改width:50px
- 用我自己的div污染DOM是入侵性的,并且会干扰规则,例如:
或: 或许:/* these may or may not be divs */ .a > .b > .c { ... }
也许有一种方法可以自动有力地重写这些规则——以最后一个例子为例:/* immediate children of my wrappers would inherit the dotted borders */ .foo { border: inherit; }
但是,即使理论上可能,也有大量的病例需要担心,这将是相当棘手的:not(.my-dotted-border) > .foo { border: inherit; }
- 最后,也许有一种方法,即使有虚线边框,也可以折叠边距,但我不知道
提前感谢您提供的任何提示。您可以使用
轮廓
和轮廓偏移量
CSS属性来设置可编辑div的轮廓样式,因为它们不会覆盖任何现有边框(但是,如果存在任何现有轮廓,它们将覆盖任何现有轮廓)
查看此示例,了解如何实现它:你是对的,它只是另一种普通样式,与其他样式一样可以由用户指定。我现在将此答案标记为已接受,因为
outline
是(IME)在DIV上很少使用的样式,并且很容易在此处应用,但它确实被使用(Bootstrap是大纲
——对其输入元素和按钮感到满意)。
:not(.my-dotted-border) > .foo { border: inherit; }