2012-10-21 4 views
1

트위터 부트 스트랩을 사용하는 필자의 반응 형 WordPress 테마에서는 CSS Conditional loading과 비슷한 기술을 사용하려고 노력 중이지만 Javascript 대신 PHP를 사용하므로 많은로드가 최소화됩니다.PHP를 사용하여 CSS 유사 요소를 감지 할 수 있습니까?

내가하고 싶은 것은 :after 유사 요소 콘텐츠 속성을 검색하여 브라우저의 미디어 쿼리/뷰포트 크기에 따라 어떤 요소가로드되는지 확인하는 것입니다. content: "A" PHP가 활성 상태인지 감지 할 수 있다면

body:after { 
     display: none; 

     /* Default */ 
     content: "A"; 
    } 

    @media (min-width: 35em) { 
     body:after { 
      content: "B"; 
     } 
    } 

는 매우 구체적으로는 모바일 콘텐츠를 렌더링 custom_mobile_content() 후크로드 :

여기 CSS 예이다. content: "B"을 감지하면 더 많은 데스크톱 콘텐츠를 렌더링하는 custom_desktop_content() 후크를로드합니다.

자바 스크립트 버전을 사용해 보았지만 형식이 지정된 HTML 블록을 자바 스크립트 변수에 넣어야합니다. 페이지 렌더링시 자바 스크립트 내에 포함 된 페이지에는 사용되지 않고 사용되지 않는 거대한 텍스트 블록이 있습니다. PHP가 더 잘 맞는 것 같습니다.

쉽게 생성 할 수있는 코드가 있습니까?


편집 : 내가 JS 변수를 전달하거나이 작동하기 위해서는 PHP하는 기능을 줄 것으로 보인다, 나는 그 꽤 복잡 가정합니다. 이 파일에 캐시 할 필요가 없기 때문에 나는 워드 프레스 페이지 자체에서 위의 코드를 포함 시켰습니다

$(function() { 
    var currentSize = "A"; 
    $(window).resize(function() { 
     var size = window.getComputedStyle(document.body, ':after').getPropertyValue('content'); 

     /* Ridiculous thing to deal with inconsistent returning of 
     value from query. Some browsers have quotes some don't */ 
     size = size.replace(/"/g, ""); 
     size = size.replace(/'/g, ""); 

     if (size != currentSize) { 
      if (size == 'B') { 
       $(".content").load('<?php custom_hook(); ?>'); 
       currentSize = 'B'; 
      } 
     } 

    }).resize(); 

} 

:

는 여기에 내가 함께 작동하도록 노력하고있어 자바 스크립트입니다. 이 페이지에서는 한 번만 사용됩니다. 그러나이 문제는 custom_hook() 코드가 페이지에 렌더링되고 해당 후크에 마크 업이 포함되어 있다는 것입니다. javacript가 A을 사용하고 있다고 판단하면 모든 마크 업은 이유없이 소스 코드의 페이지에 있습니다. B에서 사용중인 경우가 아니면 사용자 지정 후크가 렌더링되지 않도록하는 방법을 찾고 싶습니다. 희망은 그 말이 맞습니다.

+1

[faq]를 보시고 여기에서 주제가 아닌 일반적인 PHP 질문을보십시오. –

+0

오, 나는 이것이 워드 프레스 아키텍처와 사용자 정의 후크 (stacksflow)보다 여기에 더 잘 적용되도록 특수하게해야하기 때문에 생각했습니다. 그래서 내가 여기 온거야. – micah

+3

아니요 : [tag : php]는 * 서버 쪽 *에서 작동합니다. * HTML이 생성되어 브라우저에 전송 될 때까지 * [태그 : CSS]는 적용되지 않습니다. 그리고 일단 의사 요소 지원이 브라우저에 도착하면 (슬프게도) 보장되지 않습니다. –

답변

1

현재 자바 스크립트에서도 의사 요소를 감지하는 신뢰할 수있는 방법은 없습니다. 그들은 CSS Object Model (CSSOM)이 없습니다. PHP는 서버 측에서만 작동하기 때문에 이런 상황에서 여러분을 도울 수 없습니다.

대체 워크 플로의 경우 JavaScript를 사용하여 현재 활성화 된 미디어 쿼리를 찾을 수 있습니다. 이를 기반으로 필요한 경우 다른 리소스를로드 할 수 있습니다.

자바 스크립트에서 미디어 쿼리를 사용하는 방법에 대한 자세한 내용은 article on MDN을 참조하십시오.

+0

안녕하세요, 답변 해 주셔서 감사합니다. 내가 제공 한 첫 번째 링크에서 소스 코드를 살펴보면 자바 스크립트를 사용하여 의사 요소 값을 감지하는 방법을 알 수 있습니다. 여기에 설명 된대로 http://adactio.com/journal/5429/ 중단 점을 복제하지 않고 미디어 쿼리가 CSS에서 실행되었는지 여부를 감지하는 방법이 필요합니다. matchmedia에 대한 귀하의 링크가 정확하게 그 중복을하고 있습니다. 어쨌든, 사용자 정의 후크가 포함 된 여러 표제, div 및 단락을 의미하는 코드 블록을 가져 와서 특정 중단 점에서 해당 블록을 렌더링하는 방법을 찾으면이 방법이 유용합니다. – micah

+0

나는 내 문제를 해결하고 문제를 해결하기 위해 위의 문제점을 수정했다. 귀하의 의견에 감사드립니다! :) – micah

+0

@micah : 계산 된 CSS 스타일을 읽는 것과 실제 의사 요소를 검사하는 것 사이에 미묘한 차이가 있습니다.) – BoltClock

관련 문제