javascript - 如何动态定义 HTML 元素的宽度

标签 javascript jquery html css

我有一个包含两个子 div 的容器 div。容器 div 的宽度为 100%。子 div 处于 float 状态。左侧 div 的宽度未设置,因为它的内容必须决定它的宽度。右侧 div 的宽度必须是 100% 减去左侧 div 的宽度。

HTML:

<div class="container">
    <div class="message-name"><p>User :</p></div>
    <div class="message-msg"><p>Some message</p></div>
</div>
<div class="container">
    <div class="message-name"><p>User : </p></div>
    <div class="message-msg"><p>Some really long message that breaks to new line because it is too long to stay on this line. mmmm mmmmmmmmmmmmm mmmmmmmmmmmmm mmmmmmmmmmm mmmmmmmmmm mmmmmmmmm mmmmmmmmm mmmmmmmmmm mmmmmmmmmm mmmmmmmmm mmmmmmmm</p></div>
</div>

CSS:

*{margin:0;pading:0;}

.container{
    width:100%;
    min-height: 20px;
    overflow: auto;
}
.message-name{
    height: 20px;
    text-align: left;
    float: left;
    border: 1px solid red;
}
.message-msg{
    border: 1px solid red;
    min-height: 20px;
    float: left;
}

这是我尝试在动态添加到页面时使用 JQuery 动态设置右侧 div 的宽度:

$(document).ready( function(){

    var nameWidth = $(".message-name").last().width();

    alert(nameWidth);

    $(".message-msg").last().css("width","100%").width($(".message-msg").last() - nameWidth);

});

但这并没有改变任何东西。

如何获取左侧 div 的宽度,然后从右侧 div 的宽度中减去该宽度,以确保右侧 div 不会换行?

这是一个JSFiddle我的尝试。

最佳答案

使用flexbox,就是support is wide enough出于最合理的目的。

无需脚本,更加灵活!

* {
    margin:0;
    padding:0;
}

.container {
    width:100%;
    min-height: 20px;
    overflow: auto;
    display: flex;
    flex-direction: row;
}
.message-name {
    height: 20px;
    text-align: left;
    border: 1px solid red;
    flex-shrink: 0;
}
.message-msg {
    border: 1px solid red;
    min-height: 20px;
    flex-grow: 1;
    flex-shrink: 1;
}
<div class="container">
    <div class="message-name"><p>User :</p></div>
    <div class="message-msg"><p>Some message</p></div>
</div>
<div class="container">
    <div class="message-name"><p>User : </p></div>
    <div class="message-msg"><p>Some really long message that breaks to new line because it is too long to stay on this line. mmmm mmmmmmmmmmmmm mmmmmmmmmmmmm mmmmmmmmmmm mmmmmmmmmm mmmmmmmmm mmmmmmmmm mmmmmmmmmm mmmmmmmmmm mmmmmmmmm mmmmmmmm</p></div>
</div>

也在 JSFiddle

关于javascript - 如何动态定义 HTML 元素的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31659683/

相关文章:

javascript - 按类获取文本区域并动态设置名称

javascript - 图片幻灯片

javascript - Jquery根据自己的内容前置

jquery - 为什么我的 ajax 调用在 Chrome 扩展中是同步的?

javascript - 不需要的事件处理函数正在 jQuery 中执行

html - CSS 将所有内容放在底部

javascript - JSON.stringify 抛出 RangeError : Invalid string length for huge objects

javascript - 映射时嵌套数据表

jQuery 启用/禁用按钮取决于输入字段是否为空

javascript - 根据多个下拉选择值使用 javascript 或 jquery 显示隐藏的 div