За последние 24 часа нас посетили 21676 программистов и 1689 роботов. Сейчас ищут 1929 программистов ...

Надо "Show more…" на CSS

Тема в разделе "HTML и CSS", создана пользователем artoodetoo, 10 окт 2015.

  1. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Помогите пожалуйста сделать блок с текстом (и не только), который был бы ограничен по высоте, скажем в 3em. Если содержимое не умещается, то должна быть работающая ссылка "Show more" которая бы разворачивала блок во всю нужную высоту. Ссылка должна быть видна только тогда, когда действительно нужна.

    Я нашел несколько составляющих для решения, но объединить вместе как-то обламываюсь.
    http://www.sitepoint.com/implementing-show-moreless-functio ... -pure-css/
    http://html5hub.com/ellipse-my-text/ (примеры в коментариях)

    Без доп. разметки видимо не обойтись, а вот без JS кажется можно. Кто сделает, тому спасибо!
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    А как определить на CSS что overflow сработал без js? Или можно без overflow как-то обойтись?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Я не вкурил где там по ссылкам "только когда нужно"
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Как дети малые! http://jsfiddle.net/nLf0Ltf6/2/
    в примере не текст "Show more", а троеточие content: '\2026';

    текст помещается в отведенные рамки
    [​IMG]
    добиваемся чтобы не помещался
    [​IMG]

    Можно увидеть действие в динамике если подвигать влево-вправо разделитель. Это заставит текст меняться в высоту.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    крутяк! я даже не понимаю, как это работает.

    Добавлено спустя 3 минуты 22 секунды:
    я понял, как он работает. Это оxyительно!
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    artoodetoo а есть законченный пример, чтобы при клике текст разворачивался?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чекбокс же
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    denis01, первая ссылка же ж!
    Implementing “Show More/Less” Functionality with Pure CSS
    реально клик переключает состояние [ спрятанного ] чекбокса, а правила CSS используют это состояние чтобы показывать всё/часть. статья расписывает тонкости этого процесса.
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    UP

    Тема не интересна или задачка действительно сложная?
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Я жду готовый пример, тема очень интересная
     
  11. geone

    geone Новичок

    С нами с:
    4 окт 2015
    Сообщения:
    139
    Симпатии:
    0
    Моё мнение не кто не предусматривает? Я же говорил это не возможно. Хотя... Только половину функционала можно сделать на css.

    Ладно спорить не буду. Делай как знаешь.
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    http://jsfiddle.net/nLf0Ltf6/305/

    пойду запатентую

    Добавлено спустя 4 минуты 46 секунд:
    Оставлю это здесь
    Код (Text):
    1.  
    2. .container {
    3. border: 1px red solid;
    4. line-height: 1.5;
    5. overflow: hidden;
    6. max-height: 6.5em;
    7. position: relative;
    8. }
    9.  
    10. .container:before  {
    11. content: attr(my-text);
    12. }
    13.  
    14. .showMore {
    15. position: absolute;
    16. right: 0;
    17. bottom: 0;
    18. background-color: #0f0;
    19. display: block;
    20. top: 4.5em;
    21. width: 100%;
    22. }
    23.  
    24. [type="checkbox"]:checked + p {
    25.   max-height: 100%;
    26. }
    27.  
    28. [type="checkbox"]:checked + p>.showMore {
    29.   top: 9999px;
    30. }
    Код (Text):
    1.  
    2. <input id="eee" type="checkbox">
    3. <p class="container" my-text="But more text here (the same markup structure though): if the text overflows from the clamped paragraph's height, the ellipse will show.">
    4.    <label for="eee" class="showMore"><nobr>Show more</nobr></label>      
    5. </p>
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Круто))
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Хинт: текст из my-text можно пихнуть прямо в абзац перед showMore, напихать в него тегов с картинками и выкинуть :before из css, но надо учесть, что требуется подгонка положения ShowMore по высоте строк, т.е. по-хорошему все надо мерять в пикселях и высоту картинок делать кратной строкам.
     
  15. iNEEdhLw

    iNEEdhLw Новичок

    С нами с:
    22 окт 2014
    Сообщения:
    414
    Симпатии:
    0
    а почему без js?
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    так интереснее
     
  17. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Вася, напильник конечно понадобится, но похоже на решение ) Спасибо!

    Добавлено спустя 6 минут 7 секунд:
    Хотя нет, не годится что текст недоступен. Мышой не выделяется, видимо внутри нельзя кликнуть ни ссылок, ни элементов управления. И про размер не всё понял. Полнял только что хрупко.
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Да здравствует js!
     
  19. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  20. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    прикольно
    получается, победа?
     
  21. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Примеры по ссылкам заморочили голову этими before и after. Поэтому первая идея была, раз нельзя вставить ссылку в content, то нужно его и текст помнять местами.

    Использовать before имеет смысл, если нам нужно вставить абстрактный "show more" на одну строку с текстом. Однако это приводит к тому, что сама "show more" может появляться не полностью. Поэтому я разместил её в виде блока на определенной позиции по высоте. То есть по задумке, она должна аккурат перекрывать последнюю допустимую строчку. Дальше текст уходит в оверфлоу, а show more остается в виде последней строчки.

    Вот чтобы над ней буквы не резались пополам, надо рассчитать все размеры по пикселям, в принципе это возможно =)
     
  22. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Круто. Всем css-ниндзя респект, добавил в закладки )
     
  23. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Красавчик!