• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Generowanie css przez js z prefixami

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
261 wizyt
pytanie zadane 2 grudnia 2018 w JavaScript przez MrxCI Dyskutant (8,260 p.)

Mam problem ponieważ prefixy to ważna rzecz w moim projekcie, problem w tym że style są generowane dynamicznie przez kod JS, zastanawiam się czy są jakieś inne prostsze wyjścia niż pisanie tego jak na poniższych przykładach, tym normalnym i moim ułatwionym dla większej ilości prefixów.

 

 

Normalnie:

x.css({
 display:`-webkit-box`,
display:`-ms-flexbox`,
display:`flex`
})

// powyższy kod wykonuje się bardzo często (dla flexu to nie ma sensu, ale to przyklad) i jest powielany w wielu miejscach




Moja wersja

function prefixer(x) {

if (x.name === `flex`){
return {
 display:`-webkit-box`,
display:`-ms-flexbox`,
display:`flex`
}
}

x.css(prefixer({name:flex}));

// dla flexu nie pokaże, ale np. dla tranform itd. obiekt procz wlasnosci name przymuje jeszcze wartość, ktora ustawia do kazdego prefiksu

 

1 odpowiedź

+1 głos
odpowiedź 2 grudnia 2018 przez Tomek Sochacki Ekspert (227,490 p.)
wybrane 2 grudnia 2018 przez MrxCI
 
Najlepsza
W ogóle źle podchodzisz do problemu :) Nie powinno Cię interesować dla jakich konkretnie reguł robisz prefixy, od tego są narzędzia, które po prostu konfigurujesz względem wsparcia konkretnych środowisk.

Podepnij po projekt np. webpacka i dodaj autoprefixera i problem zostanie rozwiązany. Style ustawiasz wtedy normalnie w CSS, JS nie jest od nadawania styli. Webpack zrobi całą resztę za Ciebie i wypluje Ci odpowiednio obrobione pliki css. Dodatkowo zaletą webpacka jest fakt, że bardzo łatwo dodasz sobie pluginy do minifikacji zarówno css jak i js, bo na proda nie powinien lecieć kod bez minifikacji - jest to kompletnie zbędne dla client-side i niepotrzebnie dokładasz bajty w response z serwera.
komentarz 2 grudnia 2018 przez MrxCI Dyskutant (8,260 p.)

Mój projekt posiada sztywne arkusze stylów generowane przez webpacka z sass i prefixami, chodzi mi o te które są w czasie rzeczywistym modyfikowane np. względem ruchów myszki, display:flex to byl zły przyklad, głównie chodzi mi o 

transform: translate3d();

Który zmienia się właśnie na bieżąco i on też wymaga prefixów, w tym wypadku muszę chyba użyć sposobu z JS

komentarz 2 grudnia 2018 przez Tomek Sochacki Ekspert (227,490 p.)

w tym wypadku muszę chyba użyć sposobu z JS

niekoniecznie... jeśli robisz translate o zawsze konkretnie znaną wartość to możesz po prostu z poziomu JS dodawać i usuwać klasę, która zawiera tę regulę, a webpack obrabiając CSS wypluje Ci w tej klasie prefixy. Ja generalnie jestem dużym przeciwnikiem ingerowania z poziomu JS w style inline, znacznie lepsze moim zdaniem jest operowanie na klasach, co nadal pozostawia jasny podział - CSS wygląd, JS zachowanie.

komentarz 2 grudnia 2018 przez Comandeer Guru (606,240 p.)

Hmm, a wgl to jesteś pewien, że akurat dla transformacji potrzebujesz prefiksów? Przeglądarki ich potrzebujące niemal wyginęły.

komentarz 2 grudnia 2018 przez Tomek Sochacki Ekspert (227,490 p.)
fakt, to rozwiązuje chyba problem :)

szkoda tylko tego IE 6... :)
komentarz 2 grudnia 2018 przez MrxCI Dyskutant (8,260 p.)
Podałem w przykładzie że chodzi o transform, ale nie 2d, tylko 3d, twoj link odnosi się do 2d, w 3d wygląda trochę inaczej

https://caniuse.com/#feat=transforms3d

Zresztą zapewnienie jak największej kompatybilności to podstawa, rozumiem że łączenie js z css nie jest zbyt dobre, ale w przypadku np. generowania położenie elementu proporcjonalnie do polożenie myszy dla samych klas jest cięzkie do zrobienia.

W projekcie - grze, obiekty ruszają się względem ekranu przez transform 3d, więc scroll ustawia im setne wartości itd.

Poza tym, sam react nakłania do używania html i css wewnątrz js, a przecież to jedna z lepszych bibliotek, ale mniejsza, po prostu potrzebuje rozwiązania lepszego niż to co posiadam, bo wydaje mi się.. męczące komputer
komentarz 2 grudnia 2018 przez Comandeer Guru (606,240 p.)
Wsparcie wygląda de facto tak samo – nie ma przeglądarek, które potrzebują prefiksów. NIe można traktować zachowania kompatybilności jako celu samego w sobie, bo potem dostosowujemy stronę do Netscape'a 3, mimo że w statystykach odwiedzin dla naszej stronie Netscape'a nie było od 20 lat. To że React co poleca nie jest żadnym argumentem, bo liczy się kontekst.

Poza tym nie twierdzę, że style inline są w tym wypadku złe, twierdzę, że prefiksy są Ci niepotrzebne – a to całkowicie co innego.

Dodatkowo co to znaczy "męczące komputer"? Jakie są objawy?
komentarz 2 grudnia 2018 przez MrxCI Dyskutant (8,260 p.)
Dość dobrze wytłumaczyłeś i dziękuje ci za to, poprzez męczenie komputera mam na myśli zacinanie się przy translacji większych obrazów, ale tu ma znaczenie moje 4gb ramu.

Podobne pytania

+2 głosów
3 odpowiedzi 508 wizyt
0 głosów
2 odpowiedzi 876 wizyt
pytanie zadane 6 kwietnia 2020 w Inne języki przez PGR Obywatel (1,360 p.)
0 głosów
0 odpowiedzi 253 wizyt
pytanie zadane 18 stycznia 2019 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)

93,194 zapytań

142,208 odpowiedzi

322,051 komentarzy

62,518 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 3053p. - dia-Chann
  2. 2998p. - Łukasz Piwowar
  3. 2993p. - Łukasz Eckert
  4. 2970p. - CC PL
  5. 2930p. - Tomasz Bielak
  6. 2907p. - Łukasz Siedlecki
  7. 2890p. - rucin93
  8. 2801p. - Adrian Wieprzkowicz
  9. 2752p. - Mikbac
  10. 2485p. - Marcin Putra
  11. 2461p. - Michał Telesz
  12. 2418p. - Michal Drewniak
  13. 2371p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1650p. - Mariusz Fornal
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...