Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Плагин обрезающий текст для jQuery (https://javascript.ru/forum/project/21063-plagin-obrezayushhijj-tekst-dlya-jquery.html)

Gozar 28.08.2011 20:28

Цитата:

Сообщение от devote (Сообщение 123107)
И не заставляя пользователя крутить скролл до бесконечности, добираясь в низ страницы

Для этого проще использовать фиксированную высоту блока и вычислять ничего не придется. По надобности разворачивать.

devote 28.08.2011 22:01

Цитата:

Сообщение от Gozar
Для этого проще использовать фиксированную высоту блока и вычислять ничего не придется. По надобности разворачивать.

Мы можем что угодно сделать не спорю, но если дизайнер решил сделать именно так, показывая часть текста и разворачивать при клике на more. Я понимаю что можно плюнуть на дизайнера и сделать так как удобнее мне, но я все же уважаю мнения дизайнера в первую очередь, ибо он дизайнер и ему виднее как оно лучше будет выглядеть... Поэтому я всегда стараюсь делать все так как вижу на дизайне и в ТЗ.

Gozar 28.08.2011 23:30

devote,
Что ты так кипятишься? Тебе дизайнер сказал написать скрипт вычисляющий количество строк? Вариант с разворотом по more обрезающий по количеству символов куда короче и дизайн не измениться.

Моё мнение лишь, что ты написал скрипт делающий сложно, то что можно делать просто. И второй блок у тебя до сих пор разваливается, так что дизайнер тебе его всё равно не зачтёт. Я привел лишь часто встречающуюся ситуацию из жизни, которую ты проигнорировал. Нет так нет, доказывать не нужно, я всё равно не пойму. А так да, идея забавная.

devote 29.08.2011 00:03

Цитата:

Сообщение от Gozar
Я привел лишь часто встречающуюся ситуацию из жизни, которую ты проигнорировал.

Возможно для тебя она и частая, я лично не допускаю ввода пользователям html тегов, что уже говорит о том что она далеко не часто встречающая, по крайней мере у меня. Но дело личное, никто не заставляет пользоваться. Второй блок не разваливается а лишь отображается не три строки как указано а четыре... Но это терпимо. Может кому и пригодиться данный плагин, и я никому его не навязываю.

Gozar 29.08.2011 00:14

Цитата:

Сообщение от devote (Сообщение 123144)
я никому его не навязываю.

Я как бы в курсе. Ввел бы голосование в теме и доказывать ничего не пришлось бы. Время покажет, если разместишь на сайте jquery.

devote 29.08.2011 00:16

Цитата:

Сообщение от Gozar
Время покажет, если разместишь на сайте jquery.

А оно мне надо? Не горю большим желанием это делать если честно, за статистикой не гонюсь.

float 29.08.2011 04:28

блок с оверфлов: хидден можно прокручивать и без скролла. например выделением текста или кнопкой таб если есть элементы типо: а, инпут.

devote 29.08.2011 04:44

Цитата:

Сообщение от float
блок с оверфлов: хидден можно прокручивать и без скролла. например выделением текста или кнопкой таб если есть элементы типо: а, инпут.

Поверь, ты не открыл америку, это давно всем известно.

float 29.08.2011 12:43

Цитата:

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

devote 29.08.2011 12:51

Цитата:

Сообщение от float
Да верю. Это я к тому, что надо было отбросить идею, как только она появилась, поскольку стандартные действия юзера нарушат диз.

Ну как я упоминал выше, я не планировал помещать в текст теги... Поэтому и ссылки туда не попадут... А то что блок прокручиваться в других вариантах может, ну это редкость, и диз это не нарушит... Может Вам и кажется что это частые действия пользователей и т.д. Но жалоб не слышал по поводу этого. И снова повторюсь, никому не навязываю... Кому надо, возьмут, кому не надо проигнорят.

Gozar 29.08.2011 13:00

Я так понимаю мы говорим про абстрактный дизайн в вакууме. Я говорил только о том дизайне, который показал ТС в первом своем сообщении.

Я не против идеи скрипта, я против идеи решения подобных проблем таким способом. Мне он кажется слишком сложным для решения подобных задач.

Для голого сайта идея может и сработать. Я не знаю, может и сработает, но я не стану тестить такой скрипт там, где без него обойтись проще, чем с ним.

О чем вы говорите я вообще не понимаю.

Цитата:

Сообщение от devote (Сообщение 123206)
Кому надо, возьмут, кому не надо проигнорят.

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

ОлегА 29.08.2011 14:26

Пацан старался, зачет :)

Цитата:

Сообщение от Gozar
... я не стану тестить такой скрипт там, где без него обойтись проще, чем с ним.

НО пока я бы поступил так :)

Gozar 29.08.2011 18:37

ОлегА,
Не аргумент. Ты чей-то клон?

А вот скрипт опять работает не так как предполагается:
<div style="width: 200px; border: 1px solid #000;">
	<div class="correct_comment">A<br>L<br>o<br>r<br>em ipsum dolor sit amet, consectetur adipiscing elit. Nulla tincidunt nunc commodo magna posuere sollicitudin. Quisque ultrices sodales nisi eu sagittis.</div>
</div>


С такой длинной скрипта, он по идее должен сам вычислять сколько строк должно помещаться в блок, а иначе я не вижу смысла, с количеством символов проще и короче.

Gozar 29.08.2011 18:50

Цитата:

Сообщение от ОлегА (Сообщение 123233)
Пацан старался, зачет :)

Это не институт, где отрицательный результат тоже результат. Я просто показываю нерабочие варианты при таком подходе к реализации.

devote 29.08.2011 22:00

Gozar,
Ну понятно дело что в идеале на него нужно потратить каке-то время... что бы сделать его нормальным... Но нет у меня времени пока)

Gozar 29.08.2011 22:24

devote,
Я никого не заставляю и не тороплю. Можешь вообще его не доделывать :)

devote 29.08.2011 22:27

Цитата:

Сообщение от Gozar
Я никого не заставляю и не тороплю.

Я как бэ в курсе.
Цитата:

Сообщение от Gozar
Можешь вообще его не доделывать

Просто работы щас куча навалилось, немного не до этого просто.

Льюк 29.08.2011 23:45

Простите, не могу создать тему, поэтому размщаю в этом сообщени, модераторам прошу перенести в новую тему.
Добрый вечер!
После прочтения нескольких статей на этом сайте написал небольшую функцию для создания Drag And Drop блоков. Потестировал на прожорливость памяти и вот к каким резельтатам пришел:
при создании 2000 блоков, съедается памяти
Firefox 5mb - 11mb
Opera -11mb
Chrome -11mb
Можно ли как-то оптимизировать скрипт, чтобы он ел меньше памяти? или совсем не ел.
Функция предполагается использоваться на разных сайтах, чтобы было оптимизированно сразу. А то боюсь проблем в будущем.
Спасибо за участие.
Привожу сразу код, рабочий:
<html>
<body>
<script>
function leftTop (el) {
	var left = 0;
	var top  = 0;
	while (el.offsetParent){
		left += el.offsetLeft;
		top  += el.offsetTop;
		el = el.offsetParent;
	}
	left += el.offsetLeft;
	top  += el.offsetTop;
	return {x:left, y:top};
}
function fixEvent (e) {
	e = e || window.event;
	if (e.pageX == null && e.clientX != null) {
		var de = document.documentElement;
		var body = document.body;
		e.pageX = e.clientX + (de && de.scrollLeft || body && body.scrollLeft || 0) - (de.clientLeft || 0);
		e.pageY = e.clientY + (de && de.scrollTop || body && body.scrollTop || 0) - (de.clientTop || 0);
	}
	if (!e.which && e.button) {
		e.which = e.button & 1 ? 1 : (e.button & 2 ? 3 : (e.button & 4 ? 2 : 0));
	}
	return e;
}

function dd() {
    var box;
    var mouseOffset;
    var posBlock;
    var cacheX;
    var cacheY;
    var zIndex;
    box = document.createElement('div');
    box.style.width = '100px';
    box.style.height = '100px';
    box.style.border = '1px solid #000';
    box.style.position = 'absolute';
    box.onmousedown = function (event) {
        zIndex = box.style.zIndex;
        box.style.zIndex = 9999;
        var e = fixEvent(event);
        mouseOffset = (function (el, e){
            var docPos = leftTop(el);
            return { x:e.pageX - docPos.x, y:e.pageY - docPos.y };
        })(box,e);
        document.onmousemove = function (e) {
            var e = fixEvent(e);
            box.style.left = e.pageX - mouseOffset.x + 'px';
            box.style.top = e.pageY - mouseOffset.y + 'px';
        }
        document.ondragstart = function() { return false };
        document.body.onselectstart = function() { return false };
        return false;
    }
    box.onmouseup = function () {
        document.onmousemove = null;
        document.onmouseup = null;
        document.ondragstart = null;
        document.body.onselectstart = null;
        box.style.zIndex = zIndex;
        box.style.cursor = 'default';
    };
    document.body.appendChild(box);
}
</script>
<body>
<script type="text/javascript">
    for(var i = 0; i < 2000; i += 1){
        dd();
    }
    // FF -5mb -11mb
    // Opera -11mb
    // Chrome -11mb
</script></body>
</html>

ОлегА 31.08.2011 13:47

Gozar,
Да я как бы просто мимо пробегал):)

Gozar 08.09.2011 15:36

Цитата:

Сообщение от Льюк (Сообщение 123379)
Можно ли как-то оптимизировать скрипт, чтобы он ел меньше памяти?

Переписать на прототипах.

yurik417 13.10.2012 01:00

Цитата:

Сообщение от Gozar (Сообщение 125568)
Переписать на прототипах.

Пользуюсь давно этим http://masscode.ru/index.php/k2/item/24-litextlength

devote 13.10.2012 01:23

yurik417,
ты год поста то посмотри, твой плагин куда позже появился. Может он и лучше, но тогда его не было.

yurik417 22.10.2012 02:29

Цитата:

Сообщение от devote (Сообщение 209755)
yurik417,
ты год поста то посмотри, твой плагин куда позже появился. Может он и лучше, но тогда его не было.

Уверен что тема будет актуальна еще не один год, пусть и не для автора

rikitiki 18.06.2015 06:31

devote, хороший скрипт но к сожалению при уменьшении ширины окна браузера, и соответственно уменьшении ширины последнего дива, количество видимых строк хоть и сохраняется, но точки на обрезке исчезают.
В моём случае, который я изложил в этом посте:
http://javascript.ru/forum/375522-post17.html
клик раскрывающий полный текст не нужен. Гиперссылка, раскрывающая карточку товара, в которой есть полный текст обрезанного заголовка, уже существует. Необходимы лишь постоянно видимые точки на конце обрезки, информирующие посетителя о том что текст (заголовок) не полный и фиксированное количество строк не зависимое от ширины дива.
Не могли бы вы высказать предположение, как решена задача по обрезке заголовков товаров на этой странице:
http://www.obi.ru/decom/category/%D0...%8B%D0%B5/1064
Здесь заголовки обрезаются как нужно.
То есть они в две строки с тремя точками по обрезке.
И если плавно изменять ширину окна браузера, то дивы соответственно сужаются и количество знаков (буквально по буквам!) в их заголовках также меняется. Но две строки с тремя точками сохраняются чётко!

В PHP насколько я знаю, функцией mb_substr() можно резать только по количеству заданных символов. В CSS адаптивная обрезка по границе дива с добавлением трёх точек получится, если добавить стиль:

text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;

Но к сожалению текст при этом становится однострочным.

Deff 01.07.2015 06:00

rikitiki,
ну нун перезапускать скрипт по onresize window, где-то сохраняя строку исходник (в принципе проблема решаема добавкой трёх строк при сохранением на sessionStorage)


Часовой пояс GMT +3, время: 22:26.