Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.06.2014, 17:08
Новичок на форуме
Отправить личное сообщение для loneWolf Посмотреть профиль Найти все сообщения от loneWolf
 
Регистрация: 03.06.2014
Сообщений: 7

Вывод списка в несколько колонок
Как реализовать вывод списка в несколько колонок на javascript:
1 4 7
2 5 8
3 6
я только учусь.
Ответить с цитированием
  #2 (permalink)  
Старый 03.06.2014, 17:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

loneWolf,

<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  ul{
      -webkit-column-count: 3;
      -moz-column-count: 3;
      column-count: 3;
  }

  </style>
</head>

<body>
<ul>
<li>Пункт 1</li>
<li>Пункт 2</li>
<li>Пункт 3</li>
<li>Пункт 4</li>
<li>Пункт 5</li>
<li>Пункт 6</li>
<li>Пункт 7</li>
<li>Пункт 8</li>
</ul>
</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 03.06.2014, 17:27
Новичок на форуме
Отправить личное сообщение для loneWolf Посмотреть профиль Найти все сообщения от loneWolf
 
Регистрация: 03.06.2014
Сообщений: 7

Как это делается стилями в курсе, а как реализовать это на javascript?
Ответить с цитированием
  #4 (permalink)  
Старый 03.06.2014, 17:35
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от loneWolf
Как это делается стилями в курсе, а как реализовать это на javascript?
Быгыгы:
var ul = document.querySelector("ul");
var style = ul.style;
style.webkitColumnCount = style.mozColumnCount = style.columnCount = 3;

loneWolf, js - это язык, с помощью которого можно управлять api браузера. Можно по-разному реализовать колонки, но это почти всегда будет сделано через css (не считая, к примеру, canvas-реализации).
Ответить с цитированием
  #5 (permalink)  
Старый 03.06.2014, 17:37
Новичок на форуме
Отправить личное сообщение для loneWolf Посмотреть профиль Найти все сообщения от loneWolf
 
Регистрация: 03.06.2014
Сообщений: 7

В 9 Ие это уже не будет работать.
Ответить с цитированием
  #6 (permalink)  
Старый 03.06.2014, 17:49
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от loneWolf
В 9 Ие это уже не будет работать.
Гугли библиотеки. Если ты "только учишься" и интерес обучающего характера, то суть в том, чтобы закидывать по элементу в элемент-колонку и проверять его высоту. Если высота становится больше некоторой величины, выдергиваешь последний добавленный элемент и закидываешь в следующую колонку. И т.д.
Ответить с цитированием
  #7 (permalink)  
Старый 04.06.2014, 14:25
Новичок на форуме
Отправить личное сообщение для loneWolf Посмотреть профиль Найти все сообщения от loneWolf
 
Регистрация: 03.06.2014
Сообщений: 7

Получилось, мож кому пригодится
window.addEventListener('load', function() {
    xhttp = new XMLHttpRequest();
    xhttp.open('GET', 'tt_inworld.json', true);
    xhttp.send();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4) {
            var listFlags = JSON.parse(xhttp.responseText);
            newULFlags(listFlags);
        }
    }
    
    var newULFlags = function(data) {
		var divFlags = document.getElementById('flags');
       
		var list = [];
	
		var cols = 3;
        var count = Math.ceil(data.length/cols);
        var cnt = 0;
		var str = '';
		var items = [];

			data.forEach(function(element, key) {
				
				str = '<li style="background:url(http://test.ru/images/flags/' + element.flag + ') no-repeat;" id="' + key + '">';
				
			   if (element.SiteInWorld.length > 1) {
				str += '<span>' + element.world_name + '</span>' + '<a class="name-title" href="' + element.SiteInWorld[0].link + '">' + element.SiteInWorld[0].title + '</a>' + '<a href="' + element.SiteInWorld[1].link + '">' + element.SiteInWorld[1].title + '</a>';
				}
				else {
					str +=  '<a href="' + element.SiteInWorld[0].link + '">' + element.world_name + '</a>';
				}
				str += '</li>';
				
				list.push(str);
				
				cnt++;
                    if (cnt == count) {
					var str1 = '';
                        str1 += list.join('');
						items.push(str1);
                        cnt = 0;
                        list = [];
                        var mod = data.length%3;
                        if (mod === 1) {
                            count = Math.ceil(data.length/cols)-1;
                        }
					 }
					
			});
			
			items.forEach( function(el){
				var ul = document.createElement('ul');
				console.log(el);
				ul.innerHTML = el;
				divFlags.appendChild(ul);
				
			});
	};
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод по несколько div при клике. Lutidza Общие вопросы Javascript 1 16.05.2014 16:27
Выпадающее меню в несколько колонок spo (X)HTML/CSS 1 25.06.2013 12:30
Не работает скрипт отображения списка Konstantine Javascript под браузер 3 18.03.2013 06:00
вывод информации из выпадаюшего списка alerzo Events/DOM/Window 2 27.01.2013 21:22
вывод списка файлов KonstantinV Events/DOM/Window 10 23.11.2009 10:30