Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Чтобы футер "скрывал" нижнюю часть колонки.
 
 автор: Boris   (20.07.2010 в 08:25)   письмо автору
73 Кб
 
 

Здравствуйте.
Проблема такая.
Имеется верстка - две колонки (слева меню, справа контент).

В левой колонке, сразу под меню имеется декоративная картинка высотой около 500 px.
Картинка привязана к низу меню, а высота меню переменная.

Как сверстать так, чтобы в случае когда мало контента, эта картинка "скрывалась".
См. рисунок.

Пока мысль только такая:
Абсолютом позиционировать футер к низу общего контейнера (wrap), таким образом он будет перекрывать картинку на свою высоту (162 px), а этого мало.

Буду очень благодарен за советы!

  Ответить  
 
 автор: psychomc   (20.07.2010 в 11:04)   письмо автору
 
   для: Boris   (20.07.2010 в 08:25)
 

думаю на картинку нужно вешать свойства position: absolute и z-index. это я думаю поможет сделать так, чтобы блок с картинкой не влиял на ширину основного контента

  Ответить  
 
 автор: Boris   (20.07.2010 в 11:44)   письмо автору
 
   для: psychomc   (20.07.2010 в 11:04)
 

Спасибо, но думаю это не подойдет.
Основная проблема - привязать верх картинки к низу меню, но высота меню переменная (могут пункты добавитьс или подпункты раскрыться)

Поэтому координаты положения картинки определить однозначно нельзя.

position: absolute;
top: ????
left: 0;

  Ответить  
 
 автор: sim5   (20.07.2010 в 12:31)   письмо автору
 
   для: Boris   (20.07.2010 в 08:25)
 

Когда сможете получать ответ на вопрос "мало ли контента или нет", сможете управлять своей картинкой.

  Ответить  
 
 автор: Boris   (20.07.2010 в 12:48)   письмо автору
 
   для: sim5   (20.07.2010 в 12:31)
 

Как?
Не понял. Контент влияет на высоту всей верстки. Если контента нет вообще, то высота ограничивается только высотой блока menu.

<div class="columns">
 <div class="left-col">
  <div class="menu">
   <ul><li>....</li></ul>
  </div>
 </div>
 <div class="content">content</div>
</div>
<div class="footer">footer</div>

  Ответить  
 
 автор: sim5   (20.07.2010 в 12:55)   письмо автору
 
   для: Boris   (20.07.2010 в 12:48)
 

Как хотите. А откуда вы будете знать, что контента именно мало, и картинку надо спрятать? И что значит мало, по отношению к чему? Величина "мало контента", это "фантом".

  Ответить  
 
 автор: Boris   (20.07.2010 в 13:19)   письмо автору
 
   для: sim5   (20.07.2010 в 12:55)
 

Спасибо за беседу.

Приведу в цифрах :)
Пусть высота меню равна 200 px;
Высота футера 100 px;
Высота картинки 500 px;

1). Тогда, если в блоке content текст отсутствует, то моя верстка становится высотой 200+100=300 px - ограничивается высотой menu и картинку вообще не видно.

2). Если в content поместить столько текста, чтобы он растянул блок до высоты , ну, например 400 px, то высота верстки 400+100=500 px и картинку видно на 200px.

  Ответить  
 
 автор: sim5   (20.07.2010 в 13:30)   письмо автору
 
   для: Boris   (20.07.2010 в 13:19)
 

Конкрентые значения не важны, главное, если меньше - скрыть.

  Ответить  
 
 автор: Boris   (20.07.2010 в 14:15)   письмо автору
 
   для: sim5   (20.07.2010 в 13:30)
 

Ну да, в этом и вопрос.

  Ответить  
 
 автор: sim5   (20.07.2010 в 14:28)   письмо автору
 
   для: Boris   (20.07.2010 в 14:15)
 

Ну и выполняйте, если высота div class="content" меньше или равна div class="left-col", не показываем.

  Ответить  
 
 автор: Usta   (20.07.2010 в 14:35)   письмо автору
 
   для: Boris   (20.07.2010 в 14:15)
 

А у вас картинка в img или можно сделать bg??

  Ответить  
 
 автор: Boris   (20.07.2010 в 14:39)   письмо автору
80 Кб
 
   для: Usta   (20.07.2010 в 14:35)
 

Желательно bg.

  Ответить  
 
 автор: Boris   (20.07.2010 в 16:07)   письмо автору
 
   для: Boris   (20.07.2010 в 14:39)
 

Я решил определять высоту меню посредством Js.
Подскажите пожалуйста, как подставить в css вычисленную высоту?

Типа того:
.columns {
    padding: 0 0 200px 0;
    background: url(images/letters_in_left.gif) 0 [полученная высота] no-repeat;
}

  Ответить  
 
 автор: psychomc   (20.07.2010 в 16:17)   письмо автору
 
   для: Boris   (20.07.2010 в 16:07)
 

document.getElementById('id_элемента').style.width = '....px';

  Ответить  
 
 автор: Boris   (20.07.2010 в 16:19)   письмо автору
 
   для: psychomc   (20.07.2010 в 16:17)
 

Спасибо за ответ, но у меня бекраунд.

  Ответить  
 
 автор: psychomc   (20.07.2010 в 18:16)   письмо автору
 
   для: Boris   (20.07.2010 в 16:19)
 

пардон

document.getElementById('id').style.backgroundPosition

  Ответить  
 
 автор: sim5   (20.07.2010 в 16:40)   письмо автору
 
   для: psychomc   (20.07.2010 в 16:17)
 

Уверены?

  Ответить  
 
 автор: Boris   (20.07.2010 в 16:57)   письмо автору
 
   для: sim5   (20.07.2010 в 16:40)
 

Да, я узнаю высоту блока Меню и на это значение смещаю вниз бекраунд (картинку) в блоке columns.

Картинка оказывается прямо под блоком Меню. См. рисунок парой постов выше.
Это тренировочный пример. Тут просто задача поместить бекраунд под блоком div_id.


<body onload="SetItem();"> 
<style>
 #div_id {
     background: red;
 }
#columns {
    padding: 0 0 200px 0;
}
</style>
<div id="columns" style="padding: 0 0 200px 0">
<div id="div_id"> 
    dfdfdfdf<br><br> 
    fgffgfgfgfg<br><br> 
    fgffgfgfgfg<br><br> 
    fgffgfgfgfg 
</div>
</div> 


<script language="JavaScript" type="text/javascript">
function SetItem()
{
var oBlock = document.getElementById('div_id');
var el = document.getElementById('columns');
el.style.background = "url(images/letters_in_left.gif) 0px "+oBlock.offsetHeight+"px no-repeat;"
}
</script>


Но работает только в ИЕ :((

  Ответить  
 
 автор: sim5   (20.07.2010 в 17:05)   письмо автору
 
   для: Boris   (20.07.2010 в 16:07)
 

Какая-то лажа у вас непонятная. Вот ваши элементы:
<div class="columns"> 
 <div class="left-col"> 
  <div class="menu"> 
   <ul><li>....</li></ul> 
  </div> 
 </div> 
 <div class="content">content</div> 
</div> 
<div class="footer">footer</div>

Если картинка, это фон под меню, то от чего тогда такая головная боль? Меню либо будет ее перекрывать, либо нет, но уж двигать ее никак не сможет. Зачем тогда вы вставляете это изображение? И если это просто декоративный фон, то зачем прятать изображение?
Понятно еще, что внизу меню есть элемент, в котором изобажение, или фон у него изображение. Такой элемент будет сдвигаться вниз в зависимости от высоты меню, и его в зависимости от высоты элемента контента нужно либо показать, либо скрыть.
background: url(images/letters_in_left.gif) 0 [полученная высота] - у вас оно что, резиновое? Узнавать надо не высоту изображения фонового, вы и так ее по идее знать должны, а высоту родительского контейнера меню и высоту контейнера контента. Если высота контента плюс/минус условие, меньше высоты меню плюс высота изображения, значит скрыть изображение (элемент с ним).
Подставляют не в CSS, а указывают стиль элементу.

  Ответить  
 
 автор: Boris   (20.07.2010 в 17:43)   письмо автору
70.6 Кб
 
   для: sim5   (20.07.2010 в 17:05)
 

>background: url(images/letters_in_left.gif) 0 [полученная высота] - у вас оно что, резиновое?
В квадратных скобках указывается значение, на которое бекраунд смещается относительно верхней границы блока для которого он задан.

background: url(images/letters_in_left.gif) 0 0 no-repeat;

- прижать бекраунд в верхний левый угол.

>Такой элемент будет сдвигаться вниз в зависимости от высоты меню, и его в зависимости от высоты элемента контента нужно либо показать, либо скрыть.
только его нужно скрывать постепенно.

См. рисунок.

  Ответить  
 
 автор: sim5   (20.07.2010 в 17:56)   письмо автору
 
   для: Boris   (20.07.2010 в 17:43)
 

Если у вас эта картинка фоновая для элемента, который является родителем для меню, то left bottom позиция ему, а меню его и будет перекрывать по мере своей. Вот я и не понимаю, зачем тогда вам вся эта кухня?
Если это изображение уж настолько ценно и необходимо, то измеряйте высоту контента, сравниваейте с выстой меню плюс высотой изображения, и изменяйте стиль позиции по высоте на top, например.

  Ответить  
 
 автор: Boris   (20.07.2010 в 18:01)   письмо автору
 
   для: sim5   (20.07.2010 в 17:56)
 

Спасибо за внимание ко мне, но нужно чтобы его скрывало с низу, а меню ничего не перекрывало.
Вот в чем сложность!

Ну я же елочку не зря нарисовал.

  Ответить  
 
 автор: sim5   (20.07.2010 в 18:07)   письмо автору
 
   для: Boris   (20.07.2010 в 18:01)
 

То есть можно обрезать снизу, а не скрывать его? Тогда зачем вычисления, поместите сразу под меню это изображение (не нравится, можете div c размером его и фоном этой картинки), поместите эти два элемента в родительский div со стилем overflow: hidden, высотой 100%, так чтобы она зависела от высоты блока контента, и все должно по идее получится так, как вам надо.

  Ответить  
 
 автор: Boris   (20.07.2010 в 19:44)   письмо автору
 
   для: sim5   (20.07.2010 в 18:07)
 

Ключевая фраза
"чтобы она зависела от высоты блока контента"

Когда контент превышает высоту экрана, появляется прокрутка, но ограниченный (overflow: hidden) блок с моей картинкой так и остается ограниченным высотой экрана.
Я в тупике.

<body> 

<style>
 html, body { 
  height:100%; 
  margin: 0;
  padding: 0;
}
.wrap {
    height:100%;
    background: blue;
    float: left;
}
#inner_block_1{
  height:100%;
  min-height:100%;
  background-color: red;
  overflow: hidden;
  width: 500px;
  float: left;
}
#inner_block_2{
  height:auto!important;
  height:100%;
  min-height:100%;
  width: 500px;
}
.menu {
    background: pink;
    width: 500px;
    height: 400px;
}
.img {
    background: brown;
    width: 100px;
    height: 500px;
}
.content {
    width: 400px;
    float: right;
    height: 2000px;
    background: orange;
}
</style>
<body>
 <div class="wrap">
  <div id="inner_block_1">
   <div id="inner_block_2">
    <div class="menu">menu</div>
    <div class="img">img</div>
   </div>
  </div>
 <div class="content">content</div>
</div>
</body>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования