Есть ли эффективный способ показать/скрыть текст в элементе в зависимости от его ширины?
Например, есть элемент с динамической шириной, которая может изменяться, и текст, отображаемый в нем. Я хочу, чтобы текст отображался только тогда, когда ширина элемента достаточно широка, чтобы показать его полностью, и скрывался, когда он выходит за пределы элемента (без разрывов строк, только одна строка)
Я пытался написать реагирующий компонент, который бы отображал такой текст, но у меня он работает только для статической ширины, при изменении текст не исчезает/не появляется. А еще мне не нравится, как это сделано здесь:
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
Скрыть текст, если он переполнен ⇐ CSS
Разбираемся в CSS
1735234294
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}
);
};
Подробнее здесь: [url]https://stackoverflow.com/questions/79310091/hide-text-if-it-overflow[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия