Скрыть текст, если он переполненCSS

Разбираемся в CSS
Ответить
Anonymous
 Скрыть текст, если он переполнен

Сообщение Anonymous »

Есть ли эффективный способ показать/скрыть текст в элементе в зависимости от его ширины?
Например, есть элемент с динамической шириной, которая может изменяться, и текст, отображаемый в нем. Я хочу, чтобы текст отображался только тогда, когда ширина элемента достаточно широка, чтобы показать его полностью, и скрывался, когда он выходит за пределы элемента (без разрывов строк, только одна строка)
Я пытался написать реагирующий компонент, который бы отображал такой текст, но у меня он работает только для статической ширины, при изменении текст не исчезает/не появляется. А еще мне не нравится, как это сделано здесь:
const AdaptiveText: React.FC = ({ text }) => {
const textRef = useRef(null);
const [isOverflowing, setIsOverflowing] = useState(false);

useEffect(() => {
const checkOverflow = () => {
if (textRef.current) {

setIsOverflowing(textRef.current.scrollWidth > textRef.current.clientWidth);
}
};
checkOverflow();
window.addEventListener("resize", checkOverflow);
return () => {
window.removeEventListener("resize", checkOverflow);
};
}, [text]);

return (
style={{
width: "100%",
whiteSpace: "nowrap",
overflow: "hidden",
textOverflow: "ellipsis",
display: isOverflowing ? "none" : "block",
position: "relative",
}}
ref={textRef}
title={isOverflowing ? text : ""}
>
{text}

);
};


Подробнее здесь: https://stackoverflow.com/questions/793 ... t-overflow
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»