Есть ли правильный способ сделать адаптивный текст?

Дизайнеры часто предлагали мне адаптивный дизайн, в котором формулировка элемента меняется в зависимости от размера экрана.

Компьютер: Подробнее
Мобильный: Читать

Настольный компьютер: загрузите PDF
Мобильный: экспортируйте

Настольный компьютер: нажмите здесь
Мобильный: нажмите здесь

Как правильно сделать различный текст в мобильной и десктопной версиях сайта?


person KOVIKO    schedule 09.10.2014    source источник
comment
Вы можете использовать JavaScript или медиа-запросы, чтобы показать или скрыть определенные элементы на странице в зависимости от разрешения.   -  person TylerH    schedule 09.10.2014
comment
Нет единственно правильного пути. Все зависит от того, с чем вам предстоит работать.   -  person j08691    schedule 09.10.2014
comment
Вы можете использовать отзывчивые утилиты начальной загрузки, чтобы добиться того, что вам нужно, очень просто и ясно. Проверьте: getbootstrap.com/css/#responsive-utilities   -  person artuc    schedule 09.10.2014
comment
Большинство адаптивных фреймворков имеют имя класса, которое вы добавляете для размера X. Поместите текст в отдельные промежутки и добавьте этот класс.   -  person epascarello    schedule 09.10.2014
comment
проблема с такими служебными классами заключается в том, что они на самом деле не запутывают содержимое всех программ чтения с экрана (некоторые все еще читают элементы с display: none; и visibility: hidden;) - проблема доступности   -  person Luca    schedule 09.10.2014


Ответы (2)


Для этого вы можете использовать медиа-запросы, псевдоклассы и некоторую изобретательность:

a[data-mobiletext] {
    background-color: #FC0;
}
@media screen and (max-width: 700px) {
    a[data-mobiletext] {
        background-color: #CF0;
    }
    a[data-mobiletext] span {
        display: none;
    }
    a[data-mobiletext]:after {
        content: attr(data-mobiletext);
    }
}
<a href="/" data-mobiletext="Read"><span>Read more</span></a>
<a href="/" data-mobiletext="Export"><span>Download PDF</span></a>
<a href="/" data-mobiletext="Tap here"><span>Click here</span></a>

Нажмите «Полная страница», чтобы просмотреть настольную версию.

person Salman A    schedule 09.10.2014
comment
Этот подход, основанный только на CSS, очень чист. Мне было бы интересно узнать, есть ли способ позволить ширине автоматически соответствовать самой себе. Учитывая, что текст задается в CSS, установка ширины вручную не должна быть большой проблемой. Но было бы неплохо, чтобы это не требовалось. - person KOVIKO; 09.10.2014
comment
Оберните текст ссылки внутри элемента span, чтобы его было легче манипулировать с помощью CSS. Я пересматриваю свой ответ в ближайшее время. - person Salman A; 09.10.2014
comment
Текст, сгенерированный CSS, не объявляется программами чтения с экрана, поэтому с этой техникой пользователи AT вообще не получат текста. - person steveax; 09.10.2014
comment
@steveax диапазон содержит более длинный текст. Я установил его на display: none для демонстрации; Вместо этого можно использовать альтернативные методы. - person Salman A; 09.10.2014

Есть несколько подходов, которые я использовал, когда клиенты делали похожие запросы (и их не отговаривали*):

1) Используйте Javascript для изменения текста в зависимости от ширины экрана/методов обнаружения устройства;

2) Установите текст по умолчанию в качестве предпочтительного варианта и оберните его в диапазон или аналогичный, используйте текст, который, по вашему мнению, лучше всего подходит для всех устройств (лучше всего подходит для SEO / контента / программ чтения с экрана в зависимости от приоритета), а затем используйте псевдоселекторы, например. :before со свойством content: '' для установки альтернативного текста на основе медиа-запросов. Скрытие диапазона/элемента по умолчанию по мере необходимости.

(*) Я бы посоветовал рассмотреть ваш контент и посмотреть, сможете ли вы найти универсальную метку для этих элементов, но это, вероятно, лучшая практика.

person steve    schedule 09.10.2014
comment
Респект за сноску ;) - person Andrew Barber; 09.10.2014
comment
Спасибо - мы все были там с такими запросами ... так что, надеюсь, сначала были полезны :) - person steve; 09.10.2014