移动&桌面CSS文件,cookie和两者之间的切换

时间:2013-04-29 10:36:46

标签: css mobile cookies switch-statement desktop

我目前正在使用的网站是使用自定义CMS,并且使用拆分CSS文件进行了移动集成,所以我有: - desktop.css - mobile.css

有一个Javascript可以检测屏幕大小并提供相应的CSS文件。

用户可以选择在较小的屏幕上查看完整的网站,并在较大的屏幕上查看较小的网站,并在PHP中设置Cookie,如下所示:

$mob = '?setmob';
$mob_len = strlen($mob);
$self_end = substr($self, strlen($self) - $mob_len);
if($self_end == $mob){
$settomobile = 1;
}
else{

$full = '?setfull';
$full_len = strlen($full);
$full_end = substr($self, strlen($self) - $full_len);
if($full_end == $full){
$settofull = 1;
}
}

if($settomobile == 1)
{
    setcookie("viewing", "", time()-3600);
    setcookie("viewing", "mobile", time()+63113851);
}

if($settofull == 1)
{
    setcookie("viewing", "", time()-3600);
    setcookie("viewing", "desktop", time()+63113851);
}

检测屏幕大小并提供CSS的Javascript是:

<script type=\"text/javascript\">
function adjustStyle(width) {
width = parseInt(width);
if (width < 750) {
$(\"#size-stylesheet\").attr(\"href\", \"/mobile.css\");";
$mob = "Yes";
$top_contents .= "} else {
$(\"#size-stylesheet\").attr(\"href\", \"/$css_name.css\");  

}

}

function setToMobile() {
var width = 200;
if (width < 750) {
$(\"#size-stylesheet\").attr(\"href\", \"/mobile.css\");";
$mob = "Yes";
$top_contents .= "} else {
$(\"#size-stylesheet\").attr(\"href\", \"/$css_name.css\"); 
}
}

function setToDesktop() {
var width = 1000;
if (width < 750) {
$(\"#size-stylesheet\").attr(\"href\", \"/mobile.css\");";
$mob = "Yes";
$top_contents .= "} else {
$(\"#size-stylesheet\").attr(\"href\", \"/$css_name.css\"); 

}
}

$(function() {";
if(isset($_COOKIE['viewing']) || $settofull || $settomobile){
$view = $_COOKIE['viewing'];
if(($view == 'mobile' || $settomobile == 1) && !$settofull){
$top_contents .= "setToMobile();";
}
elseif(($view == 'desktop' || $settofull == 1) && !$settomobile){
$top_contents .= "setToDesktop();";
}
}
else{

$top_contents .= "   adjustStyle(screen.width);
";}
$top_contents .="
});         </script>";
}

$top_contents = $top_contents . "<link rel=\"stylesheet\" type=\"text/css\" href=\"/admin/css/$css_name.css\" id=\"size-stylesheet\" title=\"default\" />

我发现的问题是,在Javascript开始将用户重定向到移动CSS之前,网站必须首先启动普通的CSS。

有没有一种简单的方法可以解决这个问题,以便用户在移动CSS加载之前不必查看完整的网站?

先谢谢你们!

1 个答案:

答案 0 :(得分:1)

对于评论中的拼写错误,应该是媒体查询。例如:

<!-- CSS media query on a link element -->
<link rel="stylesheet" media="(max-width: 800px)" href="example.css" />

<!-- CSS media query within a style sheet -->
<style>
@media (max-width: 600px) {
  .facet_sidebar {
    display: none;
  }
}
</style>

请参阅下面参考链接中的更多示例。

参考:Media Queries in MDN