css Flexbox如何隐藏过长的中间元素

bihw5rsg  于 2022-11-19  发布在  其他
关注(0)|答案(3)|浏览(205)

有三个对齐的元素display: flex
我想隐藏一个中间元素,如果它太长(如果文本转到另一行),中间元素是动态的,所以有时它很短,有时它很长。
此外,这是特定于移动的屏幕大小。
我怎么能那样做呢?
第一个
如果我们可以隐藏中间的元素,如果它转到另一行,那就更好了,但是如果我们不能,我们也可以做一些事情,比如如果中间元素的宽度大于80px,我们就隐藏元素。

9w11ddsr

9w11ddsr1#

您可以隐藏溢出区,然后将标题包含在另一个Flex中,并在两侧使用占位符div。如果文本太长,它将移到下一行,无法看到。
第一个

kxe2p93d

kxe2p93d2#

我不认为你可以用纯CSS来做这件事。你需要用javascript来做这件事。检查我下面的例子。这将在中间元素的宽度小于80px时添加hide类(它有一个display: none CSS),并在宽度大于80时删除hide。要知道getBoundingClientRect()返回一个元素的bottom, top, height, width, left, right, x, y
第一个
当你在这里使用React的时候,你可能会想用useEffect来处理window.onresize()这样的效果

nnvyjq4y

nnvyjq4y3#

你可以使用useRef钩子来实现这一点,比如说你需要隐藏宽度大于80px的长文本元素,(假设该元素是<h2>元素。

import "./styles.css";
import {useRef} from "react";
export default function App() {
    const el=useRef();
  return (
    <div className="App">
      <h1>LOGO</h1>
      <h2 style={{display:el.current.getBoundingClientRect().width>80?"none":"block"}}>Start editing to see some magic happen! Long Title</h2>
      <h1>test</h1>
    </div>
  );
}

useRef挂接用于引用Dom元素,getBoundingClientRect()以浮点数形式返回元素的尺寸和位置,以及我们通过el.current.getBoundingClientRect().width访问的www.example.com的高度和宽度element.so

相关问题