Odrin
User-
Posts
84 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Odrin
-
А зачем у top делать position:absolute? Блин, надо делать, работа стоит... А я никак не могу решиться, JS или Ваш способ.
-
1. Я не совсем подробно описал. Зеленый блок - не вся страница. Сверху там еще шапка. Но это не важно в общем-то. 2. Нет, вертикальная полоса прокрутки там всегда есть, там очень много элементов. 3. Не понимаю, как, если честно =) Можно подробней? Еще раз в двух словах, что надо - изменяем высоту окна браузера и синие блоки остаются неизменными по высоте и расположению относительно родительского блока, а красный занимает все свободное место между ними.
-
Добрый день. Вот такой вопрос. Зеленый блок растягивается на высоту страницы. Два голубых блока - фиксированной высоты, между блок, в котором много элементов и вертикальная прокрутка (список). Необходимо, что бы красный блок растягивался и занимал все пространство между синими блоками. Как это сделать? Интересует решение задачи именно на CSS, т.к. делать это через JS - путь к ошибкам и трудностям в будущем. P.S. В идеале, высота голубых блоков неизвестна и может меняться.
-
Добрый день. Копаюсь в исходниках Leaflet и нашел там немного магии, которую никак не могу понять =) А именно Class.js. В методе extend: var F = function () {}; F.prototype = this.prototype; var proto = new F(); proto.constructor = NewClass; NewClass.prototype = proto; Что здесь происходит и для чего эта магия с прототипами? Для чего тут переменная F? И что такое и какую функцию выполняют InitHooks? (это уже дальше по коду)
-
Проще написать эту функцию самому или найти в нете решение. Какая именно вас интересует?
-
Уважаемый, Я далеко не новечек и перед тем как "однозначно заявлять НЕТ", я подробно изучил Ваши ссылки.
-
Все верно, для общего развития полезно =)
-
Great Rash, Спасибо, все теперь понятно. freeneutron, Если решать эту задачу таким способом и, допустим, уже по двум осям с произвольным направлением движения, то при каждом столкновении высчитывается вектор скорости тела (значения Vx и Vy), timestamp заново сбрасывается на Date.now() и пускаем тело по формуле равноускоренного движения с новыми начальными значениями до следующего столкновения. Правильно?
-
Выглядит хорошо, но откуда берутся эти коэффициенты world? Как вот это работает? ball.vy += world.gravity * world.friction; ball.y += ball.vy;
-
nerv, Совсем не то. freeneutron, Это и так понятно. "Формульно описать" я имел ввиду динамику движения. Со столкновением все просто. У нас есть текущее состояние тела (для простоты будем только по оси Y). Координата - Y, скорость по оси Y - Vy, и дельта T (Date.now() - сохраненное время). Соответственно первое, что приходит в голову: this._recalcPosition = function () { var now = Date.now(); var dt = (Date.now() - this.timestamp) / 1000; this.y = this.y + this.vy * dt + g * dt * dt / 2; this.vy = this.vy + g * dt; this.timestamp = now; } Но мяч почему-то падает очень медленно. Собственно вот как это выглядит. Уж не потому ли это, что 1 м. != 1 px А время я привожу к секундам, да и ускорение свободного падения в м/с?. Так все таки, как это правильно сделать-то?
-
Добрый день! Похоже школьные годы совсем забылись и мозг отказывается работать =) Простая задача - объект (пусть это будет условно "мяч") падает с высоты h на поверхность, отскакивает, поднимается и снова падает. Силу трения и остальные внешние силы не учитываем, т.е. прыгает бесконечно. С HTML все просто: <body> <div style="margin:0 auto; width: 802px;"> <canvas id="canvas" width="800" height="600" style="border:1px solid;"></canvas> </div> </body> JS. Запускаем анимацию: window.onload = function () { var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); var engine = new Engine(ctx); var raf = window.requestAnimationFrame || window.msRequestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame; var myRedrawFunc = function () { engine.refresh(); raf(myRedrawFunc); } raf(myRedrawFunc); } Код "движка": function Engine(ctx) { this.width = 800; this.height = 600; this.ctx = ctx; this.renderObjects = []; this.refresh = function () { this.ctx.clearRect(0, 0, this.width, this.height); for (var i = 0; i < this.renderObjects.length; i++) { this.renderObjects[i].draw(this.ctx); } } this.addObject = function (obj) { this.renderObjects.push(obj); } } Ну и сам "мяч": function RenderObject(x, y) { this.x = x; this.y = y; this.vx = 0; this.vy = 0; this.width = 64; this.height = 64; this.img = new Image(); this.img.src = "/img/ball.png"; this._recalcPosition = function () { // ??????? } this.draw = function (ctx) { this._recalPosition(); ctx.drawImage(this.img, this.x, this.y, this.width, this.height); } } Тут все понятно. С равноускоренным падение так же все просто, Y = Y0 + V0 * T + (g * T * T) / 2. Т.е. зная начальную высоту и время создания объекта (запоминаем Date.now()) рассчитывается положение тела. Но далее встает вопрос о столкновении с поверхностью. Понятно, что нужно учитывать текущую скорость и изменение координаты и скорости за промежуток времени. А при столкновении умножать скорость на -1. Но вот как это формульно описать?
-
Я всегда это в одну строчку записываю. document.getElementById("edit") && (document.getElementById("edit").size = '12');
-
Спасибо, сам разобрался =) Стоило только нарисовать и все встало на свои места... Надо было сразу так сделать Где- то с час в голове все это пытался представить)
-
Сразу картинка Делаю собственный скролл.Блок1 - то, что отображается, блок2 таскается вверх/вниз. (top меняется) Подскажите, по какой формуле мне посчитать X - положение скролбара относительно блока, в котором он отображается. Я пришел к этому x = top / (блок2 / блок1). (везде имеется ввиду высота этих блоков) Но это не правильно - скроллбар до конца не опускается. Что то мозг мой начинает закипать, спасите! =)
-
Хостится у меня на Google App Engine небольшой сайтец. И вот последние несколько дней наблюдаю в логах странную картину - каждые 30 минут приходит GET запрос на favicon.ico С одного и того же IP - 82.150.190.194 Посмотрел через whois - вроде как Чехия. Есть какие- нибудь идеи, что это такое? И нафига чехам мой favicon каждые 30 минут?
-
Для этого Вы добавили в страницу еще 1 div. А это не есть хорошо.
-
Тем, что отступа между блоками нету. А мне именно это нужно. Ну это уже вырожденный случай. И, как я уже писал выше, "И последнее правило — overflow(любое значение, кроме visible)". Да и еще +2 способа решения этой задачи =)
-
Еще хуже =) В общем сам разобрался =) http://jsfiddle.net/keut3/4/ Помогла эта статья. Может кому еще пригодится. Если в двух словах - как я и подумал, это "Margin Collapsing". "Если у родительского элемента нет ограничивающих факторов( об этих факторах я напишу ниже ), то margin переходит от внутреннего элемента к внешнему, после чего выбирается по старой схеме этот margin ( если одноименные. то выбирается наибольший, для разноименный происходит сложение .)" И решение: "Внешнему элементу поставить border, например border:1px solid black; Можно добавить padding, например padding:10px; И последнее правило — overflow(любое значение, кроме visible)" P.S. Статью однозначно в закладки)
-
padding не катит, как видите. Нужно, что бы серый div отступал от родителя. Считаю absolute плохим тоном. Использовать его надо только тогда, когда без него не обойтись. Для отступов существует margin. Только с какого он тут не работает и как надо сделать, чтоб работал?
-
вот простой пример - http://jsfiddle.net/keut3/ Почему так выходит? Ведь у вложенного дива (.panel) отступы должны браться относительно родителя (.phone)? А выходит, как будто margin задан body. Как исправить? Наверно, это как- то связанно с Margin Collapsing? Никогда его смысла не понимал...
-
Еще Developer Tools в Chrome умеет приводить в читаемый вид. Кнопка "Pretty print"
-
Можно ли затемнить, или высветлить один край бэкграунда в диве.
Odrin replied to Archer_x's question in HTML Coding
Сделать часть прозрачным - нет. Высветлить - да. -
Всем привет! На сайте есть несколько форм, одна из них - форма авторизации. Если залогинившись пользователь нажимает у себя "Сохранить пароль", то логин и пароль начинают подставляться в еще одну форму на сайте. Вторая форма к авторизации не имеет никакого отношения, name у input'ов и у самих форм заданы разные, единственное чем формы похожи - два поля ввода и у обоих type такие же как в авторизации (text и password). Как сделать что бы браузер не заполнял автоматически эту форму? У меня все это происходит в Chrome. В других браузерах не смотрел. autocomplete="off" Сам нашел Спасибо =)
-
Вот хороший сайт для поиска вдохновения в подборе цветов design-seeds.com
-
ScriptJava Framework - $$().$$().$$().$$().$$()...
Odrin replied to perepyk's question in JavaScript
Просто до вас его уже сделали. Давно. Лучше. На много лучше. И удобнее. И с великим множеством плагинов. И еще много- много "и ...". С сайта вашего: //вставляю текст в элемент и меняю цвет $$('result','Другой текст').$$('color','#ffffb6'); Вы издеваетесь? =) Или это: var e = function(event){$$('result','событие onclick получено');} $$e.add($$('result'),'click',e); Для сравнения, то же самое на jQ: $('#result').click(function(){ $(this).text('событие onclick получено'); });