仅将样式应用于空输入/文本区域

Joe*_*e50 5 html css forms

我想知道是否可以仅将样式应用于空文本区域。作为一个最小的示例,我想要一个评论框,当用户单击它时展开(:focus),但当用户输入文本时保持展开状态,但当该框为空时重新折叠。

我已经尝试过了:empty,但这不适用于输入/文本区域(仅限 DOM 元素)。

#comments {
  width: 150px;
  height: 30px;
  font-family: sans-serif;
  border-radius: 5px;
  outline:none;
  -webkit-transition: all 1s;
  -moz-transition: all 1s;
  transition: all 1s;
}

#comments:not(:empty),
#comments:focus {
  width: 250px;
  height:100px;
  border-radius: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<textarea type="text" id="comments" placeholder="Place a comment"></textarea>
Run Code Online (Sandbox Code Playgroud)

当用户在其中输入内容时,有什么方法可以使输入保持很大吗?

Ric*_*der 0

据我所知,:empty仍然是一个工作草案,您使用的特定浏览器可能不支持。

一个快速的 JavaScript 解决方案是根据文本区域是否有值来添加/删除 HTML 类。

.empty{/*styles go here*/}
Run Code Online (Sandbox Code Playgroud)

还有你的 JavaScript:

textareaElement.addEventListener('input',function(){
    if(this.value && this.classList.contains("empty")) this.classList.remove("empty");
    else this.classList.add("empty");
},false);
Run Code Online (Sandbox Code Playgroud)

有关 Element.classList 的更多信息可以在MDN上找到。