CSS:通过textarea的动态高度

时间:2017-07-18 03:28:24

标签: html css modal-dialog textarea containers

当拖动/调整textarea时,如何使模态容器适应大小?这是一种模式。目前,当我调整textarea的大小时,它会从容器溢出。

以下是我的CSS和HTML:

 this.items = af.list('/test');
   this.items.subscribe(value=> {
        console.log(this.items);
    });
.dialog-box {
    position: absolute;
    width: 100%;
    height: 100%;
    top:0;
    left:0;
    z-index: 1000;
}
.dimmer {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    top:0;
    left:0;
    z-index: -1;
}
.container{
    background-color: #fff;
    width: 600px;
    height: 460px;
    position: absolute;
    border-radius: 5px;
    top:0;
    right:0;
    bottom:0;
    left:0;
    margin: auto;
    border: 1px solid #ebebeb;
    padding: 20px;
    align-items: center;
    z-index: 1;
}

2 个答案:

答案 0 :(得分:1)

看看你是否想要这样的东西......



.dialog-box {
  
  width: 100%;
  height: 100%; 
  /* become a flex-container */
  display: flex;
  /* center flex-items vertically */ 
  align-items: center;
  /* center flex-items horizontally */
  justify-content: center;
}

.dimmer {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  top: 0;
  left: 0;
  z-index: -1;
}

.container {
  background-color: #fff;
  /* take size of content */
  display: inline-block;
  /* setting minimum size */
  min-width: 600px;
  max-width: calc(100% - 30px);
  min-height: 400px;
  max-height: calc(100% -30px);
  border-radius: 5px;
  border: 1px solid #ebebeb;
  padding: 20px;
  z-index: 1;
  margin: 30px;
}
.remark{
  max-height:70vh;
  max-width:60vw;
}

<div class="dialog-box" *ngIf="showDialogBox">
  <div class="dimmer" (click)="hide()"></div>
  <div class="container">
    <h3>
        <ng-content></ng-content>
    </h3>
    <form class="ui form" [formGroup]="dialogForm" novalidate>
      <div class="field required">
        <label>Name</label>
        <input type="text" class="name" formControlName="name" placeholder="Enter Name..." maxlength="100" required/>
      </div>
      <div class="field">
        <label>Remarks</label>
        <textarea class="remark" formControlName="remark" placeholder="Enter Remarks..." maxlength="1000"></textarea>
      </div>
    </form>
    <ng-content select="[action]"></ng-content>
  </div>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以更改以下内容:

  • display: inline-block设置container以获取内容的大小。并将width: 600pxheight: 400px替换为min-width: 600pxmin-height: 400px
  • container无需绝对定位。对于居中,您可以在此处使用flexbox。

演示:

.dialog-box {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: 1000;
  /* become a flex-container */
  display: flex;
  /* center flex-items vertically */ 
  align-items: center;
  /* center flex-items horizontally */
  justify-content: center;
}

.dimmer {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  top: 0;
  left: 0;
  z-index: -1;
}

.container {
  background-color: #fff;
  /* take size of content */
  display: inline-block;
  /* setting minimum size */
  min-width: 600px;
  min-height: 400px;
  border-radius: 5px;
  border: 1px solid #ebebeb;
  padding: 20px;
  z-index: 1;
}
<div class="dialog-box" *ngIf="showDialogBox">
  <div class="dimmer" (click)="hide()"></div>
  <div class="container">
    <h3>
        <ng-content></ng-content>
    </h3>
    <form class="ui form" [formGroup]="dialogForm" novalidate>
      <div class="field required">
        <label>Name</label>
        <input type="text" class="name" formControlName="name" placeholder="Enter Name..." maxlength="100" required/>
      </div>
      <div class="field">
        <label>Remarks</label>
        <textarea class="remark" formControlName="remark" placeholder="Enter Remarks..." maxlength="1000"></textarea>
      </div>
    </form>
    <ng-content select="[action]"></ng-content>
  </div>
</div>