Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение высоты div в зависимости от контента 
:(
    Опции темы
motorway
  Дата 8.5.2013, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Имеется некий div с заданным классом, в котором прописана постоянная высота в пикселях.
Имеется код внутри этого div'а, который отображается в нём.
Как определить позицию самого нижнего элемента от верха div'а, и если она больше, чем его высота, автоматически изменить высоту, чтобы весь контент был виден в нём?
Пример:
Код

<div id="a" class="b">
<h1>A</h1>
<img src="a.jpg">
</div>

В css прописано height:... px;

Спасибо
PM MAIL   Вверх
Arantir
Дата 9.5.2013, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



А почему именно так?

Например,
Код

<div style="overflow: auto; min-height: 100px;">
    <div style="float: left;">
      <h1>A</h1>
      <img src="a.jpg">
    </div>
</div>

будет делать высоту от min-height до высоты контента (контент всегда виден полностью). И даже без JavaScript.

http://jsfiddle.net/g8ZBL/


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
motorway
Дата 9.5.2013, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Спасибо. Попробовал у себя этот код, но во внутреннем диве появляются полосы прокрутки. Наверно, от них можно избавиться?
Хотя если контент там такой, что не умещается, они по идее должны быть.

Добавлено через 1 минуту и 21 секунду
В общем, всё-таки не совсем то, что нужно. Сама высота исходного дива та же - а лишь появляются полосы прокрутки внутри.
У меня же по смыслу должен растягиваться основной див.
PM MAIL   Вверх
motorway
Дата 9.5.2013, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Этот див вложен ещё в несколько. Может, из-за этого?
Или можно через offsetTop как-то сделать?
PM MAIL   Вверх
Arantir
Дата 9.5.2013, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Значит у вас лишние атрибуты в стилях прописаны. Покажите весь класс для блока.

При overflow: auto блок буде растягиваться так, чтобы были видны все внутренние блоки с float: right | left. Что видно из приведенного выше примера http://jsfiddle.net/g8ZBL/ 


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Arantir
Дата 9.5.2013, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



В JavaScript полную высоту блока вместе с контентом показывает свойство scrollHeight. Если задать блоку высоту, взятую из его scrollHeight,  то он станет размером со свой контент.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
motorway
Дата 9.5.2013, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Вот тут http://gg.gg/6ao2 - блок с основным контентом div id="introduction" и остальные не видны на полную высоту. Всё перекопал в CSS, убрал фиксированную высоту, но пока не работает.

Добавлено через 1 минуту и 9 секунд
Там сразу несколько классов у внешних дивов. У них тоже убрал фикс. высоту.
PM MAIL   Вверх
Arantir
Дата 9.5.2013, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



Вот так всегда. Спрашивают на форуме одно, а на деле у них совершенно другое.

Первая ваша проблема в том, что блок совсем не такой, как вы показывали в первом посте. А примерно такой:
Код

<div id="a" class="b">
    <div>500px</div>
    <div>200px</div>
    <div>100px</div>
    <div>300px</div>
    <div>400px</div>
</div>

При этом Вы хотите неким образом делать высоту блока a такой, как у одного из внутренних. Более того, там скроллер и все это делается динамически. То есть CSS уже не прокатит (он больше подходит для статического, постоянного эффекта).

Уберите фиксированную высоту из класса panel (внутренние блоки) и добавьте в скрипт после переключения на следующий блок установку высоты для блока с классом scroll равную высоте того panel. на который был переход.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
motorway
Дата 9.5.2013, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Я написал про тот див, потому что сначала думал, что другие не должны повлиять.
Цитата

добавьте в скрипт после переключения на следующий блок установку высоты для блока с классом scroll равную высоте того panel. на который был переход. 

Код

document.getElementById('a').scrollHeight=document.getElementById('introduction').scrollHeight;

Вот таким образом?
PM MAIL   Вверх
Arantir
Дата 9.5.2013, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55



scrollHeight доступно только для чтения, как и другие похожие свойства http://www.w3schools.com/jsref/dom_obj_all.asp
Используйте стилевые свойства для изменения стиля элемента (в т.ч. его высоты):
Код

element1.style.height = element2.scrollHeight;



--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
motorway
Дата 9.5.2013, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Что-то не едет... при этом пишет в консоли 
Ошибка: SecurityError: The operation is insecure.
Источник: http://.../script/global.js
Строка: 23
То есть, с того домена, хотя пробую на локалхосте.
Вставил вот так:
Код

document.getElementById('a').style.height=document.getElementById('introduction').scrollHeight;

Ну если не получается, убиваться, конечно, не надо smile

Добавлено через 2 минуты и 4 секунды
Да, изменил, ссылки на свой хост, уже лучше, правда, кое-что поехало.

Добавлено через 8 минут и 37 секунд
Спасибо. Блок растянулся, правда, при этом поехало кое-что, но это отдельно уже. Видимо, надо пробовать уже на установленном движке.
PM MAIL   Вверх
motorway
Дата 10.5.2013, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Я снова начал разбираться, так как там не всё правильно. Как можно растянуть прямоугольник картинки фона PNG, который задан? Чтобы картинка растягивалась на всю высоту контента?
PM MAIL   Вверх
Arantir
Дата 10.5.2013, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 14
Всего: 55





--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
motorway
Дата 10.5.2013, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



В общем, снова начал делать - убрал фикс. высоты у дивов, и при этом всё растянулось до высоты первого блока вниз. То есть, и на других вкладках тоже стало до уровня этой вкладки большое пустое место.
Не пойму, как задать высоту соотв. блока для каждой из вкладок:
Код

document.getElementById('slider').style.height=document.getElementById('requirements').scrollHeight;
document.getElementById('scroll').style.height=document.getElementById('requirements').scrollHeight;
document.getElementById('scroll1').style.height=document.getElementById('requirements').scrollHeight;

При переключении непонятно. И этот код почему-то не работает.

Добавлено через 4 минуты и 59 секунд
Похоже, что не определяется свойство document.getElementById('slider').style.height
При проверке оно пустое.
PM MAIL   Вверх
motorway
Дата 10.5.2013, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



А как можно сделать плавное изменение высоты слайдеров? При прокрутке слайдеров они меняются скачком.

Добавлено через 3 минуты и 5 секунд
Точнее, либо плавное без всяких наездов друг на друга при смене, либо уже полностью готовый вариант с замораживанием экрана на момент смены.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.