Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает position: absolute (https://javascript.ru/forum/misc/9065-ne-rabotaet-position-absolute.html)

bayah 27.04.2010 16:33

Не работает position: absolute
 
Товарищи, есть div, в нем image. При увеличении image, когда размер становится больше границ div'а, собственно image уходит за края.
То есть у div'a стоит стиль overflow: hidden;
Все так и надо.
Теперь мне нужно спозиционировать image относительно окна документа.
Если использовать position:absolute, то image отображается так же как и position: relative, то есть относительно краев div'а. Понятно, что можно указать отрицательные координаты top и left и таким образом увести image за левый и верхний край. Но может быть все таки через position: absolute должно работать?
Мои соображения таковы, что при позиционировании со стилем position:absolute элемент(в моем случае image) выносится за тэг div, то есть перестает быть вложенным, но это видимо невозможно так как стоит owerflow:hidden у div'a.
А как оно на самом деле?)
PS Вот код:

<div id="view_window" style="position:absolute; left:200px; top:100px; width:700px; height:700px; z-index:2; overflow: hidden;>
<img id='map' src="images/Boss.JPG" width="729" height="664" style='position:absolute; left:50px; top:50px'/>
</div>

Kolyaj 27.04.2010 16:38

У div'а стоит position: absolute, поэтому вложенные элементы позиционируются относительно его.

bayah 27.04.2010 18:55

То что стоит у div'a влияет на расположение самого div'a относительно элемента в котором он находится. Разве нет?
В любом случае не помогает менять стиль position div'a.

bayah 28.04.2010 13:39

Сделал расположение image относительно div'a. Координаты получаются отрицательные, но это не критично для моего случая.
Почему не работает абсолютное позиционирование для меня остается загадкой.

Kolyaj 28.04.2010 13:42

Цитата:

Сообщение от bayah
Почему не работает абсолютное позиционирование для меня остается загадкой.

Я вам написал почему.

bayah 28.04.2010 17:19

Kolyaj,
Я вам тоже написал, что это не так.
position: absolute у div'а влияет на расположение самого div'а относительно элементов в которые он вложен, но не на элементы вложенные в этот div

Skipp 28.04.2010 17:27

ыыы что споришь то?) Так элементы вложенные в див позиционируются относительно этого дива, если у них position не равно absolute.

bayah 28.04.2010 17:39

Цитата:

Сообщение от bayah (Сообщение 53264)
PS Вот код:

<div id="view_window" style="position:absolute; left:200px; top:100px; width:700px; height:700px; z-index:2; overflow: hidden;>
<img id='map' src="images/Boss.JPG" width="729" height="664" style='position:absolute; left:50px; top:50px'/>
</div>


У меня как раз position элемента(img) вложенного в див равно absolute
но он все равно позиционируются относительно дива

bayah 28.04.2010 19:19

B@rmaley.e><e,
Если у image position будет statiс, то image располагается как обычно. static - параметр по умолчанию.
В общем, спозиционировать image, если он вложен в div относительно окна документа никак нельзя, правильно?

subzey 28.04.2010 19:25

bayah,
Относительно вьюпорта — position: fixed.

subzey 28.04.2010 19:39

…кстати, из-за «особенности» position: fixed можно делать вот такие вот штуки (прокрутите полосу прокрутки вниз):
<!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></title>
		<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
		<style type="text/css">
			html, body {
				margin: 0px;
			}
			.f {
				position: relative;
				height: 20px;
			}
			.y {
				background: white url(http://img.yandex.net/i/www/logo_bd.png) 50% 50% no-repeat fixed;
				width: 100%;
				position: fixed;
				height: 30px;
			}
			.g {
				background: white url(http://google.ru/intl/en_com/images/logo_plain.png) 50% 50% no-repeat fixed;
				width: 100%;
				position: absolute;
				height: 30px;
			}
		</style>
	</head>
	<body>
		<div class="f"><div class="g"></div><div class="y"></div></div>
		<div class="f"><div class="g"></div><div class="y"></div></div>
		<div class="f"><div class="g"></div><div class="y"></div></div>
		<div class="f"><div class="g"></div><div class="y"></div></div>
		<div class="f"><div class="g"></div><div class="y"></div></div>
		<div class="f"><div class="g"></div><div class="y"></div></div>
		<div class="f"><div class="g"></div><div class="y"></div></div>
	</body>                              
</html>

«Домашнее задание» — разобраться, почему это работает. :)

bayah 28.04.2010 19:47

Если fixed, то картинка висит в одной и той же части окна браузера и не скролится вместе со страничкой. Еще и поверх div'а игнорируя его owerflow:hidden.
Мне не подходит.

subzey 28.04.2010 19:51

Цитата:

Сообщение от bayah
спозиционировать image … относительно окна документа

Гхм-м… Вы не это спрашивали?

bayah 28.04.2010 19:54

subzey,
Это, но в контексте всей темы.
Если коротко, то нужно двигать imag так, чтобы он обрезался краями div'a и при этом image позиционировать относительно документа.

bayah 28.04.2010 19:57

subzey,
А кстати, ваш яндекс должен висеть в одном месте окна при скроллинге? Потому что у меня он скролится обычно. Просто вижу там в CSS fixed, но в CSS не очень разбираюсь пока.

subzey 28.04.2010 20:20

bayah,
а что за браузер у Вас?

bayah 28.04.2010 20:23

subzey,
Файрфокс 3.6.3 и Хром
В обоих - скролится.

bayah 28.04.2010 20:26

О блин, только теперь дошло что за эффект в вашем коде. У меня страничка
форума по ширине не помещается я справа не заметил скролл.
Думал что вся картинка должна просто отображаться не скролясь.

Kolyaj 29.04.2010 12:01

Цитата:

Сообщение от bayah
position: absolute у div'а влияет на расположение самого div'а относительно элементов в которые он вложен, но не на элементы вложенные в этот div

Может матчасть подучите, перед тем как спорить?

bayah 29.04.2010 12:10

Да приведите вы уже пример банальный для меня.
Я руководствуюсь этим:
http://htmlbook.ru/css/position.html
И эмпирическими знаниями.
У меня все сходится.

Kolyaj 29.04.2010 12:24

Цитата:

Сообщение от bayah
Да приведите вы уже пример банальный для меня.

У вас есть свой собственный пример.

http://softwaremaniacs.org/blog/2005...t-positioning/ учите.

subzey 29.04.2010 13:04

  • static — ведет себя как обычно, значение по умолчанию;
  • relative — положение и размеры в потоке такие же, как у static, при указании top/left/bottom/right позиционируется от соответствующих углов того положения, которе элемент занимал бы, будь он static;
  • absolute — элемент не занимает места в потоке, позиционируется от соответствующих углов ближайшего родителя, имеющего position relative, absolute или fixed, либо от ICB, если такового нет. По умолчанию левый верхний угол элемента находится в том месте, в котором был бы верхний левый угол элемента, будь он static и имея нулевой margin;
  • fixed — элемент не занимает места в потоке, позиционируется от порта просмотра. По умолчанию левый верхний угол элемент находится в том месте, в котором был бы верхний левый угол элемента, будь он static и имея нулевой margin.

    Вопросы?

bayah 29.04.2010 13:39

Цитата:

Сообщение от Kolyaj (Сообщение 53537)
У вас есть свой собственный пример.

http://softwaremaniacs.org/blog/2005...t-positioning/ учите.

Вот из этой статьи становится все ясно. Что только static не порождает внутри себя блок, что в свою очередь делают другие способы позиционирования. Об этом я не знал. Таким образом, в моем примере, если я позиционирую div как угодно, кроме static, то image, расположенный в этом блоке спозиционировать относительно документа не получится никак. Только если использовать fixed. Но так как fixed не будет скролится со страницей, мне он тоже не подойдет. Я правильно излагаю?

subzey 29.04.2010 16:04

Верно.

bayah 29.04.2010 18:18

Спасибо всем за участие.)


Часовой пояс GMT +3, время: 11:47.