TIP게시판

제목 CSS에서 안에서 URL 헬퍼가 안먹을 때 해결방법.
글쓴이 지지고 작성시각 2012/11/03 16:57:30
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14120   RSS
몇 일동안 삽질해서 저 같은 초보가 많으리라 생각해서 올립니다.

css 스프라이트 이미지를 사용하기 위해 특정 영역에 백그라운드 이미지를 지정하려고 합니다.

이미지는 index.php  없애기를 통해서 ci/assets/img/스프라이트.png 에 이미지가 있습니다.

이 때 CSS파일 안에서 CI에 URL 헬퍼를 사용해서 base_url('주소/파일이름.png') 식으로 호출하려고 했습니다.

하.지.만.

컨트롤에서 불러온 view  파일에서만 base_url 헬퍼가 먹고... 

view 파일에서 불러온 css 파일이 불러온 파일이름.png 가 출력이 안되는 겁니다.



개발자도구로 보니까. base_url 부분이 http://서버이름/ci/assets/img/스프라이트.png 가 아니라.

그냥 base_url('<? php echo base_url('assets/img/스프라이트.png');?>') 로 보이는 것이 아니겠습니까?


아... 아마도 ci 컨트롤러에서 직접 호출한 view 파일에서만 헬퍼가 먹고...
그 뷰파일에서 부른 CSS 파일에는 헬퍼가 작동하지 않는 건가 봅니다.

그래서 상대경로로 넣어줬습니다... 작동 잘 하더라구요. .. ㅎㅎ 일주일 삽질했는데 방금 문제가 풀려서 기분좋게~^^ 공유합니다.

처음에는 css 와 img 폴더 깊이가 동일하기 때문에 한 단계 전으로 올라갔다가 이동하면 되니까...

../ (한 단계 위로 올라가서 ) img/스프라이트.png (img 폴더 아래에 스프라이트.png 파일을 참조해라)

../img/스프라이트.png 로 적었습니다... 작동 잘 하네요...


여기서 이렇게 삽질을 했던 이유는... 그냥 assets/img/스프라이트.png 하면 안먹혀서 고생을 했더랬지요...

이 경우는 ../../assets/img/스프라이트.png 하면 해결 됩니다...


대체 왜그러는지 모르겠지만..

여튼 컨트롤러에서 직접 호출한 view 에서 간접적으로 호출된 css 에서 url 헬퍼가 안 먹고..
그래서 경로 바뀌어도 작동하는 페이지 만들려고 했는데 안되서 절대경로 쓰시고 계신 초보분들은 이 팁을 사용하시면 될 것 같습니다.

 
이것 때문에 귀중한 새벽 몇십시간을 삽질한 저에게 그래도 잘했다고 칭찬해주렵니다. ㅎㅎ^^

 다음글 개발 가이드 공개합니다. (18)
 이전글 git에 대한 연구문서 (4)

댓글

milosz / 2012/11/05 07:35:13 / 추천 0
 만약 해당 방식대로 사용하고 싶으시면 해당 문서 형식으로 view를 만들고 호출해서 사용하시면 되겠습니다.
<link rel="stylesheet" href="controller_name/function_name"> 식으로 말이죠.
한대승(불의회상) / 2012/11/06 20:31:07 / 추천 0
지지고// ../../assets/img/스프라이트.png => /ci/assets/img/스프라이트.png 를 쓰게 되면 어떤 결과가 나오는지 알려 주세요.