javascript - 转换 div 的高度以适应其内容
问题描述
我有一个div
用于向用户显示任何信息消息。
height
此 div 的首字母iszero
和display
is none
。当有任何消息要显示给用户时,我使用javascript
.
我将它的高度过渡div
到它给出了缓慢向下滑动的效果。0
48px
div
问题
由于height
设置为48px
,如果里面的消息很长,它不会增加它的高度以防止文本溢出。
在全尺寸浏览器窗口中显示的消息
在小浏览器窗口中显示相同的消息
问题
如何在 javascript 中设置此 div 的高度,以便调整其高度以适应其内容。
HTML
<!--used for displaying error or success message-->
<p id="info-message-block">
<span></span>
</p>
CSS
.error-msg-block,
.success-msg-block {
display: none;
background: #dc3545;
color: #fff;
border-radius: 2px;
height: 0;
font-weight: 400;
margin: 8px 0 0;
transition: height 0.6s ease-in;
overflow: hidden;
font-size: 85%;
}
.error-msg-block span,
.success-msg-block span {
display: inline-block;
padding: 12px 0 0 20px;
}
显示此信息消息的 javascript 函数
let displayInfoMessage = function (message, messageType) {
'use strict';
let messageBlock = document.querySelector('#info-message-block');
messageBlock.style.display = 'block';
messageBlock.firstElementChild.textContent = message;
if (messageType === 'error') {
messageBlock.className = 'error-msg-block';
} else {
messageBlock.className = 'success-msg-block';
}
setTimeout(function () {
messageBlock.style.height = '48px';
}, 10);
};
解决方案
如上所述,这里是使用max-height
代替的想法height
let displayInfoMessage = function(message, messageType) {
'use strict';
let messageBlock = document.querySelector('#info-message-block');
messageBlock.style.display = 'block';
messageBlock.firstElementChild.textContent = message;
if (messageType === 'error') {
messageBlock.className = 'error-msg-block';
} else {
messageBlock.className = 'success-msg-block';
}
setTimeout(function() {
messageBlock.style.maxHeight = '120px'; /*Make this value big enough to cover the worst case*/
}, 10);
};
displayInfoMessage("this is a very loooong loooong loooong loooong message for test")
body {
max-width:200px;
}
.error-msg-block,
.success-msg-block {
display: none;
background: #dc3545;
color: #fff;
border-radius: 2px;
max-height: 0;
font-weight: 400;
margin: 8px 0 0;
transition: max-height 0.6s ease-in;
overflow: hidden;
font-size: 85%;
}
.error-msg-block span,
.success-msg-block span {
display: inline-block;
padding: 12px 20px;
}
<p id="info-message-block">
<span></span>
</p>
推荐阅读
- ruby-on-rails - 无法从控制器访问强参数
- ruby-on-rails - Minitest Rails:RuntimeError:不是重定向!200 好
- python - GitHub:如何检查我是否已经拥有当前的主分支 zip?
- regex - regex_replace 在替换文本中使用模式
- vue.js - vue.js 路由正在从参数值中删除哈希(模式:历史)
- python - python numpy将1个元素添加到空矩阵
- javascript - 如何将地图信息窗口值传递给 HTML 输入表单
- android - 将视图移动到另一个视图的中心,或者移动到相对于屏幕大小的坐标
- javascript - javascript if语句多个运算符失败
- django - Django按子查询中注释的计数过滤