Próbuję obciąć linie wyświetlane tylko częściowo.
Screen
Oznaczone kolorem różowym.
Wymyśliłem, że można wyświetlić tylko obiekty widoczne całkowicie:
GetVisibleElements: function(nodes, filterOnlyText = true, sync = true) {
var visibleNodes = [];
for(var i = 0; i < nodes.length; i++)
{
try {
if(filterOnlyText) {
if(!this.IsElementContainingText(nodes[i]))
continue;
}
var rect = nodes[i].getBoundingClientRect();
if( rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document. documentElement.clientHeight) &&
rect.right <= (window.innerWidth || document. documentElement.clientWidth) )
{
visibleNodes.push(nodes[i]);
}
} catch(errur)
{
//console.log("Unable to get rect for node: " + nodes[i]);
}
}
if(sync)
{
this.visibleNodes = [];
this.visibleNodes = visibleNodes.slice(0);
}
return visibleNodes;
}
Problem polega na tym iż niektóre długie akapity/elementy zawierające tekst nie są w ogóle wyświetlane (oznaczone kolorem niebieskim). Będzie możliwość wyłącznie przesuwania widoku o całą wysokość vieportu, co eliminuje dopasowywanie za każdym razem widoczności elementów.
Przydało by się na początku "pociąć" elementy w zależności od wielkości viewportu, a później wyświetlać ile się zmieści.
Nie mogę użyć żadnej biblioteki ani frameworka :<
Macie pomysł jak to ugryźć?