gpt4 book ai didi

html - 具有可变内容和窗口宽度的 CSS 左浮动

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:46 26 4
gpt4 key购买 nike

我有一个可变的窗口大小和一个带有 3 个 float block 的标题。第一个是固定宽度向右浮动,第二个是固定宽度向左浮动。最后一个 (varleft) 向左浮动,内容可变。

<div id="header">
<div id="right">test</div>
<div id="left">test</div>
<div id="varleft">very long text very long text very long text very long text very long text very long text very long text very long text very long text </div>
</div>

我想防止第三个 block 在宽度增加时进入其他 block 之下,此外,我想给它一个第二行的长内容,然后用省略号截断字符串。

这些 block 是 bootstrap nav-header 的 block ,所以我只能使用 float 来移动它们。

这是增长文本的文本示例: https://jsfiddle.net/mjq2tum0/

这是我希望的结果(固定宽度和单行省略号除外): https://jsfiddle.net/o90sm39L/

最佳答案

I want to prevent this third block from going under other blocks while it grows in its width, moreover, I want to give it a second line for long content, and then truncate string with ellipsis.

这是解决方案。请注意,只有当您使用纯色背景时它才有效。

代码不仅仅是受 this awesome article 的启发

如果这对您来说不是问题:

1. 我发现使用 box-sizing: border-box; 更实用:

#header > * {
box-sizing: border-box;
}

2. 改变你的 div varleft 的宽度:

  width: calc(100% - 300px); // 100% minus the width of #right and #left

现在,您的 div varleft 不会在其他 block 下

3.varleft 添加位置和溢出:

  overflow: hidden;
position: relative;

4. 使用伪元素创建省略号 ... 并创建一个将隐藏 ... 的 div(如果没有)必要的

#varleft:before {
content: '...';
position: absolute;
right: 0;
bottom: 0;
}
#varleft:after {
content: '';
position: absolute;
right: 0;
width: 1em;
height: 40px;
background: white;
}

这是一个片段:

$(function(){
var ranchr = "A BCDE FGHI JKLMN OPQRS TUVWX YZabcd efghijklm nopqr stuvwx yz0123 456789";
setInterval(function(){
if($("#varleft").text().length>100)
$("#varleft").text("");
$("#varleft").append(ranchr.charAt(Math.floor(Math.random() * ranchr.length)));
},100);
});
#header{
border: 1px solid #000;
height: 42px;
width: 100%;
background: white;
}
#header > * {
box-sizing: border-box;
}
#right{
border: 1px solid #f00;
float: right;
width: 150px;
height: 40px;
}
#left{
border: 1px solid #0f0;
float: left;
width: 150px;
height: 40px;
}
#varleft{
border: 1px solid #00f;
float: left;
width: calc(100% - 300px);
height: 40px;
overflow: hidden;
position: relative;
}

#varleft:before {
content: '...';
position: absolute;
right: 0;
bottom: 0;
}
#varleft:after {
content: '';
position: absolute;
right: 0;
width: 1em;
height: 40px;
background: white;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="header">
<div id="right">test</div>
<div id="left">test</div>
<div id="varleft"></div>
</div>

关于html - 具有可变内容和窗口宽度的 CSS 左浮动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47606879/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com