javascript - 当父级显示 : block; 时,将子级 <div> 在父级 <div> 中垂直居中

标签 javascript html css vertical-alignment

我正在尝试将具有 contenteditable 的子 div 垂直居中,以便用户可以在父 div 的中间键入内容,因此文本需要垂直居中。

父 div 必须将它的显示设置为 block 因为我需要它的顶部和底部边框具有它的容器的最大高度,因为它将被选中调整大小事件。

我尝试过很多方法,例如 flexbox 和垂直对齐,但它们都需要我更改父级的显示属性,我看不到任何方法。如果它有效并且不太麻烦,我什至会接受 JS 解决方案。

div {
  border: 1px solid black;
  max-width: 100px;
  outline: none;
}

.parent {
  display: block;
  padding: 0;
  margin: 0;
  width: 100%;
  height: 300px;
  
}

.child {
  display: table-cell;
  height: 100%;
  width: 100%;
  max-width: 80px;
  padding: 10px;
  overflow: hidden;
  vertical-align: middle;
  text-align: center;
  white-space: pre-wrap;
  word-wrap: break-word;
}
<div class="parent" align="center">
  
  <div contenteditable=true class="child">
  </div>

</div>
  

最佳答案

一种方法是使用这些 CSS 规则:

.parent {
    display: block;
    width: 100%;
    height: 300px;
    position: relative;
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
}

查看完整解决方案: http://codepen.io/shippin/pen/yMKMpR

另请注意,您的 html 中存在一些问题:

  • contenteditable="true"上缺少引号
  • HTML5 不支持对齐属性。

关于javascript - 当父级显示 : block; 时,将子级 <div> 在父级 <div> 中垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42934841/

相关文章:

javascript - 使用代理超出最大堆栈调用大小

javascript - 如何发送带有用户输入地址的 HTML 电子邮件?

javascript - 如何获取位于页面中给定位置的 DOM 元素列表

html - 如何在同一行显示多个div标签的内容

html - 如何在 Bootstrap 中将 div 放置在背景图像上

javascript - 跨服务 Angular 共享枚举

javascript - 奇怪的行为 : IE11 + AngularJS

css - 我如何将 <div> 容器对齐到网页的中间?

html - CSS 表格边框

html - 如何在 Y 轴的 3D 中旋转 div 360?