대부분의 태그는 크게 block 속성을 가지거나 또는 inline 속성을 지니고 있습니다.
block 속성은 div 와 같이 한줄에 하나의 요소만 있고 주변의 요소를 강제로 줄바꿈 시키는 성질이 있습니다. 한편 inline 요소로는 span 태그와 같은 것들이 있는데 이것들은 한 줄에 여러개의 inline 요소들이 함께 어울릴 수 있습니다.
span 태그는 inline 요소이므로 기본적으로 width 값을 갖지 않고 내부 콘텐츠의 너비가 곧 자신의 너비가 됩니다. span 태그에 width 값을 주려면 display:block 으로 span 의 기본 성질인 inline 속성값을 block 속성값으로 변경해 주면 됩니다. IE에서는 된다고 하셨지만 그것은 IE가 CSS를 잘못 렌더링 하고 있는 것입니다.
짐작컨데 '일정한 간격으로 띄우기 위함' 이라고 하셨다면 메뉴 또는 목록은 아닌지요? 그렇다면 span 태그가 아닌 li 태그로 마크업 하시는 것이 올바른 마크업 방식 입니다. 일단 마크업을 먼저 표준에 맞게 해주시는게 좋습니다. CSS 는 나중에 고쳐도 되지만 잘못된 마크업은 대형 공사를 불러오니까요. (X)HTML 태그들의 본래 용도를 확인하신 다음 본래의 목적과 의미에 맞게, 엄격하게 마크업 하시고 CSS 코딩은 나중에 처리하시는 것이 웹 표준 방법론 입니다.
Jump table 하고나서, 맨 먼저 봉착하게 되는 문제이지요!
dece24님 말씀처럼, 무작성 CSS로 덤벼들지 마시고 구조화된 HTML를 잘 계획하셔서, 내용물을 위아래로 쭉 펼쳐본다음. CSS로 옷을 입혀보세요.
============
<ul id="hlist">
<li class="list1">list1</li>
<li class="list2">list2</li>
<li class="list3">list3</li>
</ul>
============
#hlist li {float:left;text-align:center;}
.list1 {width:100px;}
.list2 {width:200px;}
.list3 {width:300px;}
============
아마도 원하는 결과물을 얻을 수 있을 것입니다.
한가지 주의할 것은 무조건 table 태그를 배제할 필요는 없습니다.
가끔 보면, table 태그 않쓰려고 눈물날정도로 애절하기까지 한 시도를 합니다.
(table이 없어도 되도록 레이아웃을 바꾸든지, 차라리 table을 사용하든지)
데이터를 정형화되고 순차적으로 (좌에서 우로, 위에서 아래로) 표현할 때는, 결코 table 태그 만한게 없고, 그게 table 태그의 존재 목적이라고 할 수 있습니다.
W3에서 권장하는 것이 table 태그를 레이아웃 용으로 사용하는 것을 자제하라는 것이지, 적절한 곳에까지 사용하지 말라는 뜻은 절대 아니니, 적절히 사용하는 것도 무방합니다.
처음 공부할 때는 억지 시도도 해 보세요. 다만 끝까지 억지를 부리지만 마세요.