2013-05-03 60 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 %}