Jump to content

Great Rash

Expert
  • Posts

    7,974
  • Joined

  • Last visited

  • Days Won

    144

Everything posted by Great Rash

  1. А далее я предлагаю после того как мы получили все ноды-ссылки и записали их в массив убить контейнер, т.к. он являлся всего-лишь хранилищем для ссылок. Т.е. надо сделать так: cont.parentNode.removeChild(cont); Таким образом мы избавимся от, ненужного теперь, контейнера со списком ссылок. Далее я предлагаю, для начала, забить на логотип и попробовать просто расположить ссылки рандомно в каком-либо диве.
  2. Ок, возьмем абстрактный сайт. Первым делом нам надо получить массив ссылок с которыми мы потом будем работать. Если нет возможности указывать id для каждой конкретной ссылки (да и бред это), то нам нужно всего-лишь получить контейнер в котором все ссылки лежат. Находим его так: var cont = document.getElementById('container'); затем находим все ссылки внутри этого контейнера: var links = cont.getElementsByTagName('a'); все, у нас сформирован массив ссылок, с которым мы будем работать.
  3. Ну сейчас то как-то выводятся ссылки?
  4. Ок, у них есть какой нибуть контейнер? Ну куда эта CMS кидает ссылки когда их создает?
  5. Ну и? Причем тут это? Вы то откуда ссылки берете?
  6. Давайте тогда по порядку. Откуда у вас приходят ссылки? Это какой-то массив или что?
  7. Если этот график реален, то это лишний раз доказывает, что в большинстве фирм админы - дебилы.
  8. Я на собеседовании выдал только идею про инлайн-блоки, и отрицательные маргины. Про box-sizing я естественно не знал... Про разруливание схлопывающегося родителя я вообще не знал, что ответить ибо привык это при помощи overflow: hidden; решать... В общем налажал я
  9. Вот если мне вдруг перезвонят и я попаду на второй тур, то обязательно поинтересуюсь. Ибо я не меньше вашего думаю, что это жесткое извращение.
  10. ааа, допер. var links = [link1, link2, link3, link4]; // массив нод-ссылок (<a>) for (var i = 0; i < links.length; i++) { while (true) { var randX = Math.floor( Math.random( ) * (1000+1) ); // рандомное число от 0 до 1000 включительно if (randX > 255 && randX < 610) { link1.style.left = randX + 'px'; break; } } } как-то так
  11. psywalker - мужыг! Однако повторюсь, что не уверен, что по условию можно использовать хаки. Но без них, видимо, никак...
  12. Да что вы все с линейкой лазите. Представьте что у вас нет возможности изменять ширину блоков, вот и приходится извращаться.
  13. Надо мыслить шире, представьте, что это некий блок на абстрактом сайте, в котором еще 3 блока.
  14. 1) if (left > 255 && left < 610) { тра-ля-ля } 2) слишком обширный ответ надо писать, вкратце надо создавать яваскриптом временный див, в него загонять текст ссылки, мерить ширину и высоту дива и убивать временный див. ну или не убивать а пусть себе висит где-нить с left: -9999px; и position: absolute;, чтоб к DOM лишний раз не обращаться.
  15. А как же свойство box-sizing? По поводу второго вопроса додумался до такого решения (тоже некроссбраузерно): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>An XHTML 1.0 Strict standard template</title> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <style type="text/css"> * { margin: 0; padding: 0; font: 12px Tahoma, Arial, sans-serif; } body { margin: 10px; } .main-box { width: 150px; border: 1px solid; } .a, .b, .c { width: 50px; height: 50px; border: 1px solid; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; float: left; } .a { background: red; } .b { background: green; } .c { background: blue; float: none; margin-left: 100px; } </style> </head> <body> <div class="main-box"> <div class="a"></div> <div class="b"></div> <div class="c"></div> </div> </body> </html> Смотреть лучше в Мозилле. UPD: ща проверил, кстати, работает везде кроме ИЕ6(7).
  16. Это да. Есть решение как эмулировать box-sizing в ИЕ6? Про инлайн-блоки было первым о чем я подумал. Но тут остается проблема с ИЕ6. Хотя хз, можно ли по условию задачи использовать кандишнл каменты или CSS-хаки...
  17. Ох ща времени в обрез, но задача интересная. Сделаем как время появится...
  18. Justnewone: Нельзя создавать дополнительные контейнеры. Shugich: Да, это вариант. Интересно прокатил бы он на собеседовании... Я об этом варианте даже не задумывался.
  19. По первому вопросу написал, что нельзя юзать отрицательные маргины. Если есть время, то прошу все-таки код выкладывать. А то на словах туго доходит Не, высоту естественно задавать тоже низя.
  20. Вы слишком категоричны. Решения наверняка есть. Использование таблиц категорически запрещено. Задавать родителю float тоже не выход ибо тогда сам родитель выпадет из потока. Продолжаю гуглить и жду еще варианты решений.
  21. Все можно, в яваскрипте широкие возможности для работы с DOM. И сделать копию ноды не составляет труда.
  22. А вот и возможно, пятнадцать минут гугления дали следующие результаты: .a, .b, .c { width: 50px; height: 50px; border: 1px solid; box-sizing: border-box; -moz-box-sizing: border-box; -ms-box-sizing: border-box; } Работает в Мозилле 3.5 и ИЕ 8. Как сделать кроссбраузерно не допер. Не понятно почему у меня не влазит в ИЕ 6, там же блочная модель другая должна быть.
  23. Я бы еще создавал временный <div> в который помещал бы текст ссылки перед генерацией, чтобы узнавать ширину этого текста и, таким образом, узнать не вылезет ли ссылка из контейнера справа или снизу.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy