Jump to content
  • 0

Позиция элементов на странице


Mishus3W
 Share

Question

Доброго времени суток!

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

Хочу сразу сказать, что ширина и высота котнтейнера не заданы.

Код который я написал, приведенный ниже:


<style>
.A, .B{
width: auto;
height: auto;
display: block;
box-sizing: border-box;
font-size: 36px;
}

.A{
position: absolute;
margin: 30px;
background-color: #07A2FE;
border: 1px solid #0080CD;
}
.B{
position: relative;
background-color: #FFCF3F;
border: 1px solid #E9AF00;
top: 50%;
left: 50%;
}
</style>
<div class="A"><div class="B">Example</div></div>

h_1375876735_8697708_04eab8b448.jpg

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Потому что верстать нужно с пониманием. Зачем задавать width и height : auto если auto и так задано блокам по умолчанию?

Так почему же тогда ширина не равна нулю?

Потому что при значении auto ширина задается исходя из содержимого контейнера.

И абсолютное позиционирование надо было задать блоку B а не A. Ты же не понимая удалил блок А из потока документа. и хотел блок B расположить относительно его. А блоку B задал относительное позиционирование который вычисляет путь относительно своей позиции в потоке. Из-за такого бреда в результате блок B не в состоянии вычислить высоту в процентах.

Учи матчасть и не пиши классы большими буквами.

Edited by 121990
Link to comment
Share on other sites

  • 0
Зачем задавать width и height : auto если auto и так задано блокам по умолчанию?

Я это сам знаю. Дело в том что это задано для наглядности примера, ведь на одном из других форумов возникло много недоразумений без указания этих строк кода

Потому что при значении auto ширина задается исходя из содержимого контейнера.

Почему же тогда высота не задается исходя из содержимого контейнера?

Из-за такого бреда в результате блок B тупит.

Тогда почему смещение влево работает правильно?

не пиши классы большими буквами.

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

И абсолютное позиционирование надо было задать блоку B а не A.

Вот задал, который из них работает так как в исходном примере?

h_1375884507_4640260_8d6eee1c48.jpg

Edited by Mishus3W
Link to comment
Share on other sites

  • 0
ты опять выкидываешь свой бред...

Хорошо, если так уж случилось, напиши этот код так чтобы получилось следующее:

h_1375888996_3808317_57ff281a67.jpg

если у тебя это получится - я здюсь, иду заново разбираться в CSS и HTML :P

Еще добавлю размеры блока A должны зависеть от размеров блока B, но размеры блока B не заданы

Link to comment
Share on other sites

  • 0

Интересно девки пляшут... Размеры не заданы? Так почему же тогда ширина не равна нулю?

Вы слабо понимаете что от чего зависит. Вы стараетесь манипулировать позиционированием и размерами, не понимая что на что влияет.

1) размеры блока А зависят от размеров В

2) Размеры блока В зависят от контента содержащегося в нем

3) Для того чтобы сдвинуть блок В так как вы хотите нужно задать ему абсолютное позиционирование относительно блока А. Но как только вы это сделаете блок А потеряет размеры ибо абсолютно позиционированный блок выпадает из потока и не влияет на размеры элементов в потоке.

4) Отсюда вывод нужно разделить две задачи на 2 части: получить размеры блоку А и позиционировать блок В

5) сделать это можно вот так: http://jsfiddle.net/wSx38/

6) если вы присмотритесь приходится ухищряться пряча контент с помощью прозрачного текста и создавать псевдоэлемент который мы и видем вместо блока В который в свою очередь получает контент из атрибута блока В содержащего тот же же что и в части контента.

Если поймете я за вас рад ). Я другого варианта не вижу, может конечно кто-то более опытный на этом форуме предложит более красивый вариант. А вам удачи. Хороший пример для разминки мозгов.

Edited by wwt
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy