如何改变基于网址的CSS

我有一个网站,我希望用户能够更改背景图像和一些其他的CSS元素。 我试图做到这一点的方式是有多个HTML页面,用户可以通过下拉菜单更改并重新加载页面。

例:

href 1 = index.html

href 2 = red.html

href 3 = blue.html

每个页面都是相同的,都指向相同的样式表(style.php),但我希望链接的样式表元素根据用户选择的url进行更改。

所以style.php就是这样开始的

<?php
    header("Content-type: text/css; charset: UTF-8");
    include 'blue.php';
?>

body {
    background: url(../images/backgrounds/<?php echo $background; ?>.jpg) no-repeat;
    background-attachment: fixed;
} 

每个html页面都有一个匹配的.php页面,它为每个变量定义背景。

因此,如果用户在blue.html上,我需要的是一种选择include'blue.php'的方法。 我可以使用不同的样式表,但是在更改CSS时会变得很麻烦。

有没有办法做到这一点与基于url的php案例?


假设你有三个主题:

  • 热(红色)
  • 冷(蓝)
  • 中性(默认)
  • 在CSS中为每一个创建一个类和主题。 例如

    body.hot
    {
        /*Set Base Theme details here, including background*/
    }
    
    body.hot p 
    {
       /*Styles for hot paragraphs*/
    }
    
    /*etc*/
    
    
    body.cold
    {
        /*Set Base Theme details here, including background*/
    }
    
    body.cold p 
    {
       /*Styles for cold paragraphs*/
    }
    
    /*etc*/
    

    现在使用会话变量来保存用户的选择,然后根据需要添加一个类到body标签:

    $bodyClass = "";
    switch($_SESSION['bodyClass']) {
    case "hot":
    
    break;
    case "cold":
       $bodyClass= "class='cold'";
    break;
    default:
      $bodyClass = "";
    }
    

    现在将其插入body tag

    <body <?=$bodyClass ?> >
    

    为什么不为用户的背景选择使用$_SESSION变量而不是具有多个HTML页面? 这样,你可以避免重复的代码。

    如果您想尝试这条路线,你可以include switch.php在样式表中,而不是include blue.php ,其中switch.php申请检查其背景:

    <?php
    // switch.php
    switch($_SESSION['background']) {
    case "red":
      // apply red background
    break;
    case "yellow":
      // apply yellow background
    break;
    default:
      // apply blue background
    }
    ?>
    

    我有一个网站,用户可以编辑颜色/字体大小和字体类型,并将值保存在我的数据库中。

    只有我的网站中的可编辑元素是在这样一个PHP文件“style.php”中(无标题或任何内容):

        .main-header{ background: none repeat scroll 0% 0% <?php echo $edge_background ?> }
    
        .sub-menu .arrow{ border-bottom: 9px solid <?php echo $edge_background ?> }
    

    在我的头文件中,我有一个sql用于检查用户是否在我的数据库中有任何值,如果有,请将此文件包含在内。

    <head>
    <!-- your stuff -->
    <?php
        //after sql check with results
        $edge_background = "my value";
        $color2 = "my value";
    ?>
    <style type="text/css">
        <?php include('styles.php') ?>
    </style>
    </head>
    

    我不知道这是否是最好的方式,但工作正常,不需要创建大量的文件。

    在你的情况下,值会随着URL而改变。 您只需检查网址,然后使用$_SERVER['SERVER_NAME']$_SERVER['REQUEST_URI']为您的样式赋值

    链接地址: http://www.djcxy.com/p/30537.html

    上一篇: How to change css based on url

    下一篇: problems publishing org files