html - 给一个 HTML 元素一个静态宽度,所以它不能被缩小

标签 html css flexbox

我有两个 p HTML 元素,第二个必须完整显示。如果容器无法处理这两个元素,则任何收缩都必须仅应用于第一个元素。

这两个 HTML 元素是内联的。例如,让我们假设第一个 HTML 元素由 W 表示,第二个是 Y。“| |”代表外容器。

|WWWWWWWWWWWW YYYY|,这里容器可以包含两个HTML元素,所以没有问题

|WWWWWWW... YYYY|,这里容器不能同时包含两个 HTML 元素,因此收缩仅应用于第一个元素。

请注意,第二个元素有背景颜色,因此它的宽度必须与它包含的文本完全匹配。比如你给他25%的宽度,文字只有11%,那么就会多出14%的颜色,这就是不好的设计。

我尝试使用 flex 如下:

  • 第一个元素:flex: 1 2 auto; 它比第二个元素收缩得更多。
  • 第二个元素:flex: 1 1 auto;正常收缩的地方

但是,这个解决方案失败了。

最佳答案

我相信这就是您要找的:

HTML

<div id="div1">
    <p>ABCDEFGHI</p>
    <p>XYZ</p>
</div>

<div id="div2">
   <p>ABCDEFGHI</p>
   <p>XYZ</p>
</div>

CSS

div {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: center;
}

#div1 {
    width:  100px;
}

#div2 {
    width:  200px;
}

p:nth-child(1){
    width: 65%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

p:nth-child(2){
    width: 25%;
}

关于html - 给一个 HTML 元素一个静态宽度,所以它不能被缩小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40211988/

相关文章:

javascript - jQuery 验证 - int 字段验证有时不起作用

php - javascript点击时隐藏div

css - SVG 在 Chrome 中看起来有不透明度,但实际上没有,如何解决?

css - 水平滚动在 ie7 中不起作用

javascript - 向 HTML anchor 添加多个操作

javascript - flex 元素是否有可能与它们上方的元素紧密对齐?

html - Bootstrap 和 flexbox - 在移动设备上将三个 `.col-md-3` 折叠成单列

html - 如何将 "scoreBox"内的元素水平居中?

javascript - 在 jquery 中使用日期选择器,显示今天

jquery - CSS :hover and :active with internal element