Generowanie CSS

Zrobiłem mały porządek ze stroną internetową firmy, tak na prawdę porządek z CSSami i okazało się, że zawierają one kilkanaście wpisów które są mocno bez sensu, a ekzystują tylko dlatego, że IE6. No ale ten msie6 znika z rynku i już za chwilę (kiedy spadnie poniżej 5%) będzi esię można kompletnie przestać paskudztwem przejmować, tymczasem jednak jest i tu pytanie.

Co myślicie o takim walku aby CSS generować dynamicznie w PHP i ten wyhackowany CSS wysyłać tylko jesli przeglądarka w UA zdradzi sie, ze jest 6. Cała reszta dostanie CSS bez hackow.

Pomysł wydaje się być ok, ale moze czegoś nie zauważam?

2 lata, 3 miesiące temu | edytowane przez: rzientek 435221243

  • Samo dynamiczne generowanie CSS w sumie ma trochę sensu - choćby dlatego, że można wówczas używać choćby i zmiennych, co pozwala na łatwe zmodyfikowanie koloru w kilku miejscach itd...

    Rzuć okiem na ciekawy preprocessor do CSS o nazwie Less - wersja dla PHP jest tutaj.

    Jeżeli zaś chodzi o samo prezentowanie różnych arkuszy stylów dla różnych przeglądarek, to moim zdaniem najlepiej jest przygotować bazowy arkusz dla wszystkich, a potem za pomocą tzw. komentarzy warunkowych dołączać tylko arkusz nadpisujący to, co w przypadku IE modyfikacji wymaga. PHP do tego akurat nie potrzeba. Składnia wygląda tak:

    <!–[if IE 6]>
    <link href=”../ie6.css” rel=”stylesheet” ………. />
    <![endif]–>
    

    Więcej, z przykładami jak rozpoznawać różne wersje IE, tutaj.

  • Nie potrafię zrozumieć Twojego punktu widzenia, ale dlaczego po prostu nie dostarczysz osobnego arkuszu dla przeglądarek, które tego wymagają? Po co wymyślać koło na nowo? Poza tym, IE6 nie zniknie za chwilę, niestety.

    PS Jeśli możesz, zmodyfikuj ten post, przecież te błędy w oczy rażą...

  • Generowanie CSS z PHP jest oczywiście możliwe, ale nie ma sensu. W przypadku jaki opisujesz - jeżeli dobrze rozumiem - jest albo użyć komentarzy jak w przykładzie Micha, albo stworzenie 3 oddzielnych arkuszy CSS: - wspólny - nowoczesne przeglądarki - ie6

    i podczas generowania strony (PHP jak rozumiem) includowanie dwóch ostatnich zamiennie ze względu na UA klienta. Zyskujesz wtedy praktycznie to samo co w opisie z pytania.

    Nie wiedziałem, moja kulpa :D Generowanie dokumentu CSS jest złym pomysłem bo taki wygenerowany CSS jest zawsze nowy, a skoro jest zawsze „nowy” to nie będzie używana kopia z cache przeglądarki, czyli kompletnie bez sensu będziesz wysyłał cały arkusz przy każdym przeładowaniu strony.

  • O ile wiem, niektóre duże serwisy tak robią, że wysyłają CSS'y dostosowane do przeglądarek, w których otwierany jest serwis, do tego stopnia, że nawet dla tej samej przeglądarki różne dla Mac'a, różne dla Windzi...

    Więc ja tu problemu nie widzę. Natomiast zastanów się jak chcesz tym zarządzać, żeby kiedyś komuś w przyszłości nie umknął fakt, że IE6 dostaje jakieś tam CSS'y obok głównego pliku z nimi.

  • W ten sposób nie rozdzielasz warstwy wizualnej od logicznej w twojej aplikacji. Przeplatanie kodu HTML i CSS z PHP nie jest dobrym rozwiązaniem, z każdym razem jak trzeba będzie zrobić jakąkolwiek poprawkę w wyglądzie strony będziesz musiał szukać w kodzie. Dodatkowo jeżeli dla IE6 będziesz generował co innego niż dla innych przeglądarek, każda poprawkę trzeba nanosić w 2 miejscach.

  • Proponuję zainteresować się CSScaffold, czyli zastosowaniem scaffoldingu dla css-a. Narzędzie o dużych możliwościach w znaczący sposób ułatwiające pracę z css-em (mała prezentacja) i ma tylko jedną wadę. Utrudniona praca z Firebug-iem. To samo jednak dotyczy np. Less i każdego innego tego typu narzędzia.

Zaloguj się, aby dodać swoją odpowiedź