add_stylesheet의 위치변경

add_stylesheet의 위치변경

QA

add_stylesheet의 위치변경

본문

add_stylesheet로 로드되는 CSS외에 별도로 add_stylesheet함수를 쓰지 않고 소스상에 맨위에 기술해도 add_stylesheet를 쓰는  CSS들이 실제로 HTML상에서는 먼저 선언되어 버립니다. 

 

이거 add_stylesheet 함수와 상관없이 add_stylesheet 함수보다 먼저 CSS나 JS를 로드하려면 꼭 add_stylesheet함수 안에 우선순위를 줘서 기술해야 합니까??

 

<head> </head>안에서 add_stylesheet함수와 상관없이 add_stylesheet 보다 먼저 css를 로드하고 싶은데 add_stylesheet안에는 기술하기 싫을때는 어찌해야 할까요?

이 질문에 댓글 쓰기 :

답변 4

CSS가 굳이 최상단에 위치해야할 필요가 있는건가요?

어차피 오버라이딩하는것이니 이후에 선언되도 상관없을것 같은데요

그게 아니라면 아래 코드를 수정해야할것 같습니다.

  
      /*
        </title>
        <link rel="stylesheet" href="default.css">
        밑으로 스킨의 스타일시트가 위치하도록 하게 한다.
        */
        $buffer = preg_replace('#(</title>[^<]*<link[^>]+>)#', "$1$stylesheet", $buffer);
        /*
        </head>
        <body>
        전에 스킨의 자바스크립트가 위치하도록 하게 한다.
        */

https://github.com/gnuboard/gnuboard5/blob/84dd9f07661a41730cddee4816b8ec806665ca2c/lib/common.lib.php#L2611

add_stylesheet는 특정 태그를 찾아 위치를 정하기 때문에 원하시는 방향으로 하시려면 해당함수의 정규식을 적절하게 변경하시거나 순서가 필요한 css를 link테그 대신 add_stylesheet함수를 태워야 합니다.

 

해당함수는 /lib/common.lib.php파일에 있고 해당 정규식은 run 함수에 포함되어있습니다.

 


        /*
        </title>
        <link rel="stylesheet" href="default.css">
        밑으로 스킨의 스타일시트가 위치하도록 하게 한다.
        */
        $buffer = preg_replace('#(</title>[^<]*<link[^>]+>)#', "$1$stylesheet", $buffer);

그냥

<link rel="stylesheet" href="//sir.kr/css/default.css?v=42">

이소스를 박아버리시면 함수와 상관없이 출력하실 수 있습니다.

css의 상속관계때문에 특정 css가 먼저 출력되고 어떤 css는  그다음에 출력하고 싶은데. add_stylesheet 안에서 출력순위를 지정해도 되지만, 이것을 이용하지 않을때 위와같이 별도로 head_sub.php안의 <head>안에 기술해도 실제로 브라우저에서 파싱되어진것을 소스보기하면 늘 add_stylesheet에서 선언된 것들이 먼저고, 제가 추가한건 늘 나중이라서요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,529 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT