• 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

Object Storage Arubacloud
0 głosów
198 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,510 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,510 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 (601,110 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,510 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 (601,110 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 340 wizyt
0 głosów
2 odpowiedzi 542 wizyt
pytanie zadane 6 kwietnia 2020 w Inne języki przez PGR Obywatel (1,360 p.)
0 głosów
0 odpowiedzi 233 wizyt
pytanie zadane 18 stycznia 2019 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)

92,565 zapytań

141,416 odpowiedzi

319,598 komentarzy

61,948 pasjonatów

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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...