CSS 인데 여쭤봐도 될까요 ㅠㅠ

naddolki의 이미지





CSS 에서 박스 모델 공부하는 중인데요 ...


 


position 속성에 static, relative, absolute, fixed 값을 지정해 가며 ...


박스의 위치를 지정하는 연습을 하고 있는데 ..


 


absolute 를 이해하는 데 어려움이 있어서요 .


질문 3가지에 답변 좀 ㅠㅠ


 


 



질문1)


 


부모의 좌표계를 기준으로 ...


자식의 위치를 지정하려면 ...


자식은 absolute 이어야 하고  ...


부모는 relative 이어야 하잖아요 ??


 


기본적으로 absolute 는 문서(페이지)가 가진 절대 좌표계를 ...


이용해 요소들의 위치를 지정하는 원리이지만 ..


만약, 해당 부모(조상)를 relative 로 설정하면 ..


부모(조상)가 가진 좌표계를 이용해 위치를 지정할 수도 있다고 알고 있어요 ..


 


여기서 궁금한 건 ...


왜 하필 부모는 relative 이어야 하는 건지 .. ;;


 


본래 relative 는 ...


자신의 static 위치를 기준으로 offset 을 적용해 상대 위치를 지정하는 용도잖아요 ?


 


근데 그러한 의미를 갖는 relative 가 ...


absolute 인 자식을 둔 경우 ...


해당 자식에게 좌표계를 제공하는 거랑 무슨 상관인 거죠 ?


 


 


질문2)


 


아래와 같은 구조일 때 ...


노랑색 박스보라색 박스의 좌표계를 이용해 offset 만큼 옮겨질 텐데요 ..


 


  


 


그렇다면, 아래와 같이 ...


빨강색 박스도 자신의 static 위치로부터 offset 만큼 떨어진 곳에 배치해야 해서 ..


relative 로 설정했다고 치면요 ...


 



 


노랑색 박스는 본래 의도대로 ...


보라색 박스의 좌표를 이용해 offset 만큼 옮겨져야 할 텐데 ...


 


위와 같은 구조라면 ... 의도와는 다르게 ...


노랑색 박스빨강색 박스의 좌표계를 이용하게 될 것 같은데요 ...


(자식이 absolute 일 때, relative 인 가장 가까운 부모의 좌표계를 이용해 offset 이 적용되는 원리)


 


이런 경우 ..


노랑색 박스보라색 박스의 좌표계를 이용하려면 어떡해야 하나요 ??


 


 


질문3)


 


부모의 좌표를 이용해 ...


자식이 표시될 위치를 지정하려면 ...


 


자식은 absolute 로 ..


부모가 relative 이어야 하잖아요 ? ...


(책에도 분명 그렇게 해야 한다고 나와 있구요)


 


근데, firefox 에서 테스트한 바로는 ...


부모가 굳이 relative 일 필요는 없고 ..


static 만 아니면 ....


모두 같은 결과를 내더라구요 ...


(즉, 자식을 absolute 로 ..... 부모를 fixed, absolute, relative 중 하나로)


 


굳이 부모를 relative 로 설정할 필요가 없는 건가요 ??


아니면, 이 경우 absolute, fixed 를 사용하는 게 비표준적인 건가요 ??


 


-------------------------------------------


 


너무 헷갈리네요 ...


제가 어디서부터 잘못 이해하고 있는 건지 모르겠어요 ...


확실히 아시는 분께서만 ...


질문의 요지에서 벗어나지 않는 범위 내에서 ...


최대한 쉽게 풀어서 설명 좀 해주세요 ....


 


긴 글 읽어주셔서 감사합니다 ^ ^


복 받으실 거에요 ..

peecky의 이미지

1, 3.
굳이 부모가 relative만 가능한 건 아닙니다. 부모를 relative로 하는게 부모와 같은 레벨의 다른 엘리먼트와의 배치가 용이하기 때문에 relative를 많이 씁니다.

2.
노란색을 빨간색의 자식으로 두지 말고 보라색의 자식으로 두는 현실적인 방법이 아닐까 합니다. 문서 구조상 마크업이 꼭 빨간색의 자식이어야 한다면, DOM 로딩이 끝난 후 자바스크립트로 이동시켜주어도 됩니다. (removeChild(), appendChild() 등)

만약 빨간색이 absolute라면 빨간색의 좌표를 적당히 가감하여 노란잭의 좌표를 정해주면 됩니다.

naddolki의 이미지

감사합니다 ^^

설연희 입니다 ^ ㅡ^ㅋ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.