Jump to content
  • 0

CSS position: absolute Vs relative


Kalisnik
 Share

Question

Код CSS:


.base {
width: 900px;
background-color: red;
position: relative;
margin: auto;
}
.left {
width: 150px;
height: 500px;
position: absolute;
background-color: green;
left: 20px;
top: 200px;
}

Код HTML:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Test</title>
<link rel="stylesheet" type="text/css" href="myCSS.css" />
</head>
<body>
<div class="base">
<div class="left"></div>
</div>
</body>
</html>

Вопрос: Почему я вижу зеленый блок, но не вижу красного?

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

rash Спасибо. Плюс репутации почему-то не работает. В догонку еще спрошу. Если я делаю класс "left" тоже relative, красный блок я вижу, однако... почему в этом случае в классе "left" margin-top и margin-bottom смещают также и родительский блок класса "base", хотя по логике смещаться ведь должен дочерний блок внутри родительского?

Link to comment
Share on other sites

  • 0

rash Спасибо. Плюс репутации почему-то не работает. В догонку еще спрошу. Если я делаю класс "left" тоже relative, красный блок я вижу, однако... почему в этом случае в классе "left" margin-top и margin-bottom смещают также и родительский блок класса "base", хотя по логике смещаться ведь должен дочерний блок внутри родительского?

Нет, логика может и верна человеческая, но не специфичная. Это называется margn collapse

Link to comment
Share on other sites

  • 0

rash Спасибо. Плюс репутации почему-то не работает. В догонку еще спрошу. Если я делаю класс "left" тоже relative, красный блок я вижу, однако... почему в этом случае в классе "left" margin-top и margin-bottom смещают также и родительский блок класса "base", хотя по логике смещаться ведь должен дочерний блок внутри родительского?

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

Чтобы «отключить» это нужно родителю задать бордер или использовать не маргин дочернего элемента а паддинг родителя.

Link to comment
Share on other sites

  • 0

rash Спасибо. Плюс репутации почему-то не работает. В догонку еще спрошу. Если я делаю класс "left" тоже relative, красный блок я вижу, однако... почему в этом случае в классе "left" margin-top и margin-bottom смещают также и родительский блок класса "base", хотя по логике смещаться ведь должен дочерний блок внутри родительского?

Чтобы «отключить» это нужно родителю задать бордер или использовать не маргин дочернего элемента а паддинг родителя.

Либо overflow: hidden;

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