Как поменять таблицы стилей со ссылкой - PullRequest
2 голосов
/ 04 марта 2011

Я занимаюсь разработкой сайта с использованием PHP, строгого XHTML и jQuery, который будет гибким для поддержки мобильных и настольных устройств, с использованием подхода Отзывчивый веб-дизайн и обслуживания различных таблиц стилей с использованием min-device- свойство ширины.

<link rel="stylesheet" href="css/960.css" type="text/css" media="screen and (min-device-width: 480px)" />

Но на сайте должна быть ссылка для переключения между режимами «Рабочий стол» и «Мобли». У меня есть общее представление о том, как это можно сделать с помощью jQuery, но я бы предпочел решение в php для устройств, которые не поддерживают JavaScript.

Ответы [ 3 ]

3 голосов
/ 04 марта 2011

PHP не так уж сложно реализовать это. Если бы вы использовали ссылку, вот так ...

<a href="?view=desktop">Desktop view</a>

Тогда в вашей странице скрипт ...

//test for stylesheet parameter
if(isset($_GET['view']))
{
    //save and set it in the session
    $stylesheet = $_GET['view'];
    $_SESSION['stylesheet'] = $stylesheet;
}
elseif(isset($_SESSION['stylesheet']))
{
    //parameter not sent, so get it from the session
    $stylesheet = $_SESSION['stylesheet'];
}

Позже вы выбираете свой код таблицы стилей на основе этой переменной $stylesheet.

if($stylesheet == 'desktop')
{
    echo '<link rel="stylesheet" href="/css/desktop.css" type="text/css" />';
}
elseif($stylesheet == 'mobile')
{
    echo '<link rel="stylesheet" href="/css/mobile.css" type="text/css" />';
}
else
{
    echo'<link rel="stylesheet" href="css/960.css" type="text/css" media="screen and (min-device-width: 480px)" />';
}
0 голосов
/ 04 марта 2011

Вы можете использовать переменную SESSION для этого. В следующем примере предполагается, что есть две таблицы стилей mobile.css и desktop.css

Проверка аргумента и настройка сеанса.

 <?php
session_start();
    if(isset($_GET['style']))//Tests the argument
    {
     if($_GET['style']=="desktop")//This to prevent passing wrong arguments
     {
      $_SESSION['style']=$_GET['style'];
     }
    if($_GET['style']=="mobile")//This to prevent passing wrong arguments
     {
      $_SESSION['style']=$_GET['style'];
     }
    }

    ?>

<head>
blah
<?php
if(isset($_SESSION['style'])
{
 echo '<link rel="stylesheet" href="'.$_SESSION['style'].'.css" type="text/css" media="all" />';
}
?>
</head>

Ваша ссылка для переключения с / на рабочий стол CSS.

<a href="?style=desktop">Desktop version</a>
<a href="?style=mobile">Mobile version</a>
0 голосов
/ 04 марта 2011

Ну, почему бы просто не включить соответствующую таблицу стилей в зависимости от параметра запроса или переменной сеанса или UA и т. Д. И т. Д.

//Code that figures out what type is 
$css  = '';
switch ($type) {
   case 'mobile':
       $css = '<link rel="stylesheet" href="css/960.css" type="text/css" />';
       break;

    case 'touch':
       $css = '<link rel="stylesheet" href="css/960-mobile.css" type="text/css" />';
       break;

    case 'desktop':
    default:
       $css = '<link rel="stylesheet" href="css/960-full.css" type="text/css" />';
       break;
}

На ваш взгляд

echo $css;

ПРИМЕЧАНИЕ Это только пример. В идеале вам не следует создавать HTML-код всей ссылки в PHP, но не зная никаких деталей реализации, этого будет достаточно. Лучший способ сделать это - назвать ваши CSS-файлы стандартным образом, используя только -type в конце, чтобы определить, где используется каждый файл, и просто передать переменную $type в представление.

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...