CSS / JS 100% высоты вставки с помощью jQuery Sliding Header - PullRequest
1 голос
/ 13 апреля 2011

Я искал последние два часа и не смог найти решение именно этой ситуации.

У меня есть веб-сайт, на котором я разрешаю пользователю «выскакивать» встроенный видеопоток от третьей стороны, такой как justin.tv. Когда они это делают, я помещаю в окно маленький заголовок полной ширины, который в основном скрыт за исключением 10px вверху.

Когда они наводят область на 10 пикселей, заголовок расширяется до содержимого, предоставляя им некоторые пункты меню, такие как «всплывающее окно».

Проблема в том, что независимо от того, что я делаю (чистый CSS, CSS / JS и т. Д.), Я не могу получить его так, чтобы в каждом случае, будучи:

  • Создано всплывающее окно, заголовок отображается на 40px, через некоторое время он возвращается к 10px
  • Пользователь наводит курсор на заголовок, он увеличивается на 40px
  • Пользовательская мышь перемещается от заголовка, она сокращается до 10px

Встроенное видео займет все оставшееся место в окне, и мы никогда не увидим полосу прокрутки в окне.

Я получил "в основном" работу с использованием javascript для изменения размера div, но он плохо работает в сочетании с функцией jquery.animate (), которая заботится об изменении высоты заголовка.

Любая помощь приветствуется!

EDIT:

Пример половины работы можно найти по адресу:

http://wellplayed.org/channel/now_live

В зависимости от того, какие каналы в прямом эфире, когда вы читаете это, нажмите на один из них, и на странице «Просмотр потока» найдите кнопку «Всплывающий поток» вверху слева.

Пожалуйста, обратите внимание, что я исправил некоторые из способов, как это было сделано в моей среде разработки, так что это не совсем так плохо, как там.

1 Ответ

0 голосов
/ 13 апреля 2011

Спасибо за публикацию визуальной информации о том, что вы пытались сделать

Я думаю, что в этом случае было бы намного проще, если бы вы использовали абсолютное позиционирование, чтобы была только одна переменная (верхняя координата)это требует манипуляций, и вам не нужно выполнять функции изменения размера, AP (абсолютное позиционирование) позаботится об этом тоже.

Суть в том, что вам нужны и div, и bar, и контейнер для видео, чтобы анимироватьв то же время, и когда они анимируются, вам также нужно, чтобы размер встроенного объекта изменялся с той же скоростью. Я обнаружил, что было слишком много вычислений, и даже тогда я не мог заставить объект изменить размер вместе с его родителем.на любой скорости ... так что я подумал, что проще сделать CSS как mych, а затем просто использовать jQuery для перемещения позиции

Главное - убедиться, что верхний бар #stream-bar-hover всегдатакой же высоты .. так что не надевайте прокладки и т. д. на нем, у вас уже есть #stream-bar внутри, так что любые украшения можно поместить туда

Я продолжалисходя из того, что это верхнее левое изображение было 38x38 в соответствии с вашим HTML, но вы можете вычислить следующий бит по-другому, если хотите, чтобы он был меньше, к тому времени, когда я добавил границу 1px, отступы 2px и поле 2px в #stream-bar, что означаловысота панели парения должна была составлять 48 пикселей (я добавил переполнение: скрыто на всякий случай;))

Тогда абсолютно позиционируйте #stream-bar-hover и #stream-popup, чтобы они оба заполняли различные части экранапоэтому top: 0; для столбца и top: 48px; для видеоконтейнера, правая левая и нижняя координаты этих двух элементов div никогда не должны изменяться путем изменения только верхнего значения, с которым должны работать ваши отложенные функции и функции наведения, вам просто нужночтобы анимировать координаты двух вершин div в одно и то же время

преимущество этого метода в том, что ему не нужна функция window.resize (), которую, я думаю, ваш метод будет

Вот рабочаяпример: ссылка с скрипкой для кода: здесь

...