Модераторы: Illuminaty
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> На некоторых элементах заголовок и подзаголовок о 
V
    Опции темы
mstdmstd
Дата 7.7.2016, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Всем привет,
Выводя список элементов, каждый блок имеет прописанные высоту и ширину.
Но как лучше сделать, если на некоторых элементах заголовок и подзаголовок очень длины и налазят на следующую строчку:
http://www.codeply.com/go/b4Fji2v7f8
Есть какое-либо удобное решение кроме добавить ширины ?
  Спасибо !

PM MAIL   Вверх
ksnk
Дата 7.7.2016, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Вариантов можно придумать 
- можно сделать заголовку overflow:hidden и снизу пририсовать градиентную (от прозрачного к белому) тень. Так получится, что лишний текст "скрывается в тумане". Чтобы прочитать текст таки можно было - его нужно продублировать в атрибуте title. Или при наведении менять overfow, чтобы заголовок читался.

- Где - то тут пролетал скрипт динамической обрезки длинного текста. Основной смысл - текст уменьшается побуквенно, пока не влезет в требуемый размер. Алгоритм немножко простоват, по этому работает медленно на элементах с длинным текстом, но на коротких все достаточно шустро.  

Это сообщение отредактировал(а) ksnk - 7.7.2016, 11:10


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mstdmstd
Дата 7.7.2016, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



C overflow:hidden и title понятно - работает
Если рисовать градиентную тень - то она будет видна для всех элементов, что не очень удобно.
Видимо, нет возможности отображать какой-то элемент(картинка наведя мышкой выводит полный текст), когда срабатывает overflow:hidden ?

А можно ли посчитать с помощью JS  что часть текста прячется и отображать картинку для просмотра всего текста?
Я имею в виду, картинку для просмотра всего текста видна, если часть текста спрятанна...
PM MAIL   Вверх
ksnk
Дата 7.7.2016, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Цитата(mstdmstd @  7.7.2016,  13:53 Найти цитируемый пост)
А можно ли посчитать с помощью JS  что часть текста прячется

Да, свойство scrollHeight у элемента. Его нужно сравнить с height 
Код

var el = $('.hostel_title');

if(el[0].scrollHeight>el.height()){
   el.addClass('toLongElement');
}



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mstdmstd
Дата 9.7.2016, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



 Спасибо, в целом получилось, но:
1) Проверяя высоту элементов я получил что
Код

  scrollHeight=23 и
  height() = 20   
в случае если текст короткий
поэтому я добавил 10 пикселей в условие :
  if(div_el[0].scrollHeight > ( div_el.height()+10) ) {

    ...
не знаю, может там в верстке косяки ?
2) Картинку, что текст заголовка отображается не весь, я разместил слева от самого заголовка : иначе эту картинку не видно.
Хотя наверно лучше было бы отобразить ее справа...
Посмотрите, пожалуйста http://dev4.softreactor.com/ под заголовком "Spotlight Hostels " - может у вас будут лучшие идеи...
PM MAIL   Вверх
ksnk
Дата 9.7.2016, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



scrollHeight - это реальная высота занимаемая элементом. Для одной строчки она будет равна lineHeight выбранного в элементе шрифта.
Код

div_el.css('lineHeight')
"22.8571px"

Возможно, для гарантии однострочности элемента будет правильнее сравнивать именно с .css('lineHeight') 

Картинку, наверное, лучше сделать из 3-х точек, основа трех точек совпадает с бякграундом, небольшой просвет слева - градиентная полупрозрачность от прозрачного до непрозрачного. Вероятно, такое не очень нарисовать и на css3.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mstdmstd
Дата 10.7.2016, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Если использовать .css('lineHeight'), то не работает вообще :
Код

 if( parseInt(div_el.css('lineHeight')) > ( div_el.height()) ) {


 это значение равно 22 -  как для строк с коротким текстом, так и для длинных строк, часть которй спрятанна.

 А можно ли примерчик картинки 3-х точек или ссылдку как это делать ?
PM MAIL   Вверх
ksnk
Дата 10.7.2016, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



if(div_el[0].scrollHeight > parseInt(div_el.css('lineHeight'))) { ...

Это будет признаком того, что элемент занимает больше одной строки, хотя выглядит громоздко. 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
mstdmstd
Дата 10.7.2016, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 30.12.2008

Репутация: нет
Всего: нет



Спасибо!

Это условие срабатывает и для коротких строк :
Код

            alert( "div_el[0].scrollHeight::"+var_dump(div_el[0].scrollHeight) + "  div_el.css('lineHeight')::" + div_el.css('lineHeight')) -- и для коротких строк вывод div_el[0].scrollHeight::23  div_el.css('lineHeight')::22.8571px
            if(div_el[0].scrollHeight > parseInt(div_el.css('lineHeight'))) {


Но нормально срабатывает такое условие :
Код

          if(div_el[0].scrollHeight > ( div_el.height()+10) ) {


И нет ли примерчика картинки 3-х точек ? 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Вёрстка веб-сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.