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

Dlaczego W3C zaleca używanie zapisu flex, zamiast każdej składowej właściwości osobno?

Object Storage Arubacloud
+4 głosów
311 wizyt
pytanie zadane 16 września 2019 w HTML i CSS przez startCoding Obywatel (1,210 p.)

Przeglądając dokumentację odnośnie Flexboxa znalazłem zalecenie aby korzystać z właściwości skrótowej flex, zamiast zapisywać osobno właściwości składowe.

W dokumentacji czytamy:

Authors are encouraged to control flexibility using the flex shorthand rather than with its longhand properties directly, as the shorthand correctly resets any unspecified components to accommodate common uses.

 

[Developerzy są zachęcani do kontrolowania elastyczności za pomocą zapisu skrótowego flex, zamiast poszczególnych właściwości składowych, ponieważ właściwość skrótowa flex poprawnie resetuje jakiekolwiek nieokreślone komponenty w celu dostosowania do typowych zastosowań.]

Ta uwaga jest powtórzona wszędzie w dokumentacji dla flex-growflex-shrink czy flex-basis.

Nie bardzo rozumiem w ogóle co ma oznaczać to wyjaśnienie w dokumentacji i dlaczego dla moich elementów w flex containerze nie powinienem po prostu określić flex-basis czy flex-grow...
Bardzo proszę o łopatologiczne wyjaśnienie i jeśli to możliwe zobrazowanie problematyki na przykładzie/ach.

Pozdrawiam serdecznie.

2 odpowiedzi

+3 głosów
odpowiedź 16 września 2019 przez Comandeer Guru (601,550 p.)
wybrane 16 września 2019 przez startCoding
 
Najlepsza

Dokładniej jest to opisane przy samej własności flex:

Note: The initial values of flex-grow and flex-basis are different from their defaults when omitted in the flex shorthand. This is so that the flex shorthand can better accommodate the most common cases.

Innymi słowy: flex: 1 generuje inny wynik niż po prostu ustawienie flex-grow: 1. W tym pierwszym przypadku uzyskamy element o takich właściwościach:

  • flex-grow: 1;
  • flex-shrink: 1;
  • flex-basis: 0;

W drugim przypadku uzyskamy:

  • flex-grow: 1;
  • flex-shrink: 1;
  • flex-basis: auto;

IMO łatwiej jest ustawić jedną własność niźli pamiętać o konieczności ustawiania wszystkich trzech. Chociaż z drugiej strony to trochę błąd w standardzie, że skrótowy zapis odbiega od nieskrótowego. Ale teraz to już po ptokach i trzeba będzie z tym żyć.

komentarz 16 września 2019 przez startCoding Obywatel (1,210 p.)

No to przeoczyłem! Ja myślałem, że jeżeli zapisuję flex: 1; to pozostałe właściwości składowe (flex-shrink flex-basis) są ustawiane na wartości domyślne, czyli kolejno auto.

Jeżeli zapis flex powoduje przy niepodaniu wartości dla flex-basis ustawienie wartości 0, to jaki jest sens korzystania z tego skrótu, kiedy niemal zawsze trzeba podawać w ramach tej właściwości wartość dla flex-basis? W praktyce niemal nigdy nie chcemy aby flex-basis miał wartość 0, a jak rozumiem ideą shorthandów jest danie developerowi komfortowego wyboru aby wykorzystać wszystkie, lub część możliwych składowych właściwości.

A to wytłumaczenie w postaci: 

This is so that the flex shorthand can better accommodate the most common cases.

Nadal jest dla mnie całkowicie niezrozumiałe.


Jeszcze aby się upewnić, że całkiem nie zgłupiałem - flex-basis rozumiałem następująco: domyślna wartość to auto - gdzie dla auto flex item albo przyjmuje określony wymiar względem main axis (width lub height), lub jeśli to też nie zostało określone to przyjmuje wymiar contentu. Jeżeli jest jakakolwiek inna wartość niż auto np. to ta wartość zawsze nadpisze height czy width. Dobrze to rozumiem?

komentarz 16 września 2019 przez Comandeer Guru (601,550 p.)

Jeszcze aby się upewnić, że całkiem nie zgłupiałem - flex-basis rozumiałem następująco: domyślna wartość to auto - gdzie dla auto flex item albo przyjmuje określony wymiar względem main axis (width lub height), lub jeśli to też nie zostało określone to przyjmuje wymiar contentu. Jeżeli jest jakakolwiek inna wartość niż auto np. to ta wartość zawsze nadpisze height czy width. Dobrze to rozumiem?

Wygląda na to, ze tak.

A to wytłumaczenie w postaci: 

This is so that the flex shorthand can better accommodate the most common cases.

Nadal jest dla mnie całkowicie niezrozumiałe.

Najwidoczniej autorzy specyfikacji uznali, że ustawienie flex-basis na 0 jest bardziej intuicyjne. Pewnie gdzieś w issues na GH jest zakopana dyskusja na ten temat, ale to już mocno archeologiczna zabawa. 

komentarz 16 września 2019 przez startCoding Obywatel (1,210 p.)

Dla wszystkich znajomych backendowców którzy mówią, że CSS jest nielogiczny, chciałem (i nadal chcę) mówić "Nie, po prostu nie przestudiowałeś dokumentacji i dlatego nie rozumiesz". 

Niestety, im dalej w las poznając więcej szczegółów tego języka to tym bardziej tracę wiarę, że mogę takie zdanie powiedzieć.

No nic, pozostaje zaakceptować, że jak korzystam z shorthanda to właściwości składowe nie przyjmują wartości domyślnych (a przynajmniej nie flex-basis)...

 

0 głosów
odpowiedź 16 września 2019 przez Majonez.exe Gaduła (3,490 p.)
W3C gada czasami głupoty, używa starej specyfikacji itp.
3
komentarz 16 września 2019 przez Comandeer Guru (601,550 p.)

W3C ustala specyfikację, więc nie może używać starej wersji… Jest tylko różnica pomiędzy wersją opublikowaną jako raport techniczny (Working Draft), a wersją rozwojową (Editor'e Draft). Jednak obydwie specyfikacje są tworzone przez W3C, a dokładnie – CSS Working Group.

komentarz 16 września 2019 przez startCoding Obywatel (1,210 p.)
To kto według Ciebie określa standardy sieciowe, szczególnie, że W3C działa od dobrych paru miesięcy wspólnie z WHATWG?

P.S. To nie jest odpowiedź do Comandeer'a, tylko pytanie retoryczne do MAJO.
komentarz 17 września 2019 przez Majonez.exe Gaduła (3,490 p.)
Wiem, teraz w sumie ja powiedziałem głupotę, oni ustalają standardy sieciowe, czasami jednak walną głupotę gdzieś w "przykładzie" np. złe zastosują coś itp. Przynajmniej ja takie coś widziałem.
1
komentarz 17 września 2019 przez Comandeer Guru (601,550 p.)
I oczywiście zgłosiłeś odpowiedni issue na GH, żeby mogli to poprawić i żeby nikt nie powielił tego błędu? ;)

Podobne pytania

0 głosów
2 odpowiedzi 497 wizyt
pytanie zadane 18 sierpnia 2019 w HTML i CSS przez Radek Koniarski Użytkownik (870 p.)
0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 15 marca 2018 w HTML i CSS przez dudijr Początkujący (280 p.)
0 głosów
1 odpowiedź 369 wizyt
pytanie zadane 3 marca 2018 w HTML i CSS przez nevve Nowicjusz (170 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...