Dom*_*nic 9 css contenteditable vertical-alignment flexbox
在OSX Chrome 45上测试,align-items: center;正在处理内容,但是如果您点击下面的空可编辑,则在您开始输入之前,插入位置不会居中.
唯一的方法是通过顶部/底部平衡填充来解决这个问题,或者有没有一种方法可以让它在没有像素移位的情况下工作?谢谢
[contenteditable="true"] {
border: 1px solid #ddd;
display: flex;
align-items: center;
min-height: 46px;
}
[contenteditable="true"]:focus {
outline: none;
}Run Code Online (Sandbox Code Playgroud)
<div contenteditable="true"></div>
<div contenteditable="true">content is centered, but caret isn't</div>Run Code Online (Sandbox Code Playgroud)
正如 James Donnelly 在评论中所说,您可以尝试在规则中添加行高,例如:
[contenteditable="true"] {
border: 1px solid #ddd;
display: flex;
align-items: center;
min-height: 46px;
line-height: 46px;
}
Run Code Online (Sandbox Code Playgroud)
不过我实际上可能会选择padding。将 添加min-height到contenteditable元素中是导致光标和输入值之间出现问题的原因。去掉min-height,问题就解决了。那么你的问题就变成了“如何在这个元素周围添加均匀的空间contenteditable?” - 这正是填充的用途:)
所以也许更像是:
[contenteditable="true"] {
border: 1px solid #ddd;
display: flex;
align-items: center;
padding: 15px 0;
}
Run Code Online (Sandbox Code Playgroud)
取决于您到底想要实现什么,以及您是否真的需要修复 div 的高度。