2013-05-03 62 views
2

我想我到處都是,但沒有成功。我正在學習Symfony2,所以有可能我忽略了一些東西。Symfony2設置css媒體類型(全部,打印,屏幕,手持)

這是我如何加載我的CSS(正常工作):

{% stylesheets filter='cssrewrite' 
'@MyHomeBundle/Resources/public/css/*.css' 
'@MyAuthBundle/Resources/public/css/*.css' 
'@MyUserBundle/Resources/public/css/*.css' 
    <link rel="stylesheet" media="screen" type="text/css" href="{{ asset_url }}" /> 
{% endstylesheets %} 

的問題是,我該如何分辨媒體:手持式,打印,屏幕?

發現在舊的Symfony版本中,有文件view.yml中可以標記「mobile.css」將只加載小設備等。然後我發現討論http://www.mail-archive.com/[email protected]/msg07718.html Symfony2中的新方法是更大的和消除這個觀點.yml是好的一步。不過,這讓我無法解決我的問題。

所以問題是:如何讓我的mobile.css或media =「print」指定可打印版本的media =「handheld」,以便從我的捆綁包中獲取?

我猜測這可能是一些條件,在樹枝中測試名稱,並取決於名稱,例如home_mobile.css或home_print.css將相應地加載media =「handheld」或media =「print」,並通過默認媒體=「屏幕」 - 但如果這是正確的方向和如何實現它?

感謝您的幫助

+0

有人嗎?無法相信之前沒有人遇到過這個問題。 – Pifon 2013-05-10 11:48:51

回答

0

不是一個真正的答案,而是另一種解決方案。

根據您網站的規模,我可能會將它們全部保留在單個CSS文件中,以加快頁面加載時間,並通過媒體查詢打印和設備。然後,您可以將上面的代碼更改爲media =「all」。

相關鏈接 - http://css-tricks.com/one-two-three/

+0

謝謝你的提示。問題是,就像我寫的一樣 - 我現在在學習Symfony,所以想避免招數,並且真正理解這樣做的正確方法。此外,正如你所看到的 - 我加載了多個樣式表,每個樣式表都負責非常特定的頁面部分(例如Auth只包含登錄表單,主頁包含主頁樣式,我省略了主要佈局樣式)。儘管如此,再次感謝。令我深感驚訝的是,這個問題在這裏持續了很長時間,實際上沒有人有明確而直接的解決方案。也許,奇怪的是,它沒有實現? – Pifon 2013-05-16 08:15:00

+0

沒問題,如果你被卡住了,它可能是一個解決辦法。不幸的是我沒有交響樂團的經驗。 可能的答案在這裏:http://trac.symfony-project.org/ticket/323​​7 [代碼] 樣式表: - screen.css - print.css:{媒體:打印} - mobile.css: {media:'handheld,screen'} - ie7.css:{condition:IE 7} - ie6.css:{condition:IE 6} – ConorLuddy 2013-05-16 08:58:36

2

我找不到一個正式答覆要麼但使用樣式表標籤的兩套作品。

{% stylesheets filter='less,cssembed,cssrewrite,?yui_css' output='css/screen.css' 
    'bundles/wolproject/css/main.less' 
%} 
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="all" /> 
{% endstylesheets %} 

{% stylesheets filter='less,cssembed,cssrewrite,?yui_css' output='css/print.css' 
    'bundles/wolproject/css/print.less' 
%} 
<link href="{{ asset_url }}" type="text/css" rel="stylesheet" media="print" /> 
{% endstylesheets %}