Коммент на ответ выше
Вопрос был не о статике, я уже позно подумал, что лутше было её убрать вовсе из приведенного кода, а в динамике, те записи что я вывожу из БД распространяются как им и положено сверху - вниз, а мне нужно справа - налево. Последние мысли на этот счет были - нумеровать каждый элемент ( или перебор всех элементов внутрней таблицы) и проверять их местоположение, если не выходит на рамки экрана браузера (сечас считаю через JS JQuery), то норм, если выходит, то перенос этого эелемента, только вот как это реализовать - меня путает вложеность таблицы и с выводом из одной и в ставкой в другой td.
|
Если забить на IE, то можно вот так вот:
<!DOCTYPE html> <meta charset="UTF-8"> <title>Document</title> <style> html, body, div{height: 100%;margin:0;padding:0;} span{ display: inline-block; width:200px; height: 200px; border: 1px solid red; } div{ resize:both; outline: 1px solid red; -webkit-column-width: 200px; -moz-column-width: 200px; -o-column-width: 200px; column-width: 200px; } </style> <div> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> </div> Это как вариант. А так да, нужно на javascript динамически просчитывать все и раскладывать блоки в div'ы у которых float:left. Ибо с таблицами все громоздко получается. |
Эксперементирую с вашим предложеным вариантом. Пока заметил что оно обязательно мостится на экран и прокрутка не появляется, вместо того что бы распластатся =) по горизонтали, пытается так сказать заполнить все щели и лезит в низ.
|
Что мы имеем с предоставленым кодом
![]() 1280x1024(601.38 kB) Вот что получается, если отдалить камеру, то оно всетаки распространяется направо (resize: horizontal;), но всеравно прокрутку не создает. Меня интересует имено в горизонтальном распространении без вылеза за рамки экрана. |
Можно прописать контейнеру overflow: auto - тогда появятся скроллбары. Но я не уверен этот вариант вообще приемлем.
|
overflow: auto пробывал, и на всякий случий перепробывал еще раз не помогает. Сечас разметка css пока не выношу, как будет норм так и сразу =)
<div style="resize: horizontal; /*outline: 1px solid red;*/ -webkit-column-width: 600px; -moz-column-width: 600px; -o-column-width: 600px; column-width: 200px; margin: 0; padding: 0;"> <span > @{ if (string.IsNullOrWhiteSpace(Model.CoverImage)) { <img src="@Url.Content("~/Content/CoverImage/0.jpg")" alt="CoverImage" id="imga" /> } else { <img src="@Url.Content("~/Content/CoverImage/" + User.Identity.Name + "/CoverImage" + Model.CoverImage)" alt="CoverImage" id="img" /> } } </span> <span style="display: inline-block; max-width: 250px; max-height: 150px; column-width: 300px;"> @using(Html.BeginForm("PostLabel","LabelWall")){ @Html.TextArea("Label", new { style="width: 250px; height: 150px; position: relative; resize: none;" }) <br /><br /> <input type="submit" value="Разместить" /> } </span> @foreach(var x in Model.PersonalLabel) { if(x.PersonalID==ViewBag.PersonalGuid) { <br /><br /> <span style="display: inline-block; max-width: 300px; max-height: 300px; column-width: 300px; "> @{ Html.RenderAction("MiniAvaImage", "Home"); } @ViewBag.FullName<br /> @x.LabelWall.Date.Value.ToLongDateString() <br /> @x.LabelWall.Text </span> } } </div> |
В голове вертится пока один возможный вариант ( на основе моей разметки). Назначаем внутреней table id + 1 за каждое появление или проходим по всем элементам ( записям ( n- количество таблиц)) и смотрим их расположение http://javascript.ru/ui/offset сравниваем с экраном пользовательского браузера
<script type="text/javascript"> height = $(window).height(); img.style = "height: " + height + "px"; imga.style = "height: " + height + "px"; </script>и если не значение таблицы больше чем высота экарна браузера, то что то сделать, хз что можно сделать. |
А все блоки разных размеров?
|
Пока да и было бы красивее если все разных размеров( а то если написано пару слов и занимать большой контейнер - как то неочень). В БД я ставил размер 1000 символов для @x.LabelWall.Text ( основной текст), если учитывать это, то можно сказать точно какой размер будет.
|
как пример уже реализованого могу привести http://new.myspace.com/
|
Хех. Даже и не ожидал - там используется тотже самый прием :)
|
<!DOCTYPE html> <html> <meta charset="UTF-8"> <title>Document</title> <style> html, body, div{height: 100%;margin:0;padding:0;} .wrp span{ vertical-align: top; display: inline-block; white-space:pre-wrap; word-wrap: break-word; width:200px; height: 200px; border: 1px solid red; } .wrp{ border: 1px solid blue; white-space:nowrap; padding:12px 0; height: auto; margin-top:0; } </style> <div class=wrp> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span> вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв </span> </div> |
Контроль изменения высоты любого из span, как критерий добавки колонок в div.wrp, либо еще каких-нибудь действий
(Закидываем в один из span контент больше максимально-допустимой высоты <!DOCTYPE> <html> <head> </head> <body> <style> html, body, div{height: 100%;margin:0;padding:0;} .wrp span{ margin: 0; vertical-align: top; display: inline-block; white-space:pre-wrap; word-wrap: break-word; min-height: 200px; max-height: 202px; max-width:200px; border: 1px solid red; } .wrp{ position:absolute; border: 1px solid blue; white-space:nowrap; padding:0; height: auto; } </style> <div class=wrp><iframe name="frame" width="88" height="100%" style="margin:0;position:absolute;border:green solid 1px;/*z-index:-1*/"></iframe> <span>вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв ввввввввввввввввввввввввв</span> <span>вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв ввввввввввввввввввввввввв</span> <span id=third></span> <span id=fourth></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> <span></span> </div> <script type="text" id="scr00"> ввввввввввввввввввввввввв ввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв ввввввввввввввввввввввввв вввввввввввввввввввввввввввввввввввввввввв ввввввввввввввввввввввввв </script> <script type="text/javascript"> setTimeout(function(){ // Отработка задержки фрейма (для FF и ИЕ) var timerResize='first'; frame.onresize = function(){ // frame, - Имя фрейма (name=frame) - cм начало Кода; if(timerResize!=='first')clearTimeout(timerResize); timerResize=setTimeout( function(){ // Задержка для очистки чрезмерных срабатываний; alert('Высота div class=wrp изменена.'); // Тело обработки события «onresize»; },20) // Параметр 20(ms) , - зависит от нужной скорости реагирования на повторные события; // актуально при плавных изменениях размера элемента, // либо почти одновременное изменением размера несколькими разными процессами. } },200); setTimeout(function(){ //Докидываем контент в третий span document.getElementById("third").innerHTML='вввввввввввввввввввввввввввввввввввввввввв\ вввввввввввввввввввввввввввввввввввввввввв\ вввввввввввввввввввввввввввввввввввввввввв\ вввввввввввввввввввввввввввввввввввввввввв\ ввввввввввввввввввввввввв\ ввввввввввввввввввввввввв'; },3000); setTimeout(function(){ //Докидываем контент в четвёртый span document.getElementById("fourth").innerHTML=document.getElementById("scr00").innerHTML; },7000); </script> </body> </html> |
HoenDHime, не обращайте внимание, у Deff'а iframe головного мозга. К сожалению он никак не излечится от этой болезни...
Deff, что мешает делать проверку изменения размеров при динамическом добавлении контента? |
danik.js,
Модульность Твой сменщик не будет рыть скрипты в поисках, а где тут анализ на высоту, Либо как обычно делают при таком раскладе - забивают на всё предыдущие скрипты, и смотрят по таймеру |
Deff, а ты что-нибудь о событийном программировании слышал? Некий модуль подгружает контент, по окончании триггерит событие (как минимум window.resize). Слушатель события делает нужные дела.
|
danik.js,
Не учи отца, я делал загрузку новостных блоков из нескольких источников, с в одну секцию авторазбиением на колонки, потом решили добавить новые,- добавлял другой парень В итоге масса проверок, - замена на один фрейм - сократила скрипты раза в три |
Потом у меня в последнее время такое чувство, что ты ревнуешь, я делаю то, что меня заинтересовало( и даже более для себя), сначало заинтересовала горизонтальная блочность, а тест на превышения высоты айфремом, это для теста задачку продумал
|
Делай че хочешь, но не учи кривым решениям других. Айфрейм - это костыль. В 99% случаев где ты пытаешься его использовать, он там не нужен. Или все тупые - а ты умный? И чего ж твои трюки с фреймом не оценили хабраюзеры?
|
Цитата:
|
Незнаю как у вас обстоят отношения, но я благодарен за вашу помощ =). Первое, у вас уже вписаны span и даже если их скрыть, хз сколько может быть записей в БД 1-1к так что, там же и создавать их может, щяс пока свое подумаю еще раз =).
|
Цитата:
|
ajax да, но тут пока так сделать =)
|
HoenDHime, так чем не устраивает метод с css multicolumns ? Тем что IE идет лесом? Или все не осилите css чтобы появился скроллбар ?
|
хех, даже незнаю как и ответить, я смотрю вы и по ночам что то делаете =), у меня еще универ есть, та и не могу вечно у кода торчать. :( =))
|
еще вот наткнулся http://efimov.ws/main/develop/javascript.html
|
HoenDHime ну дайвайте ссылку на тестовый пример сюда. Уверен, там поправить нужно всего лишь пару css-свойств.
|
Ссылку на тестовый пример, да было б хорошо, но на хостинг просто лень заливать, а код еще на первой странице приводил, единственое разные вариации пробую, так сказать скрещевание видов =). Скрол появляется только вертикальный, что мне не нужно, думаю опять от скрипте, который помойму уже не однократно описывал.
|
На хост не обязательно заливать все приложение. Достаточно html-страницу со стилями. Страницу можно сохранить через Ctrl+U в браузере (откроется исходный код)
|
Пост ниже
|
Почини страницу быстро! И подключи файл css чтобы подключался на дропбокс куданить закинь или на хост
|
Думаю так легче http://yadi.sk/d/JxijzNA42uCcy
|
Часть решения
<script type="text/javascript"> height = $(window).height(); var x = document.getElementById('element'); var xx = x.innerHTML; if (x.offsetHeight > height) { var cont = x.parentNode; var tdnew = document.createElement('td'); tdnew.innerHTML = xx; cont.appendChild(tdnew, x); } </script> Ищю элемент с идом элемент, проверяю если его высота больше высоты экрана браузера, то добавляю в конец элемент td и ввожу в него новый текст, вставляется тоже самое что и в первом td. Теперь думаю нада всетаки поместить в див вывод данных и БД Html.RenderAction("MiniAvaImage", "Home"); @ViewBag.FullName br /> x.LabelWall.Date.Value.ToLongDateString(); <br /> @x.LabelWall.Text как то предать нумеровки, что бы ид дива увеличивалась за каждую надпись, и в JS коде спрашивать конкретный див поместился ли на экран. Последние мысли на этот счет, проверят innerHTML на теги, если нашло смотреть влезает ли ( т.е. нада узнать координаты его), ну и все через цикл. Пока сам над этим занимаюсь. |
Цитата:
|
ладно не хочеш качать, как ты выразился бяку, что хм дело лично каждого, но мало верится что ты ничего не качаеш, или боишся что какой то программист подложит нечто опасное, так везде есть на это шанс. Ладно лутше по коду выше подскажи.
|
Я не говорил что боюсь. Просто дело принципа. Мне удобней когда можно посмотреть онлайн. Так или иначе нужно запускать в браузере. Так нафига тогда что-то качать? Архив в браузере ведь не откроешь! Код не смотрел. Не пойму чем тебе не устраивает css. И зачем тебе таблицы? Тебе нужно выравнивание по сетке чтоли? Несколько вертикальных div'ов чем не устраивают?
|
Скрин с первой страницы
![]() 1280x1024(601.38 kB), не ужели тут, не видно что это кака? И вижу ты явно игнорируеш сам факт другова ришения :( |
Цитата:
|
То как выводятся сообщения ты считаеш нормальным? Как моя темма называется ? Не вертикальная верстка, которая тоже кривая, там срезаются надписи вышедшие за предел экрана, вертикальный скрол мне не нужен.
И теперь вопрос по данному коду, как узнать коориданты найденного спана? <script type="text/javascript"> height = $(window).height(); var elem = document.getElementById('element'); // элемент это тд в который выводится информация из БД var elemTxt = elem.innerHTML; for (var c = 0; c < elemTxt.length; c++) { var x = element.childNodes[c].nodeName; // находит спан, теперь нужны его координаты, просто какого объекта могу найти, а вот найденного элемента хз ищю в переменной obj . var obj = element.childNodes[c]; if (x == "SPAN" && "span") { //var br = element.getBoundingClientRect() //alert("Top:" + br.top + ", Left:" + br.left + ", Right:" + br.right + ", Bottom:" + br.bottom) //alert("Это спан"); //нашло все спаны } } </script> P.S. Мало знаком с JS поэтому вообще сюда пишу, жаль что все не решается с помошью C# |
Часовой пояс GMT +3, время: 11:49. |