2014-02-09 6 views
2

position:relative 인 부모 내의 float:leftfloat:right의 차이점은 무엇입니까? 내 테스트에서 div은 을 right: 0px을 사용하여 수동으로 배치하지 않는 한 부모의 왼쪽 상단 모서리에 떠 다니면서 이미지 위에 겹쳐집니다.CSS : 부동 소수점 사이의 차이 : 왼쪽 및 부동 소수점 : 오른쪽

position:absolute과의 차이점을 볼 수 있습니다. float:left은 이미지 위에 div을 오버레이해야하며, float:right은 생략하고 오버레이 효과를 얻을 수 있습니다.

여기에 무슨 일이 일어나는지 나에게 깨닫게 해주는 사람이 있습니까?

내 문제는 jsFiddle에 나와 있습니다.

HTML :

<div class="parent"> 
    <div class="tag">Featured</div> 
    <img src="http://www.placehold.it/200x200"> 
</div> 

CSS :

.parent { 
    position:relative; 
    width: 200px; 
} 
.tag { 
    float: right; 
    position: absolute; /* can omit when using float:right */ 
    /* right: 0px; */  /* uncomment to right-align child */ 
} 

편집 :

내가 내 문에 대한 position:absolutefloat와 착각이었다. 어떻게 든 jsFiddle을 가지고 놀 때 인상을 받았다. 혼란에 빠져서. 모든 답변을 주셔서 감사합니다.

+4

누구에게나 downvoted 이유는 다음에 downvoted 이유 - 제게 이것은 합법적 인 질문처럼 보입니다. 오해의 코드를 기억하십시오! = 어리 석음, 질문은 잘 쓰여졌고 예제도 제공되었고 심지어는 jsfiddle였습니다. – casraf

+0

당신은 "float : right [position : absolute]를 생략하고 여전히 오버레이 효과를 얻을 수 있습니다."라고 말합니다. 하지만 어떻게 관리 할 수 ​​있는지는 모르겠다.바이올린에서는 위치 지정이없는 수레가 어떻게 작동하는지, 즉 어떤 것도 중첩되지 않도록 작동합니다. –

+0

Btw : 은 기본적으로 인라인 요소이며 아마도 float을 설명하는 데 가장 적합한 태그가 아닙니다. – cschuff

답변

4

position: absolute;으로 설정된 요소에 float을 사용할 수 없습니다. left: 0; 또는 right: 0;을 사용하여 position: relative; 인 부모 내부에 정렬하십시오.

또한 position: relative은 자녀의 행동을 변경하지 않습니다. float 기능을 사용할 수 없게하는 것은 position: absolute입니다. 이것이 귀하의 float: right이 왼쪽 상단에있는 이유입니다. position: absolute을 사용하면 요소가있는 위치를 명시 적으로 말하고 싶습니다. 부유물은이 역할에 적합하지 않으므로 아무 효과가 없습니다.

+1

나는이 두 개념을 융합했다. ''position : absolute''는 "오버레이"를 만드는 데 사용됩니다. 즉, DOM 상자 트리에서 요소를 가져 와서 위에 쌓아 놓습니다. 반대로,''float : left/right''는 상자 모델의 요소를 떠나 형제를 적절히 흘립니다. 후자는 기본적으로''div''가 정상적으로 가지고있는 블록 실행 행동을 근본적으로 비활성화시킵니다. cschuff가 그의''display :: inline-block'' 발언을 암시합니다. 맞습니까? –

+0

예, 정확히 알고 있습니다. 'position : absolute'는 단순히 오버레이에 사용되는 것이 아니라 네, DOM 상자 트리에서 빠져 나와 값 비싼 플로팅이 필요한 곳에 요소를 배치하는 데 편리 할 수 ​​있습니다. – Francodi

0

Float는 position:absolute이나 상위 하위 관계에 영향을주지 않습니다. 동일한 DOM 수준에있는 요소에만 관심이 있습니다. float:left은 엘리먼트가 왼쪽과 다른 방향으로 반올림되도록합니다. 요소에 적용 clear: both는 중지가 떠 :

http://jsfiddle.net/MUP59/

당신은 대부분의 시간을 display:inline-block를 사용하여 더 나은 이럴.

2

절대 위치 지정은 해당 요소를 정상적인 흐름에서 벗어나게합니다. 따라서 float을 사용하려고하면 .container 내에서 플로팅 할 수 없기 때문에 효과가 없습니다. 절대 위치 지정을 위해 나머지 요소를 무시하도록 지정합니다. 절대 위치 지정을 사용하면 부모 위치에 원하는 위치를 명시해야합니다. 따라서 @Francodi 솔루션은 정확합니다. 더 자세한 설명.