有三个对齐的元素display: flex。我想隐藏一个中间元素,如果它太长(如果文本转到另一行),中间元素是动态的,所以有时它很短,有时它很长。此外,这是特定于移动的屏幕大小。我怎么能那样做呢?第一个如果我们可以隐藏中间的元素,如果它转到另一行,那就更好了,但是如果我们不能,我们也可以做一些事情,比如如果中间元素的宽度大于80px,我们就隐藏元素。
display: flex
9w11ddsr1#
您可以隐藏溢出区,然后将标题包含在另一个Flex中,并在两侧使用占位符div。如果文本太长,它将移到下一行,无法看到。第一个
kxe2p93d2#
我不认为你可以用纯CSS来做这件事。你需要用javascript来做这件事。检查我下面的例子。这将在中间元素的宽度小于80px时添加hide类(它有一个display: none CSS),并在宽度大于80时删除hide。要知道getBoundingClientRect()返回一个元素的bottom, top, height, width, left, right, x, y值第一个当你在这里使用React的时候,你可能会想用useEffect来处理window.onresize()这样的效果
hide
display: none
bottom, top, height, width, left, right, x, y
useEffect
window.onresize()
nnvyjq4y3#
你可以使用useRef钩子来实现这一点,比如说你需要隐藏宽度大于80px的长文本元素,(假设该元素是<h2>元素。
useRef
<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
getBoundingClientRect()
el.current.getBoundingClientRect().width
3条答案
按热度按时间9w11ddsr1#
您可以隐藏溢出区,然后将标题包含在另一个Flex中,并在两侧使用占位符div。如果文本太长,它将移到下一行,无法看到。
第一个
kxe2p93d2#
我不认为你可以用纯CSS来做这件事。你需要用javascript来做这件事。检查我下面的例子。这将在中间元素的宽度小于80px时添加
hide
类(它有一个display: none
CSS),并在宽度大于80时删除hide
。要知道getBoundingClientRect()返回一个元素的bottom, top, height, width, left, right, x, y
值第一个
当你在这里使用React的时候,你可能会想用
useEffect
来处理window.onresize()
这样的效果nnvyjq4y3#
你可以使用
useRef
钩子来实现这一点,比如说你需要隐藏宽度大于80px的长文本元素,(假设该元素是<h2>
元素。useRef挂接用于引用Dom元素,
getBoundingClientRect()
以浮点数形式返回元素的尺寸和位置,以及我们通过el.current.getBoundingClientRect().width
访问的www.example.com的高度和宽度element.so