2016-05-09 2 views
0

Я не очень разбираюсь в css. Я не дал никакого положения и имел css, какКогда точно использовать позицию относительно

#myId{ 
    margin-left: 10px; 
    margin-top: 10px; 
} 

#myId{ 
    position: relative; 
    left: 10px; 
    top: 10px; 
} 

Оба сделали именно то, что я хотел. Когда я должен использовать относительное положение точно. Любое преимущество или недостаток по сравнению с другими?

+0

Почему кто-то из 2400 представителей задает такой вопрос? – user3791372

+0

Потому что, может быть, он изучает что-то новое и является экспертом в чем-то другом? – thepio

+0

Да, потому что он Прадип. В основном веб-разработчик. Опыт работы полностью на LAMP Stack, Drupal. –

ответ

2

Случай 1

У вас есть внутренний элемент, который расположен absolute и хотите, чтобы элемент придерживаться его родителей. Чем вы примените position: relative к родительскому элементу. По умолчанию абсолютный элемент выскочит из потока DOM и занимает позицию от ближайшего относительного элемента (HTML по умолчанию)

Случай 2

Вы хотите переместить элемент, но по-прежнему держать его в потоке DOM. Затем примените position: relative и переместите его с помощью left/right/top/bottom объектов недвижимости.

Случай 3

Вы хотите поместить один элемент поверх другого. Статические элементы не вступают в силу с z-index, поэтому вам нужно установить его положение в relative, static или fixed

Там могут быть и другие случаи использования


.a { 
 
    background-color: #ddd; 
 
    
 
    left: 50px; 
 
    top: 150px; 
 
    position: relative; 
 
    
 
    width: 200px; 
 
    height: 200px; 
 
    text-align: center; 
 
} 
 
.absolute, 
 
.a div { 
 
    
 
    position: absolute; 
 
    left: 50px; 
 
    top: 50px; 
 
    
 
    width: 100%; 
 
    height: 60px; 
 
    background-color: rgba(250, 0, 0, .4); 
 
}
<div class="a"> 
 
    HTML > relative 
 
    <div>HTML > relative > absolute</div> 
 
</div> 
 

 
<div class="absolute">HTML > absolute</div>

.a { 
 
    position: relative; 
 
    left: -20px; 
 
} 
 
.b { 
 
    margin-left: -20px; 
 
} 
 
.wrapper { 
 
    border-bottom: 2px solid #454545; 
 
}
<div class="wrapper"> 
 
    relative moving content 
 
    <br/> 
 
    <span>some content to overlap</span> 
 
    <span class="relative a">some content</span> 
 
    <span>some content</span> 
 
</div> 
 

 
<div class="wrapper"> 
 
    using margins 
 
    <br/> 
 
    <span>some content to overlap</span> 
 
    <span class="relative b">some content</span> 
 
    <span>some content</span> 
 
</div>

+0

Случай 2 также может быть выполнен с использованием полей справа, и он будет по-прежнему находиться в потоке dom right без использования позиция относительная ?? – Hacker

+0

@Hacker Относительный подвижный элемент не будет влиять на окружающие элементы (будет удерживать занятое пространство на месте). Белые отрицательные поля будут влиять на окружающие элементы. – Justinas

+0

@Hacker Проверьте второй пример – Justinas