ugrás a tartalomhoz

CSS betöltés a HTML törzsében

tolmi · 2007. Júl. 20. (P), 19.18
Sziasztok!

Tud valaki valami módszert arra hogy XHTML kompatibilis módon CSS stylesheet-et lehessen importálni a HTML törzsben(body)?
Egy olyan problémát próbálok megoldani, amikor a sitebuildernek olyan template-et kell írnia, amiben nem férhet hozzá a HTML fejrészéhez és így nem tud style és link csomópontokat létrehozni.
Lényegében a megjelenítési struktúra az, hogy van egy theme, ami megadja a lap kinézetét HTML sablonostól és a tartalomterület pedig csak egy div. Ide automatikusan húz be a megjelenítési réteg egy, a felhasználó által kiválasztott template-et. Nem szeretném ha table tag-eket kellene használniuk a sitebuildereknek.
Az alkalmazás működését nem tudom megváltoztatni, tehát nincs rá mód hogy a fent vázolt működést módosítsam és a theme-et sem lehet módosítani.
Nyilván azt sem szeretném, ha a tag-eknek style attributuma lenne.
 
1

Nem...

janoszen · 2007. Júl. 20. (P), 23.59
Ha a sitebuilder nem nyúlhat hozzá a fejléchez, akkor valami nagyon el van tolva a módszertanban. Nézd meg pl a Wordpress hogy oldja meg ezt a problémát. A templatezése egy kalap szar (má bocsánat) de ez normálisan van megcsinálva.

Egyébként meg JavaScripttel bármit lehet. :)
2

Gondoltam...

tolmi · 2007. Júl. 22. (V), 15.06
Gondoltam hogy valaki megmondja a tutit a módszertanról, szoftverről, fejlesztőkről. Hidd el, direkt van így és nem pedig tehetségtelen gárda okán ered a probléma. Azért kösz.
8

Miért?

janoszen · 2007. Júl. 23. (H), 15.08
Miért, ha ennyire szeretnéd hogy a sitebuilder ne nyúljon bele a fejlécbe, akkor két dolgot tudok ajánlani (csak nem ez volt a kérédés):

1. A sitebuilder adja meg egy config fájlban milyen stylesheeteket kell betölteni és azt töltse be a rendszeretek.

2. Valaki aki elég kompetens a stylesheetek betöltésére, töltse be.

Miután ez projektenként egyszer jelent egy 30 másodpercnél nem hosszabb munkát, remélhetőleg azért elviselhető lesz.
9

Ne brainstorm-olj

tolmi · 2007. Júl. 23. (H), 18.38
Légy szíves a feltett kérdésre koncentrálj és ne brainstorm-olj olyanon, amit már eldöntöttünk és nem fogunk megváltoztatni. Mellesleg okkal. Ha pedig te nem tudsz megoldást vagy egyértelmű cáfolatot adni, kérlek hanyagold a témát. Köszönöm!
12

LOL

Marcell · 2007. Júl. 23. (H), 19.01
Mekkora arcod van, egy alapvetően elb*szott projekt közben. Ha egy sort nem lehet belefűzni a <head>-be, akkor az egész alapvetően el van hibázva. És még Te oltod a többieket...nevetséges.
14

???

tolmi · 2007. Júl. 23. (H), 19.11
Nem szeretnék itt tovább "arcolni", te se tedd. Azért neked is köszönöm a fő offtopic hozzászólást. Mivel te/ti nem ismeritek a projektet és annak paramétereit, ezért nincs semmi alapotok elbaszottnak vagy éppen megfelelőnek bélyegezni. Hidd el, sok okos ember csinálta ezt így, ahogy van. Szóval hanyagoljuk a témát kérem és koncentráljunk a feltett kérdésre. Kösz.
21

akkor majd én még egy kicsit

zzrek · 2007. Júl. 24. (K), 09.00
Azért szeretném felhívni a figyelmedet:
1: A probléma másfajta (esetleg logikusabbnak tűnő) megoldására való figyelemfelhívás nem feltétlen offtopic
2: Ha segítséget kérsz, fordulj illedelmesebben a válaszadókhoz. Egy beszólás nagyarcosan, és máris egy csomó offtopicot kaphatsz, olyanokat is, mint az enyém
3: Ha nem vetted volna észre, proclub jószándékkal segíteni próbált, és nem a beosztottad, akit utasítgathatsz, hogy "Légy szíves a feltett kérdésre koncentrálj és ne brainstorm-olj olyanon, amit már eldöntöttünk", meg "hanyagoljuk a témát kérem és koncentráljunk a feltett kérdésre". Ilyenkor bárki gondolhatja, hogy "tudod mit, akkor menj a sunyiba", szóval ez nem jó taktika. Elég lett volna annyi, hogy "köszi, de másfajta módszert keresek".
4: Hogy a feltett kérdésre koncentráljak: nincs szabványos módja annak, hogy CSS stylesheet tegyél a HTML törzsébe, és ezzel mindent megválaszoltam. Elégedett vagy, hogy nem braistormingoltam félre a topicodat?
22

Brainstorm... és totál off

janoszen · 2007. Júl. 24. (K), 09.32
<off>
<brainstorm>

Tfh. a követelmény az, hogy a sitebuildernek kell tudni stíluslapot csinálni. Tf. továbbá h. szabványosan/szépen szeretnéd megcsinálni a feladatot, mert ugye profinak vallod magad. Ez követelmény. Tfh. a alapvető definíciója, hogy a rendszer teljesíti az előre felállított követelményeket. Ezek szerint a rendszer by definition rossz, még akkor is, ha egyébként egy brilliáns alkotás.

Lehet hogy én érzem félre a dolgot, de ha egy rendszert alkotunk, az egy eszköz. És az eszköznek az a célja, hogy segítse a mérnöki munkát, ne pedig megnehezítse. Szóval a rendszer tervezésénél nem lett figyelembe véve az az igény, hogy a sitebuilder tudjon sablont behúzni.

A bántás minden szándéka nélkül, a szűk látókörűség és a valószínüsíthetően rossz megoldáshoz való ragaszkodás nem kifizetődő hosszú távon, mert több energiát fogsz fordítani a saját rendszered hackelésére, mint ha megcsinálnád a követelményeknek megfelelően.

</brainstorm>
</off>
<megoldás>

1. Készítsétek fel a rendszert arra, hogy egy vagy több, config fájlban megadott stíluslapot töltsön be.
2. Tegyetek style tageket a bodyba és abban töltsetek be stíluslapot.
3. JavaScriptben írjatok egy style loadert, ami betölti a stílusokat.
4. Ne a sitebuilder töltse be a stíluslapokat, hanem valaki aki belenyúlhat a fejlécbe.

Ennyi a konstruktív megoldás.

</megoldás>
3

beágyazott style

yaanno · 2007. Júl. 22. (V), 16.17
esetleg megpróbálkozhatsz egy beágyazott
<style>
.specialclass{}
#specialid{}
</style>
blokkal, ha javascripttel történő beszúrásra van lehetőség; ha a dokumentumtörzsbe szúrod be, akkor (emlékeim szerint) IE6 alatt lesznek problémák. Ha viszont efféle beszúrás megengedett, akkor ugyanezt megteheted a head-ba is és akkor nem lesz probléma.
4

Félmegoldás

tolmi · 2007. Júl. 22. (V), 16.35
Na igen, de egyrészt szerintem a JavaScript nem erre való, másrészt ezt a megoldást én is megtaláltam és jelenleg a legjobbnak tűnik az előre kidolgozott CSS osztályokon kívül.
5

DTD

hector · 2007. Júl. 23. (H), 12.14
Lehet, hogy most nem leszek túl népszerű, de tedd bele a body-ba a CSS blokkot (a böngészők úgyis értelemzik, gondolom...), és módosítsd az XHTML DTD-t.
Lehet kövezni :)
6

Kipróbálva

tolmi · 2007. Júl. 23. (H), 14.42
Igen, ezt már kipróbáltam. Sajnos IE alatt félsiker volt.
7

Át kéne gondolni

zila · 2007. Júl. 23. (H), 14.47
Ha ennyi mindent kipróbáltál már akkor talán tényleg azzal van a baj, hogy a sitebuilder nem nyúlhat a header-be... vagy javascripttel kell benyomnod az oldalba userspace stílusokat.
10

Okkal

tolmi · 2007. Júl. 23. (H), 18.40
Okkal van ez így kitalálva. Mármint hogy a header-höz nem engedjük nyúlni a sitebuilder-t, ugyanis az ő munkájukat nem tudjuk felügyelni, munkáik a projekt jellegéből adódóan azonnal élesbe állnak a nagyközönség előtt.
11

csak css

zila · 2007. Júl. 23. (H), 18.48
Nem is kell a teljes headerhez hozzáférést biztosítani, bőven elég lenne, ha valahol definiálhatja azokat a stylesheeteket amiket a rendszernek a header-ben be kell húznia. valid lesz az oldalad, sitebuilder nem tudja eltolni a headert, stíluslapok betöltődnek, mindenki örül.

proclub pont ezt mondta, csak felhúztad magad rajta :)
13

Felhúz

tolmi · 2007. Júl. 23. (H), 19.07
<off>
Hehe. Miért hiszi mindenki azt hogy felhúzom magam ilyenkor?! :) Nem a kérdésre válaszolt(ő írta), így megkértem hogy ne legyen offtopic, vagy ne írjon, ha nem tud segíteni. Alapvető fórumjótanács. Nem bántás.
</off>

Tulajdonképpen ugyanolyan okból hülyeség amit írsz, mivel ilyen funkció nem áll rendelkezésünkre. Természetesen fel sem merült volna a kérdés, ha ilyen funkció létezik. ;)
15

Jaaa

zila · 2007. Júl. 23. (H), 19.12
Már értem. Szóval nem ti írtátok a rendszert ami ennyire nagyon okos és átgondolt. Viszont hogy használható legyen el kell kezdeni bekenni sárral...
16

Szerinted

tolmi · 2007. Júl. 23. (H), 19.17
... és szerinted mit fog szólni hozzá az amcsi cég terméktámogatás címén, ha visszafejtjük a Java kódokat és belehekkelünk? :) Az ügyfelet meg ne is erőltessük :P

Mellesleg szerintem a kérdés szempontából teljesen érdektelen hogy ez-e a helyzet vagy nem. A kérdést direkt igyekeztem sallangoktól mentesen és világosan megfogalmazni.
17

Nem mondtam, hogy fejtsétek vissza...

zila · 2007. Júl. 23. (H), 19.28
...csak annyit, hogy van egy komoly hiányossága a rendszernek amit át szeretnétek hidalni. Akkor már csak azt nem értem, hogy a javascriptes megoldás miért nem jó? proclub is ajánlotta, yaanno is... Persze _szerinted_ a javascript nem erre való de ez - finoman szólva - egy sztereotípia. A javascript egy programozási nyelv, ha meg lehet benne oldani a problémádat akkor erre (is) való. Ha nem lehetne vele megoldani ezt a problémát akkor tényleg mondhatnánk, hogy nem erre való...
18

Egyetértés

tolmi · 2007. Júl. 23. (H), 19.45
Ebben derekasan nem értünk egyet, de ezzel a világon semmi baj.
19

alapvető ellentmondás

Marcell · 2007. Júl. 23. (H), 20.48
Korábban azt írtad, hogy:
Hidd el, direkt van így és nem pedig tehetségtelen gárda okán ered a probléma. Azért kösz.
Szerintem csak két lehetőség van:
a) valami CSS már eddig is be volt húzva a kódba (bárhol): ekkor egyszerűen csak azt kell bővíteni a megfelelő sorokkal
b) nem volt behúzva semmi CSS. Akkor viszont, nem értem, hogy hogy mered 2007-ben kijelenteni, hogy ez az oldal egy tehetséges gárda terméke, ha az oldal abszolút nem használ CSS-t...
20

Hagyjuk...

tolmi · 2007. Júl. 23. (H), 22.45
Hagyjuk...
24

Java != JavaScript

janoszen · 2007. Júl. 24. (K), 09.38
Őőőőő a JavaScript kódon nincs mit visszafejteni, a Java-hoz meg az égegyadta világon semmi köze a JavaScript-nek.
23

Azonnal élesbe?

janoszen · 2007. Júl. 24. (K), 09.36
Nekem egy félmondat ragadta meg az érdeklődésemet. A sitebuilder munkája azonnal élesbe kerül? Nem veszélyes ez egy kicsit? Mármint, mindenki hibázhat és ha a sitebuilder az, akkor ott csúnya presztízsveszteség keletkezik.

Szerintem, gondolkozz el azon, hogy esetleg újragondoljátok a koncepciót.
25

Összefoglalás és bocsánat

tolmi · 2007. Júl. 24. (K), 11.46
Nézzétek. Tényleg senkit nem akartam bántani a hozzászólásaimmal, szóval hivatalosan is elnézést mindenkitől. Köszönöm hogy segíteni próbáltok, de leírok itt néhány dolgot és ezzel szerintem lezárhatjuk a témát, mert szerintem sincs szabványos (X)HTML megoldás body-ba stylesheet illesztésre (sajnos). Ráadásul erre a HTML 5 sem fog lehetőséget adni. A számomra optimális megoldás a következőképpen nézett volna ki:

<html>
  <head>
    <title>Innercss experiment</title>
  </head>
  <body>
    <div id="header">
      <h1>Main header</h1>
    </div>
    <div id="content">
      <link rel="stylesheet" type="text/css" href="innerstyle.css" />
      <h3>Innerheader</h3>
      <p>Lorem ipsum dolor sit amet...</p>
    </div>
  </body>
</html>
És itt az innerstyle.css tartalma csak a content id-vel rendelkező div belsejére vonatkozzon. A kérdés feltevése előtt alaposan utánanéztem magam is, de szerettem volna megkérdezni máshol is, hátha elkerülte valami a figyelmem. Az eddig felsorolt, a kérdésre adott válaszokat mind kipróbáltam már a téma beküldése előtt, sőt kipróbáltam egy olyat is, hogy univerzális CSS osztályokat hozok létre és azt a template head-jébe teszem, majd a sitebuilder pedig ezeket rendeli hozzá a saját tag-jeihez. Félmegoldás, ugyanis a legtöbb elrendezkedési megoldásban praktikusak lennének a float-olt elemek, amik elég érdekesen viselkednek bizonyos egyéb módon pozícionált elemek mellett. Az abszolút pozícionált elemek azonban tökéletesen működnek és szépen is keverhetőek. Nekem úgy tűnik hogy ebben a kérdésben ez lesz az általam választott megoldás.
A többi választ illetően pedig annyit, hogy egyrészt nem most kezdtem a szakmát, tehát tisztában vagyok a Java és a JavaScript különbségével, tekintve hogy mindkettőben fejlesztettem eleget, sőt még kb. másik 10 nyelvben is. A serveroldali portál van J2EE-ben implementálva. Annak a visszafejtésével viccelődtem(ami mellesleg elég könnyen megoldható, csak haszna semmi).
Másrészt hogy a kérdést azért teszem fel, mert kíváncsi vagyok vagy mert egy szoftver áll mögötte, teljesen mindegy szerintem. Volt egy - szerintem érdekes - kérdésem és ennyi. Értem én hogy összességében akartok segíteni, de erre tényleg semmi szükség, mert a probléma olyan, amilyen. Nem tudok rajta változtatni, még akkor sem ha keresztre feszítetek. ;) Azért kérdeztem ezt egyébként, mert eredetileg ebben a szoftverben ezeket a template-ben levő layout-okat table-lel oldották meg és ez nekem felettébb nem tetszett. Mivel nincs pofám webre rakni egy ósdi table-lel formázott portált, ezért valószínüleg saját CSS keretrendszer fejlesztés lesz belőle. Szeretnék egy olyan megoldást erre, amit a többi ügyfél hasonló szoftvere is át tud venni. Tehát egyszer szeretnénk vele dolgozni és akkor is korrektül.
A stílusom pedig - bevallom - furcsa lehet elsőre. Nem kell személyes támadásnak venni semmit, azt nem így közvetítem, csak sajnos a félrebeszélést nem szeretem. Egy direkt kérdést tettem fel, mert egy direkt választ vártam. Mégvalami: nagyon kellemetlenül élem meg azt is hogy a webes fórumtopikok közt nem lehet keresni és gyorsan navigálni, mivel szinte minden topik 70%-a off téma és ez rengeteg értékes időt (és a türelmemet is) felemészt(i).
Sitebuilder téma: Annyit mondhatok hogy az egész Misimókus projekt arról szól, hogy a sitebuilder szabadon garázdálkodhat. Lenyen ez elég. Szóval nem tudom milyen koncepciót gondolhatnánk át proclub, hiszen erre épülnek ezek a portálok! :S Köszi mindenkinek!
26

válasz nem a konkrét problémára ;)

Hodicska Gergely · 2007. Júl. 24. (K), 14.15
Alapvetően megértem, hogy zavarnak az "okoskodó" megoldások (engem is zavar, amikor alapvetően mindenki fele az az első reakció, hogy biztosan tök hülye), viszont azt nehezen hiszem el, hogy a konkrét probléma ismeretében ne lehetne valamilyen kellően jó kompromisszumos megoldást elérni, úgy hogy a peremfeltételek ne sérüéjenek, de mégse a body-ba pakolsz be CSS-t.

Ami nekem nem tiszta (és pl. mrc utalt erre, de nem lett megválaszolva): az oldalnak gondolom van valamilyen CSS-e, nem lehet valamilyen szinten ebbe "belehookolni" a custom CSS részt? Ha jól rémlik, akkor JAVA esetén lehet filtereket beilleszteni a kiszolgálás menetébe (ez szerintem ezen alkalamzás esetén is megtehető), esetleg egy ilyen beletehetné a fő CSS-be egy placeholder helyére (vagy csak simán a végére) a custom CSS-t. Nyilván ez is csak egy ötlet, ami lehet, hogy nem illeszkedik a problémátokhoz, de akkor sem hiszem, hogy ne lehetne valamilyen módon ezt megoldani.


Üdv,
Felhő
27

Pontosan mit is szeretnél?

Jano · 2007. Júl. 24. (K), 20.41
Bocs, de a feltevésedre miszerint a CSS szabály attól függően hat az elemekre, hogy hol teszed be a kódba arra felhúzza az ember a szemét és kettőt visszalép a magyarázásban.

Valójában azért szeretnél a body-n belűl CSS-t inkludolni, hogy csak adott helyen érvényesüljön a szabály?

Találgatok:
Gondolom ez valami keretrendszer alkalmazás és ha Java, akkor portletek kimenetei jelennek meg egy-egy helyen, nevesítve valami id-vel ellátott DIV belsejében. Azt szeretnétek, hogy a portlet fejlesztője tudja meghatározni a kinézetet a saját dobozán belűl és az ne üsse szét az oldal többi részét.

Ekkor a portlet saját CSS-sében a fejlsztőnek meg kell mondani, hogy minden kiválasztója a DIV id-jével kezdődjön.

Az egyes CSS-sek behúzását pedig sokféle képpen meg lehet oldani. Ha a site már kér egy CSS-t, akkor ebbe @import módszerrel felsorolhatók.
28

Igen

tolmi · 2007. Júl. 25. (Sze), 09.46
Előszöris már nem kérdés a kérdés az adott feladat kapcsán. A megoldásunk mindössze kétféle CSS-t fog használni egy kis trükkel megfűszerezve:
* egy statikus CSS-t a template szabályaival
* egy dinamikusan JSP-ből generálódót amely pedig már eléri az App scope-ban levő layout URL-t és így a layout saját CSS-sét.

Így a nagy CSS-t tudja cache-elni a böngésző és a proxy-k, míg a layout CSS marad csak folyton letöltésre(mivel az méretben kicsiny lesz, ez nem lesz gond)

Másrészt nem értem mire a visszahőkölés? Valami szentírásba ütközőt kérdeztem talán? :)
Mellesleg ettől a problémától függetlenül is érdekes és hasznos dolognak tartanám ezt a lehetőséget. Ezért is kérdeztem úgy ahogy. Sokkal szebb lenne a megoldása ennek is és egy csomó csapatmunkában készült/készülő portálnak/egyébnek is.
29

És szegény böngésző?

Jano · 2007. Júl. 25. (Sze), 10.04
És szegény böngésző mit csinálna? Minden pillanatban kaphatna egy másik CSS-t, amivel fejbe vernék az eddigi szabályokat. Méretezhetne, színezhetne, rendezhetne át dolgokat akár visszamenőleg is. Az új fájl letöltéséig meg kéne állnia az oldal kirakásával. Nem véletlenül találták ki, hogy a HEAD-be kell pakolni a CSS-t! Azért van ott, hogy az oldal kirakása előtt már minden készen álljon a megjelenítéshez. A csapatmunka támogatását nem a CSS beillesztési szabályainak kell megoldani.
30

Visszamenőleg?

tolmi · 2007. Júl. 25. (Sze), 10.37
Visszamenőleg? Az szépen nézne ki. Éppen ezért írtam hogy a DOM tree szülőire már nem hatna egy ilyen megoldás. Továbbá az érveid szerintem nem annyira súlyosak, hogy ennek megvalósíthatóságát akadályozná. Egyszerűen nem lenne észrevehető bonyolultságnövekedés és szerintem sebességben sem lenne észrevehető. (Ugyanis csak a page belső CSS reprezentációjából kell egy klónt csinálni és a beágyazott CSS szerint a megfelelő elemeket felülírni. Pontosan ezt csinálja a head-ben is, amikor több CSS van importolva, csak nem klónoz)
31

egyetértek

zzrek · 2007. Júl. 25. (Sze), 11.09
Egyetértek, hogy akár lehetne is egy ilyen. Tulajdonképp van is, az inline css. Akár ezt tovább lehetne fejleszteni úgy, hogy pl a style tagban linket is lehetne megadni, melyen elérhető css fájl az adott node-ra lenne érvényes. De mostanában pont ellenkező a trend (amivel nem teljesen értek egyet egyébként): manapság jól el szeretik különíteni a tartalmat (szerkezetet), a funkciókat és a megjelenítést - szóval nem lehet olyat várni, hogy ebben számodra kedvező változás lesz a jövőben. (Ellenben viszont a keretrendszereket fel kell készíteni az ilyen egyre szigorodó szerkezetekre: a htmlben egyre kevésbé lesz stílusdefiníció)

(Ha nem akarsz js-ezni, akár azt is megteheted, hogy csinálsz egy css/inline css átalakítót és megírod a css szelektorok illesztését a node-okra szerver oldalon :-)