webForumDet fria alternativet

Kan man inkludera CSS i CSS med PHP?

15 svar · 2 418 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Jag har en CSS-fil, normal.css, som i princip används av alla sidor på min site. Sedan har jag några sidor med interaktiva korsord som kräver en ca dubbelt så lång CSS-fil eftersom den dels ska innehålla allt normal innehåller, plus en förskräcklig massa annat som krävs för att korsorden ska se bra ut. Ursprungligen konstruerades cw.css genom att kopiera normal.css och tillföra alla extra klasser.

Nu håller jag på och ändrar i normal.css och då känns inte lösningen lika kul längre eftersom jag plötsligt måste komma ihåg att införa alla ändringar dubbelt! :x Så... smidigast vore ju om man kunde inkludera normal.css i cw.css, men den får ju bara innehålla CSS-kod! :l Kan man använda PHP för att lösa detta?

<?php include("normal.css"); ?>
/*Sånt som bara finns i cw.css filen */

?

Eller kan man lösa det på något annat sätt?

jmeMedlem sedan maj 20012 237 inlägg
#2

<link rel="stylesheet" type="text/css" href="<?php include css.php;?>" />

css.php:

<?php
readfile("style.css");
readfile("style2.css");
?>

EDIT: readfile istället för include (readfile läser rakt av, ingen parsning av kod behövs här inte)

DenkanMedlem sedan juni 2002256 inlägg
#3

aasah skrev:

Så... smidigast vore ju om man kunde inkludera normal.css i cw.css, men den får ju bara innehålla CSS-kod!

Missuppfattar jag dig, eller kan du inte bara lägga in @import url('normal.css'); överst i din cw.css?

jme skrev:

<link rel="stylesheet" type="text/css" href="<?php include css.php;?>" />

css.php:

<?php
readfile("style.css");
readfile("style2.css");
?>

EDIT: readfile istället för include (readfile läser rakt av, ingen parsning av kod behövs här inte)

Huh? ô_Ò

MatteMedlem sedan aug. 20002 975 inlägg
#4

Du kan använda dig av

<link rel="stylesheet" type="text/css" href="css.php" />

Och sedan överst i PHP-filen lägga:

header("Content-type: text/css");

Sedan är det bara att arbeta med PHP i vanlig ordning för att generera den CSS du önskar.

Tänk bara på att CSS-filer cachas i webbläsaren, så är det att du ska visa varierat innehåll i CSS-filen då får du se till att du har headers som gör att den inte cachas. Men då faller å andra sidan lite av idén med en CSS-fil.

Personligen hade jag gjort så att jag länkat in två CSS-filer i mina skript, och eventuellt med PHP styrt vilka länkar som skulle visas.

aasahMedlem sedan mars 20034 471 inlägg
#5

Denkan skrev:

Missuppfattar jag dig, eller kan du inte bara lägga in @import url('normal.css'); överst i din cw.css?

Huh? :q Ditt exempelcitat innehåller ju ingen @import url('normal.css'); ??? Det är mycket möjligt att det går, men hur skulle det se ut?

Matte skrev:

Du kan använda dig av

<link rel="stylesheet" type="text/css" href="css.php" />

Och sedan överst i PHP-filen lägga:

header("Content-type: text/css");

Sedan är det bara att arbeta med PHP i vanlig ordning för att generera den CSS du önskar.

Bra att veta! :birp Det har jag nämligen också funderat på...

Matte forts skrev:

Personligen hade jag gjort så att jag länkat in två CSS-filer i mina skript, och eventuellt med PHP styrt vilka länkar som skulle visas.

Kan du ge ett exempel på hur det ser ut?

Och varför är det bättre än att inkludera den normala i cw-varianten? :q

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

aasah skrev:

Huh? :q Ditt exempelcitat innehåller ju ingen @import url('normal.css'); ??? Det är mycket möjligt att det går, men hur skulle det se ut?

Exempelcitatet syftar ju på jme's något... felaktiga kod.
Annars så tycker jag att Denkan's inlägg talar sitt klara språk. (Även utan exempelkod)

DenkanMedlem sedan juni 2002256 inlägg
#7

aasah skrev:

Huh? :q Ditt exempelcitat innehåller ju ingen @import url('normal.css'); ??? Det är mycket möjligt att det går, men hur skulle det se ut?

Precis som jag skriver.
T.ex (cw.css):

/* Inkludera all css från normal.css */
@import url('normal.css');

/* Resten av min nya css */
body { background-color: #FFF; font-family: Verdana, Arial, Serif; }
h1 { font-size: 200%; }
(... osv...)
aasahMedlem sedan mars 20034 471 inlägg
#8

Åh! Är

@import url('normal.css');

CSS-syntax? Som kan ligga i en .css-fil? Det är ju kanon! :e

Um... det här är andra gången denna vecka som jag inte ser alla gjorda inlägg när jag först öppnar tråden - urskumt! :( Såg varken jme:s inlägg eller Mattes först. :q

MatteMedlem sedan aug. 20002 975 inlägg
#9

Eller på korsordssidan använda dig av:

<link rel="stylesheet" type="text/css" href="normal.css" />
<link rel="stylesheet" type="text/css" href="cw.css" />
aasahMedlem sedan mars 20034 471 inlägg
#10

Matte skrev:

Eller på korsordssidan använda dig av:

<link rel="stylesheet" type="text/css" href="normal.css" />
<link rel="stylesheet" type="text/css" href="cw.css" />

Aha, vad intressant att detta går! Kan säkert vara bra att veta!

Men jag kör nog på inkludering, tror jag. Tack alla! :birp

jmeMedlem sedan maj 20012 237 inlägg
#11

Men vad f*n? Jag vet inte vad jag tänkte på... Nää, jag tänkte inte...ALLS. :r

aasahMedlem sedan mars 20034 471 inlägg
#12

Förtydligande
Jag vill använda en CSS-fil som genereras av PHP och gör därför enligt Mattes förslag - men då validerar inte index.php som CSS:n inkluderas i. Se nedan. Varför?

Matte skrev:

Du kan använda dig av

<link rel="stylesheet" type="text/css" href="css.php" />

Och sedan överst i PHP-filen lägga:

header("Content-type: text/css");

Sedan är det bara att arbeta med PHP i vanlig ordning för att generera den CSS du önskar.

Tänk bara på att CSS-filer cachas i webbläsaren, så är det att du ska visa varierat innehåll i CSS-filen då får du se till att du har headers som gör att den inte cachas. Men då faller å andra sidan lite av idén med en CSS-fil.

Personligen hade jag gjort så att jag länkat in två CSS-filer i mina skript, och eventuellt med PHP styrt vilka länkar som skulle visas.

Jag har just provat denna variant efter bästa förstånd. Tyvärr räckte inte förståndet hela vägen... ;) Sidan som inkluderar filen ser ut precis som jag vill och förstår uppenbarligen CSS-filen, men den vägrar tvärt att validera på http://validator.w3.org/ .

Validatorn skrev:

Below are the results of attempting to parse this document with an SGML parser.

1. Error Line 6 column 57: character data is not allowed here.

<link rel="stylesheet" type="text/css" href="div.php" />

  You have used character data somewhere it is not permitted to appear. Mistakes that can cause this error include putting text directly in the body of the document without wrapping it in a container element (such as a \<p\>aragraph\</p\>) or forgetting to quote an attribute value (where characters such as "%" and "/" are common, but cannot appear without surrounding quotes).

:q Va?

Starten på index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <link rel="stylesheet" type="text/css" href="div.php" />
  
  <title>$titel</title>
</head>

Utdrag ur div.php

<?php 

header("Content-type: text/css"); 
$bg = '#FCFCFC';
$txt = '#000000';   /*svart*/
$rubrik = '#009933';  

//...

$css = <<< EOCSS
body {
  /*font-family: 'Comic Sans MS', 'Georgia', 'Arial';*/
  font-size: "$fs";
  background-color: "$bg";    
  color: "$txt";
}

h1, h2, h3, h4, h5, h6 {
  color: $rubrik;      
}

p {
  color: $txt;
  font-size: fs;
}

/* ...*/
EOCSS;

echo $css;
tantenMedlem sedan nov. 20051 596 inlägg
#13

Matte skrev:

Eller på korsordssidan använda dig av:

<link rel="stylesheet" type="text/css" href="normal.css" />
<link rel="stylesheet" type="text/css" href="cw.css" />

Har alltid använt mig av detta och det har fungerat perfekt. Du kan på detta sätt lägga in hur många css-filer som helst och då även för andra media...

aasahMedlem sedan mars 20034 471 inlägg
#14

tanten skrev:

Har alltid använt mig av detta och det har fungerat perfekt. Du kan på detta sätt lägga in hur många css-filer som helst och då även för andra media...

Mitt nuvarande bekymmer gäller inte korsordssidorna. Eller ens samma site.

Jag vill låta PHP generera min CSS-fil eftersom jag då mycket lättare kan ändra färgerna i den. Plus att jag tycker att det skulle vara trevligt att kunna göra så. :)

Och browsern fattar uppenbarligen, för sidan ser helt OK ut. Varför gillar inte Valideringsfunktionen det? :q Kan man komma runt det på något sätt? Hur?

(Tar tillfälligt bort löst-markeringen från Denkans svar ovan, eftersom det inte löser detta problem.)

MatteMedlem sedan aug. 20002 975 inlägg
#15

Med den doctypen, ändra

<link rel="stylesheet" type="text/css" href="div.php" />

till

<link rel="stylesheet" type="text/css" href="div.php">
aasahMedlem sedan mars 20034 471 inlägg
#16

Matte skrev:

Med den doctypen, ändra

<link rel="stylesheet" type="text/css" href="div.php" />

till

<link rel="stylesheet" type="text/css" href="div.php">

Åh! Tänk så självklart när man plötsligt "ser" det! Naturligtvis!

Tack, Matte, för att du öppnade ögonen på mig! :birp

135 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)