테스트 사이트 - 개발 중인 베타 버전입니다

add_stylesheet의 위치변경 채택완료

nooree 5년 전 조회 3,846

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개

채택된 답변
+20 포인트

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

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

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

  </p>

<p>      /*

        </title>

        <link rel="stylesheet" href="default.css">

        밑으로 스킨의 스타일시트가 위치하도록 하게 한다.

        */

        $buffer = preg_replace('#(</title>[^<]*<link[^>]+>)#', "$1$stylesheet", $buffer);</p>

<p>        /*

        </head>

        <body>

        전에 스킨의 자바스크립트가 위치하도록 하게 한다.

        */</p>

<p>

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
5년 전

2번째 매개변수가 순서네요. 조정해 보세요.

function add_stylesheet($stylesheet, $order=0)

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

프라푸치노K

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

 

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

 

</p>

<p>        /*

        </title>

        <link rel="stylesheet" href="default.css">

        밑으로 스킨의 스타일시트가 위치하도록 하게 한다.

        */

        $buffer = preg_replace('#(</title>[^<]*<link[^>]+>)#', "$1$stylesheet", $buffer);

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

그냥

<link rel="stylesheet" href="https://sir.kr/css/default.css?v=42" rel="noreferrer noopener" target="_blank">//sir.kr/css/default.css?v=42">

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인