granice pływania. Float i clear to właściwości CSS dla elementów pływających w układzie blokowym. Jak działa Flexbox

Każdy atrybut, z wyjątkiem wartości logicznych, ma wartość jednego z następujących typów: słowo kluczowe, ciąg znaków, adres, liczba, wartość procentowa, kod języka. Nie są to wszystkie typy, ale najczęściej spotykane.

Słowo kluczowe

Niektóre atrybuty mają zastrzeżone wartości zwane „słowami kluczowymi”. Na przykład wartość atrybutu type elementu definiuje typ elementu formularza. Poniżej pozycja tworzy przycisk.

Słowa kluczowe podlegają specyfikacji, lista ich wartości jest ograniczona i nie może być dowolnie zmieniana.

Linia

Ciąg znaków to tekst ujęty w cudzysłów podwójny lub pojedynczy.

Znak cudzysłowu określa początek i koniec ciągu, zatem nie można dodać tych samych cudzysłowów wewnątrz ciągu. Na przykład w poniższym wierszu zastosowano niewłaściwą kombinację cudzysłowów.

Aby poprawnie zapisać ciąg znaków z cudzysłowami wewnętrznymi, istnieje kilka opcji.

1. Ucieczka od wewnętrznego cudzysłowu w ten sposób - \". W tym przypadku przeglądarka nie będzie już postrzegana jako cudzysłów, ale będzie uważana za znak.

2. Użyj kombinacji pojedynczych i podwójnych cudzysłowów.

Tutaj ciąg znaków w atrybucie tytułu jest ujęty w pojedynczy cudzysłów, więc możemy bezpiecznie pisać w podwójnym cudzysłowie.

Wszystko to działa w ten sam sposób w przypadku pojedynczych cudzysłowów.

Adres

Adres to ścieżka do dokumentu, np. pliku graficznego. Adres jest potrzebny w przypadku, gdy następuje przekierowanie do serwisu, innej strony internetowej lub pobierany jest konkretny plik. Na przykład w elemencie adres jest używany jako wartość atrybutu src, określa ścieżkę do pliku obrazu.

Rozróżnij adresy bezwzględne i względne.

Adresy bezwzględne

Takie adresy działają wszędzie i wszędzie, niezależnie od nazwy witryny lub strony internetowej, na której podany jest adres i zawsze zaczynają się od protokołu przesyłania danych. W przypadku stron internetowych jest to zwykle protokół HTTP (HyperText Transfer Protocol), więc adresy bezwzględne zaczynają się od słowa kluczowego http://. Przykład 1 pokazuje łącze wykorzystujące adres bezwzględny.

Przykład 1: Użycie adresu bezwzględnego w łączu

Połączyć

Google



Oprócz protokołu HTTP istnieje również bezpieczny protokół HTTPS. Nie zawsze jest oczywiste, jaki protokół jest używany na stronie, dlatego można go w ogóle pominąć w adresie łącza. W takim przypadku adres zostanie zapisany w następujący sposób:

Google

Adresy bezwzględne służą głównie do wskazania innego zasobu sieciowego i rzadko są używane w przypadku łączy wewnętrznych.

Adresy względne

Adresy względne są określane w katalogu głównym witryny lub bieżącym dokumencie. Na przykład kod oznacza pobranie pliku graficznego o nazwie pic.png, który znajduje się w tym samym folderze, co sama strona internetowa. Spójrzmy na kilka przykładów takich adresów.

/
Adres zwykle wskazuje na plik indeks.html, który znajduje się w katalogu głównym witryny. Jeśli nie ma pliku Index.html, przeglądarka zwykle wyświetli listę plików w tym katalogu. Nazwa pliku nie musi być indeks.html, parametr ten zmienia się poprzez ustawienia serwera WWW - jest to nazwa programu, który analizuje żądania przychodzące z przeglądarki i wysyła do niej dokumenty wyświetlane użytkownikowi.

/images/pic.png
Myślnik (/) przed adresem wskazuje, że adresowanie zaczyna się od katalogu głównego witryny. Link prowadzi do pliku pic.png, który znajduje się w folderze obrazów. A to z kolei znajduje się w katalogu głównym witryny.

../help/me.html
Dwie kropki przed nazwą informują przeglądarkę, aby przeszła o jeden poziom wyżej na liście folderów witryny i tam „wyszukała” w folderze pomocy plik o nazwie me.html.

podręcznik/info.html
Jeżeli przed nazwą folderu nie ma żadnych dodatkowych znaków, np. kropek czy myślników, to folder znajduje się w bieżącym folderze i już w nim znajduje się plik info.html.

Adresy URL powiązane z katalogiem głównym witryny, takie jak /demo/, działają wyłącznie pod kontrolą serwera WWW i nie mają zastosowania na komputerze lokalnym.

Spinki do mankietów

Spójrz na moje zdjęcie!

Jak zrobić to samo zdjęcie?



Czasami adresy można znaleźć w postaci ./file/doc.html. Kropka z przodu oznacza, że ​​odliczanie rozpoczyna się od bieżącego folderu. Taki wpis jest zbędny i można go skrócić do pliku/doc.html.

Liczby

Liczby składają się z cyfr od 0 do 9; w przypadku liczb ujemnych, jeśli to konieczne, z przodu umieszcza się znak minus (-45). Przykład 3 pokazuje użycie liczb jako wartości atrybutów.

Przykład 3: Używanie liczb

Liczby

Temperatura wody

Niski Normalna gorący Gotująca się woda

Oprócz liczb całkowitych dopuszczalne jest stosowanie ułamków dziesiętnych, przy czym części całkowite i ułamkowe są oddzielone od siebie kropką - 36,6, jak pokazano w przykładzie 4.

Przykład 4. Liczby ułamkowe

wejście, maksymalny atrybut

Podaj swoją temperaturę w stopniach:



Odsetki

Notacja procentowa umożliwia powiązanie z rozmiarem elementu nadrzędnego i ustawienie rozmiaru względem niego. Załóżmy, że mamy następujący kod:

Element znajdujący się wewnątrz

Dlatego element

będzie rodzicem . Jest też odwrotnie – element jest dzieckiem

Odpowiednio w tym przypadku szerokość obrazu w procentach jest obliczana na podstawie akapitu nadrzędnego, który domyślnie zajmuje całą wolną przestrzeń okna na szerokość.

Przeglądarka rozumie, że mówimy o procentach, jeśli po liczbie zostanie dodany symbol %, np.: szerokość="40%" .

Przykład 5 pokazuje kod strony internetowej, w którym szerokość obrazu jest podana procentowo.

Przykład 5. Wymiary obrazu w procentach

Obraz



Wynik tego przykładu pokazano na ryc. 1. Szerokość obrazu jest ustawiona na 100%, więc zajmuje całą szerokość okna przeglądarki. Wysokość nie jest określona i jest obliczana automatycznie przez przeglądarkę.

Ryż. 1. Rozmiar obrazu w procentach

Zaletą zapisu procentowego jest to, że rozmiar obrazu zmienia się wraz z szerokością okna przeglądarki i nie pozostaje statyczny. Do wad można zaliczyć pogorszenie jakości obrazu przy jego silnym rozciągnięciu.

Kod języka

Żyjemy w epoce globalizacji, kiedy strony internetowe zawierają teksty w różnych językach. Pokazywać Wyszukiwarki, w jakim języku jest napisany tekst i skonfiguruj ustawienia inne języki(na przykład rodzaje cytatów), a język tekstu jest oznaczony kodem. Do ustawienia języka używany jest atrybut lang (przykład 6).

Przykład 6: Użycie atrybutu lang

język

Wyrażenie w języku francuskim

Je n „ai pas mange depuis sześć dni



W tym przykładzie cała strona jest ustawiona na język rosyjski z atrybutem lang ustawionym na ru . Aby pokazać, że język dotyczy całej strony, do elementu dodawany jest atrybut . W przypadku tekstu francuskiego do elementu dodawany jest atrybut lang o wartości fr

Poprawne wartości atrybutu lang znajdziesz na tej stronie.

Opis

Określa, do której strony element zostanie wyrównany, podczas gdy inne elementy będą go otaczać po innych stronach. Gdy wartość właściwości float wynosi none, element jest renderowany na stronie w normalny sposób, przy czym jedna linia zawijanego tekstu może znajdować się w tej samej linii, co sam element.

Składnia

pływak: lewy | prawda | żaden | dziedziczyć

Wartości

do lewej Wyrównuje element do lewej, a wszystkie inne elementy, takie jak tekst, otaczają go do prawej. prawo Wyrównuje element do prawej strony, a wszystkie pozostałe elementy otaczają go w lewo. none Zawijanie elementów nie jest ustawione. inherit Dziedziczy wartość elementu nadrzędnego.

HTML5 CSS 2.1 IE 9 Cr 15 Op 11 Sa 5 Fx 8

platforma

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.
Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te feugat nulla facilisi.


Wynik tego przykładu pokazano na ryc. 1.

Ryż. 1. Korzystanie z właściwości float

Model obiektowy

document.getElementById("elementID ").style.styleFloat

document.getElementById("elementID ").style.cssFloat

Przeglądarki

W przeglądarce Internet Explorer 6 występuje błąd polegający na podwajaniu lewej lub prawej wartości dopełnienia dla elementów pływających zagnieżdżonych w elementach nadrzędnych. Wyściółka przylegająca do boku elementu nadrzędnego jest podwojona. Problem zwykle rozwiązuje się dodając display: inline do elementu pływającego. Ta przeglądarka dodaje również dopełnienie 3px (tzw. „błąd trzech pikseli”) w kierunku określonym przez wartość zmiennoprzecinkową.

Internet Explorer do wersji 7.0 nie obsługuje wartości dziedziczenia.

Długa saga pisania artykułu o właściwości „float” dobiegła końca. Choć zajęło to dużo czasu, myślę, że udało mi się możliwie najdokładniej zebrać całą różnorodność zachowań tej potężnej i nieco dziwnej właściwości w jeden wspólny system.

Poza tym artykuł ten zawiera rekordową liczbę ilustracji wśród całego „Podręcznika” :-)

Los właściwości „float” w CSS jest nieco podobny do losu znacznika „table” w HTML: żadna z nich nie była w żadnym wypadku pomyślana jako środek do tworzenia kolumn i ogólnego układania elementów. Jednak ze względu na pewne niedoskonałości mechanizmu pozycjonującego powszechnie stosuje się w tym celu pływaki. A to, że został wymyślony dla kogoś innego, często objawia się różnymi nieoczywistymi efektami. Zanim jednak je pokażę, opowiem jeszcze, jak pływają Móc złóż wniosek o układ.

Na samym początku – mała uwaga odnośnie warunków. W języku rosyjskim nie jest znane określenie tego instrumentu (przynajmniej jeszcze nie). Dlatego wolę pisać to w oryginalnej pisowni - „float”. Brzmi coś w rodzaju „float” (nie musisz łamać kości policzkowych wymową „float”). Jednocześnie natychmiast proszę o wybaczenie mi takich swobód jak „unosić”, „unosić” pisklę itp. :-)

Zasada działania

Podobnie jak pozycjonowanie, pływak służy do przenoszenia pudełek. Jednak w przeciwieństwie do pozycjonowania, które pozwala na niemal dowolne przesuwanie pudełek, wszystko, co może zrobić element pływający, to przesunąć element w dowolną stronę strumienia, w prawo lub w lewo.

Jednocześnie sama skrzynka i osoby podążające za nią w strumieniu nabierają ciekawego zachowania:

  1. Float” Pudełko unosi się poziomo i przykleja się do boku swojego rodzica.
  2. Float” nakręcony box nie jest już rozłożony na całą szerokość nadrzędnego kontenera box (jak to ma miejsce w przypadku bloków w strumieniu). Gdy jego wolna strona nie jest dociśnięta do rodzica, pojawia się wolna przestrzeń.
  3. podążając za nim blok skrzynki są wyciągane i zajmują swoje miejsce, tak jakby pływającej skrzynki nie było w strumieniu.
  4. Małe litery pudełka wewnątrz bloków, które przesunęły się w górę, zaczynają opływać „pudełko pływaka” od wolnej strony.

Chcę jeszcze raz podkreślić rzecz, która nie jest od razu oczywista: sama ramka bloku podążającego za pływakiem czołga się pod nim i zajmuje całą szerokość strumienia, ale tekst wewnątrz tego bloku przesuwa się na bok i owija się wokół platforma.

Co więcej, ciekawe jest, jak zachowują się jedno po drugim pływające „pudełka, które idą w jednym kierunku. W tym przypadku kolejne pudełko będzie próbowało zmieścić się z boku poprzedniego, na swojej wolnej stronie. I tylko wtedy, gdy nie ma wystarczająco dużo miejsca, to przesunie się niżej i będzie próbował zmieścić się już tam.

Jest jeszcze jeden mały aspekt techniczny, nie konieczny do zrozumienia całej „mechaniki”. Floatować można zarówno pola blokowe, jak i inline.Jednocześnie boxy inline natychmiast automatycznie stają się boxami blokowymi.To znaczy, że nie jest konieczne pisanie display:block;dla float.

Z dwóch opisanych cech pływaków - dociskania do krawędzi i dokowania do siebie - są dwa główne ich zastosowania w układzie:

  • podział strony na kolumny
  • poziome menu

głośniki

Kolumny powstają, gdy bloki tekstu znajdują się obok siebie i mają tę samą wysokość.

Rozważę wszystkie układy kolumn w następującym prostym kodzie HTML z dwoma blokami:

...


Od razu trzeba powiedzieć, że wykonanie kolumn w kontenerze rozciągających się na szerokość jest trudniejsze niż przy danej szerokości. Istnieją dwa zasadniczo różne podejścia, odpowiednie dla różnych przypadków.

Szerokość proporcjonalna

Jeśli chcesz, aby szerokość kolumn zmieniała się proporcjonalnie wraz ze zmianą szerokości strony, podejście jest następujące:

#treść ( float:prawo; szerokość:70%; ) #sidebar ( float:lewo; szerokość:30%; )

Oznacza to, że dwa bloki pływakowe są ułożone obok siebie w różnych kierunkach, a ich szerokość jest podzielona w żądany procent.Ta metoda ułatwia zamianę kolumn - po prostu zmieniając wartości prawy i lewy.

Rozciąganie tylko jednej kolumny

Jeśli chcesz zmienić tylko szerokość głównej kolumny, poprzednia metoda nie jest odpowiednia. Fakt jest taki, że w CSS jest to niestety niemożliwe bezpośrednio sformułować coś takiego jak „cała dostępna szerokość minus określona liczba”.

Przejdźmy teraz do jednego z poprzednich artykułów na temat bloków w przepływie, gdzie wspomniałem o jednej z ich przydatnych funkcji, czyli automatycznym dopasowaniu do szerokości ramki nadrzędnej. Oznacza to, że jeśli blok w przepływie do przodu otrzyma, powiedzmy, lewy margines, wówczas jego szerokość odpowiednio się zmniejszy. I właśnie takie zachowanie chcieliśmy uzyskać z jednej z kolumn.

Zatem, aby uzyskać pożądany efekt, nadamy głównemu blokowi lewy margines, tak aby skurczył się w prawo, a pasek boczny unosił się na swoim miejscu:

#sidebar ( float:left; szerokość:200px; ) #content (margines-left:200px;)

Ale druga metoda ma jedną bardzo poważną wadę. Zauważ, że w oryginalnym kodzie HTML blok „paska bocznego” znika zanim zablokuj „treść” z główną treścią. Nie ma co myśleć, że stało się to przez przypadek :-). Zrobiono to celowo, bo inaczej ta druga metoda z nałożeniem kolumny na marginesie nie sprawdziłaby się.

Tak jak pisałem na początku artykułu pływaki przesuwają się jedynie na bok i robią miejsce kolejnym blokom, które przesuwają się w górę.Dlatego ważne jest aby "pasek boczny" był już na górze i wtedy główny blok będzie jechał Jeśli „pasek boczny” pojawi się za głównym blokiem, to pozostanie niższy i nie będzie wyglądał jak żadne kolumny.

To naprawdę źle, bo podważa jedną z głównych idei CSS: oddzielenie stylu od treści. Okazuje się, że chcieliśmy tylko zmienić projekt i jeśli bloki zostaną „źle zlokalizowane”, to będziemy musieli również wejść w szablony HTML. Ponadto z punktu widzenia konstrukcji mogą istnieć uzasadnione powody, aby ułożyć bloki w taki, a nie inny sposób. Przykładowo, aby użytkownik mógł rozpocząć czytanie głównego tekstu strony, nie czekając na załadowanie się nawigacji.

stała szerokość

Sprawy znacznie się upraszczają, gdy kolumny mieszczą się w kontenerze o stałej szerokości. W takim przypadku najlepiej zastosować pierwszą metodę (float” wszystkie kolumny), a szerokość można już ustawić nie tylko w procentach, ale w czymkolwiek chcesz, ponieważ można ją dokładnie obliczyć.

Wysokość głośnika

Znów nie było przypadkiem, że na zdjęciach „odciąłem” dolną część klocków :-). Inaczej w ogóle nie wyglądałyby jak kolumny, bo jak widać, jeśli zastosować fragmenty CSS, które podałem i pokolorować kolumny różnymi kolorami, to ich wysokość okaże się inna. Zależy to od ilości treści w tych blokach.

Ten przykry efekt można obejść na kilka sposobów.

Pierwsza metoda, zwana „fałszywymi kolumnami”, została opublikowana w autorytatywnym magazynie internetowym A List Apart we wrześniu 2004 roku i od tego czasu cieszy się dużą popularnością. Polecam każdemu przeczytać oryginał lub tłumaczenie na język rosyjski. Jeśli jednak nie masz dziś ochoty na klikanie, to oto krótkie podsumowanie jego istoty.

Zamiast przypisywać tło do samych kolumn, pozostają one przezroczyste, ale do ich kontenera przypisany jest obraz tła o szerokości całego kontenera i powtarzający się w pionie. Części tego obrazu, znajdujące się pod różnymi kolumnami, są zamalowane różne kolory a po iteracji w dół daje pożądany efekt wizualny.

Wielką zaletą fałszywych kolumn jest to, że nie musisz ograniczać się do jednolitych kolorów obrazu tła. Na nim możesz na przykład narysować efekt cienia między kolumnami, powtarzając poziome paski jako tło, ozdobę wzdłuż krawędzi.

Wadą tej metody jest to, że ponieważ obraz tła ma tylko jeden rozmiar, nie można jej używać do proporcjonalnego rozciągania kolumn, ponieważ obraz się nie rozciąga. Ale w przypadku, gdy jedna z kolumn ma stałą szerokość, tło można dostosować (nawiasem mówiąc, ten przypadek nie jest uwzględniany w „Faux kolumnach”).

Chodzi o to, żeby obrazek tła umieścić tylko pod kolumną, której szerokość jest znana. Resztę przestrzeni zajmie tło kolor pojemnik, a nie zdjęcie.

Weźmy nasz przykład i ustawmy kolumnę „pasek boczny” po prawej stronie na 200 pikseli szerokości i rozciągnijmy „treść”. Na „pasek boczny” przygotujemy obrazek o wymiarach 200x1 np. o równomiernym niebieskim odcieniu. A pod „treścią” przyjmiemy żółtawy.

W stylach wygląda to tak:

#sidebar ( float:right; szerokość:200px; ) #content ( margines-right:200px; ) body ( tło:url(bg.png) #FFD prawy górny powtórz-y; )

Jedyna reguła dotycząca kontenera (treści) określa całe zachowanie w tle:

  • podaj adres URL obrazu (bg.png)
  • kolor tła w miejscach gdzie go nie będzie (#FFD)
  • położenie obrazu dociśniętego do prawej krawędzi (prawy górny)
  • powtórz obraz w dół (powtórz-y)

W prawdziwy przykład CSS miał także kilka zasad dotyczących koloru liter i postępowania z obramowaniami, które są teraz nieistotne.

Innym sposobem wyrównania wysokości kolumn było opisane niedawno i już dobrze znane ze względu na wygodę.

Ideą jest ukrycie nierównych wysokości kolumn poprzez niewiarygodne wydłużenie ich w dół, tak aby ich końce znajdowały się poza rzeczywistą treścią strony. Osiągają to, umieszczając najpierw bardzo duże wcięcie (wypełnienie) w kolumnach, które jest zamalowane kolorem tła. Aby reszta treści nie przesunęła się tam za daleko, przypisano kolumny negatywny obramowanie (margines) o tym samym rozmiarze:

Dziwna liczba wynika z faktu, że jest to maksimum, na jakie pozwala przeglądarka Safari. Właściwie to nie jest takie dziwne. Dla każdego, kto się zastanawia, jest to maksymalna liczba całkowita ze znakiem reprezentowana przez 16 bitów.

W rezultacie wszystko, co następuje po kolumnach, zostaje przesunięte i znajduje się bezpośrednio pod zawartością najdłuższej z nich, a kolumny są wysunięte w dół. Jedno jest brzydkie – przez długie kolumny sama strona staje się równie długa. Aby temu zaradzić, musisz ustawić właściwość overflow:hidden na ich kontenerze, co zmusza kontener do po prostu odcięcia i nie pokazywania tego, co wykracza poza jego granice.

Mój przykład, który wziąłem na samym początku, ma jednak jeden szkopuł. Tam kolumny leżą bezpośrednio w korpusie. A jeśli treść jest ustawiona na overflow:hidden , przeglądarki całkowicie anulują przewijanie strony. Nawet jeśli prawdziwa treść znajduje się nad oknem. Dlatego kolumny muszą być zawinięte w inny element, taki jak div. Ale uczciwie trzeba powiedzieć, że w praktyce kolumny są już w coś owinięte.

Zasadzka

Gdzie się bez tego obejść :-). Jak zasugerowałem na samym początku niezbyt przejrzyście, ponieważ pływaki nie zostały wynalezione jako sposób na tworzenie kolumn, na pewno wyjdzie z tego coś brzydkiego i wróci, by prześladować wzrost spożycia analginy (niektórzy wolą tempalgin lub paracetamol) .

I „wynoś się” – w najprawdziwszym tego słowa znaczeniu. Przybliżmy nasz „goły” przykład nieco do rzeczywistości, dodając nagłówek nad kolumnami i blok z tekstem poniżej.

...


Dla uproszczenia wybierzemy prostą konstrukcję kolumnową o stałej szerokości. Zróbmy nagłówek i dolny blok na niebiesko z białymi literami, główna treść będzie biała, a dodatkowa kolumna również będzie niebieska, ale trochę jaśniejsza. Kolorystyka kolumn ustalimy metodą „Faux kolumny”.

/* Układ kolumn */ body ( szerokość:600px; margines:0 auto; ) #content ( float:left; szerokość:450px; ) #sidebar ( float:right; szerokość:150px; ) /* Kolory */ #main ( tło:url(bg.png) prawy górny powtórz-y; ) #header, #footer ( tło:#238; kolor:biały; )

Ponownie pominąłem wszelkie wcięcia i czcionki dla ułatwienia percepcji. Dodaj tekst testowy i uruchom:

Hmm... No cóż, w ogóle kolumny widać! Nie powstrzymuj się! Jednak cokolwiek by nie powiedzieć, nie wszystko wygląda zgodnie z planem, a można wręcz powiedzieć, że wszystko zamieniło się w swego rodzaju bałagan w kwiatach i literach.

Aby zrozumieć dlaczego tak się dzieje, musimy pamiętać opis działania float. Mianowicie, że klocki podążające za pływakami przestają zauważać te pływaki i zostają podciągnięte. Co więcej, sam pojemnik, w którym znajdują się pływaki, również przestaje je zauważać, a bloki pływakowe opadają przez dno pojemnika, jeśli kończą się wcześniej.

Teraz spójrzmy na nasz kod. Zarówno pływające bloki „treści”, jak i „paska bocznego” znajdują się w bloku „głównym”. W „głównym” nie ma nic więcej. A ponieważ nie ma już nic więcej do zmieszczenia, jego wysokość spada do zera! Dlatego nie widać dowolne białe tło obrazu jako tło „treści” ani jasnoniebieskie tło „paska bocznego”, ponieważ te kolory są przypisane jako tło „główne”.

Dalej - „stopka”. On, przestrzegając tej samej zasady, również nie widzi pływaka „blokuje się nakrętka” i jest podciągany bezpośrednio do samego nagłówka (ponieważ „główny” ma zerową wysokość). Ale w „stopce” jest tekst. Ten tekst powinien już być owiń wokół pływaków: po prawej „treść” i po lewej stronie „pasek boczny”. Pomiędzy kolumnami nie ma już wolnego miejsca, więc tekst może zaczynać się tylko pod jedną z kolumn, która kończy się jako pierwsza. Tam jest. Zatem „stopka” przesuwa się pod nagłówek i przesuwa się w dół, aż zniknie cały tekst. A całe to niebieskie tło, które jest pod nagłówkiem to "stopka" i tak jest.

Skąd taka złożoność

Opisane zachowanie powinno budzić konsternację. Dlaczego konieczne było wymyślenie takich komplikacji: podzielić koncepcję bryły tak, aby kolory i ramki były na wierzchu, a tekst był na swoim miejscu? Ale oczywiście ma to sens. To, wraz z zawijaniem obramowania, jest próbą sprawienia, aby model pudełkowy CSS zachowywał się normalnie w warunkach prostego przepływu tekstu. Szczegółowe, klasyczne wyjaśnienie tego zjawiska podaje ten sam Eric Meyer w artykule „Containing Floats” (w języku angielskim). Spróbuję pokrótce przekazać istotę.

Wyobraź sobie normalny ciąg akapitów – bloków tekstu – bez żadnego pozycjonowania. W jednym z akapitów znajduje się obraz, który chcesz przesunąć, powiedzmy, w lewo, tak aby tekst opływał go. Osiągnięto to wcześniej w HTML za pomocą właściwościlay="left", ale w duchu przenoszenia stylizacji z HTML do stylów, dla tej funkcji właśnie wymyślili właściwość float. Oznacza to, że zamiast wyrównać temu obrazowi przypisano float:left .

Niech przesunięty obraz zajmie większą wysokość niż tekst akapitu. Jeśli rozciągnie akapit i przesunie początek następnego akapitu niżej, będzie on wyglądał brzydko ze względu na zwiększony odstęp między wierszami sąsiednich akapitów. Przechodzi zatem przez wszystkie brzegi bloków, zachowując pomiędzy nimi piękne wcięcia, a tekst opływa je.

Rozwiązania

Zatem zachowanie zanikania jest zrozumiałe, ale jest wygodne w przypadku tekstu niepozycjonowanego i dość niewygodne w przypadku układu. Istnieją dwa podejścia eliminujące oba przejawy tej właściwości: podciąganie kolejnych pudełek do góry i opadanie przez dno pojemnika.

Istnieje specjalna właściwość eliminująca wyciąganie bloków. Powoduje to, że element przesuwa się w dół do momentu, aż z boku nie pozostaną żadne pływaki, a ponadto możesz kontrolować, z której strony nie powinno być pływaków:

clear:left upewnia się, że po lewej stronie nie ma pływaków clear:right upewnia się, że nie ma pływaków po prawej stronie clear:oba upewnia się, że nie ma pływaków po obu stronach

Jeśli więc powiemy naszej „stopce”:

#stopka (wyczyść:obie; )

Aby po lewej i prawej stronie nie było żadnych pływających kolumn, kolumna przesunie się w dół dokładnie tam, gdzie się kończą.

Ale to nie rozwiązuje innego problemu: pływaki wpadają przez „główny” i zapada się, pozostawiając przypisane do niego tło kolumny niewidoczne.

Możesz w jakiś sposób jawnie ustawić kontener. O ile rozumiem logikę specyfikacji, zachowanie przełączania awaryjnego jest uważane za logiczne tylko w prostym wątku. W innych przypadkach po prostu przeszkadza. I tak jest, jak widzieliśmy. Oznacza to, że wystarczy przypisać do kontenera np. położenie: bezwzględne lub float: lewe i nic nie przepadnie, kontener będzie w całości zawierał zarówno tekst, jak i pływaki.W naszym przypadku (i w większości przypadków przez sposób) to rozwiązanie jest całkiem odpowiednie.

Inny ciekawy sposób związany jest z efektem ubocznym właściwości przepełnienia. Samo w sobie ma na celu określenie, w jaki sposób pojemnik będzie się przepełniał, gdy nie będzie w stanie pomieścić jego zawartości. Ma cztery znaczenia:

Widoczna treść wykracza poza krawędź i jest normalnie widoczna (jest to zachowanie domyślne) Ukryta treść jest obcinana na zewnątrz kontenera i nie jest tam w żaden sposób widoczna automatycznie, jeśli zawartość przepełni kontener, posiada pasek przewijania umożliwiający przewijanie zawartość, jeśli nie, żadne przewijanie nie pojawia się jak auto, tylko kontener zawsze ma pasek przewijania, nawet jeśli zawartość go nie przepełnia

Więc tu efekt uboczny polega na tym, że jeśli umieścisz na pojemniku jakikolwiek przelew, z wyjątkiem zwykle widocznego, nagle się on rozciąga i obejmuje znajdujące się w nim pływaki, eliminując zapadnięcie się.

Jakiego rodzaju przelewu użyć? Przewijanie znika natychmiast - zawsze wiszące paski przewijania wyraźnie nie są potrzebne. Pozostaje auto i ukryty, które różnią się tylko tym, czy pasek przewijania pojawia się przy przepełnieniu, czy nie. Ale u nas nie ma żadnego przelewu, wręcz przeciwnie, tą właściwością zmusiliśmy pojemnik do dalszego rozciągnięcia, tak aby zakrył wszystkie swoje elementy. Dlatego można zastosować dowolną wartość.

Przesądnie staram się używać ukrytych, aby paski przewijania nie pojawiały się, jeśli z powodu jakichś usterek nagle nastąpi przepełnienie.

Rozwiązanie przepełnienia ma jeden problem związany z zachowaniem Some Browser™. Działa to tylko wtedy, gdy kontenerowi wyraźnie przypisano szerokość lub wysokość. Z tego powodu czasami są niewygodne w użyciu, gdy potrzebujesz rozmiarów automatycznych, a nie sztywnych.

Na koniec, aby naprawić nasz przykład z kolumnami, musimy to zrobić:

#main ( szerokość:100%; przepełnienie:ukryty; )

Przy okazji! Gdybym nie użył sztucznych kolumn do narysowania tła pod kolumnami, ale długiej metody dopełniania, byłoby to zażądał użyj overflow:hidden dla „main”, co również rozwiązuje problem wpadania. Ale w takim razie jak miałbym o tym rozmawiać?

To tyle z głośnikami... Czas nalać sobie pysznej herbaty (wiele osób woli kawę) i dodać do niej pyszną muffinkę, zatrzymać się, żeby poukładać sobie w głowie cały ten bałagan. Następnie czekamy na mały dodatek - dotyczący menu.

Menu

Przypomnę, że jeśli kilka kolejnych bloków unosi się w jednym kierunku, to każdy kolejny będzie próbował rozwinąć się od wolnej strony poprzedniego.Efekt ten jest szeroko stosowany do zamiany list sekcji witryny w poziome menu.

Weźmy tę listę:

  • Początek
  • Katalog
  • Kosz
  • Odniesienie

Aby wyglądało jak menu, należy przesunąć „wszystkie li w lewo, usunąć z nich atrybuty listy (wcięcia i wypunktowania) oraz dodać wcięcia, tło i ramkę dla upiększenia:

/* układ */ ul, li ( float:lewy; styl listy:brak; margines:0; dopełnienie:0; ) /* widok */ li ( dopełnienie:2px 10px; czcionka:Bold Small Tahoma; tło:#35C ; kolor:biały; obramowanie:pełne 1px;kolor obramowania:#46F #238 #238 #46F; ) a (kolor:biały;dekoracja tekstu:brak; )

Należy pamiętać, że wszystkie właściwości układu są przypisane zarówno do elementów ul, jak i li. Wygodnie jest sprowadzić to do jednej reguły, ponieważ:

  • float:left jest potrzebny dla elementów listy, aby rozwijały się w poziomie, oraz dla samej listy, aby elementy przez nią nie wypadały;
  • zerowy margines i dopełnienie eliminują domyślnie dopełnianie list, które przeglądarki robią, ale robią to zupełnie inaczej, więc łatwiej jest powiedzieć „wszystko wynosi zero”, niż pamiętać, co umieścić osobno dla którego elementu.

Moralność

Mechanizm pływakowy to kolejne narzędzie do układania, obok pozycjonowania bezwzględnego.

Różnią się na lepsze, pozwalając na pozostawienie elementu w przepływie, co jest bardzo wygodne w przypadku układu kolumnowego.

Ma jednak tę wadę, że jest mniej elastyczny ze względu na fakt, że elementów nie można dowolnie przenosić, a możliwość jego wykorzystania może zależeć od kolejności elementów w znacznikach HTML.

Artykuł ten stanowi część powstającego cyklu pod roboczym tytułem „Podręcznik”. Polecam zapoznać się z pozostałymi artykułami, które znajdują się w kategorii „Podręczniki”, gdzie są teraz zebrane w odwrotnej kolejności chronologicznej.

Już to ustaliliśmy. Dowiedzieliśmy się, że mają treść. Jednak to nie wszystko. Tagi mają również atrybuty, które rozszerzają ich możliwości, a atrybuty z kolei mają wartości. Za ich pomocą możesz ustawić parametry elementu, określić styl projektowania. Na przykład znacznik

zaznaczyłeś akapit. Ale jak to zrobić, żeby było wyrównane? Aby to zrobić, potrzebujesz określonego atrybutu o odpowiedniej wartości. Tak jak niektóre tagi nie mają pary, tak niektórych atrybutów można używać bez wartości.

Jak pisać atrybuty?

Atrybuty są słowami zastrzeżonymi (jak tagi, tylko bez nawiasów ostrych), ale ich wartości mogą być różne. Podobnie jak w przypadku tagów, zaleca się pisanie wartościowych atrybutów małymi literami, chociaż przeglądarki na ogół nie przejmują się tym – jest to tylko praktyczna zasada. dobre maniery: w języku rosyjskim NIE JEST AKCEPTOWANE RÓWNIEŻ PISANIE Z WŁĄCZONYM CAPS LOCKIEM. Dlaczego HTML jest gorszy?

Wartości z atrybutami są zapisywane w następującym formacie:

atrybut=”wartość” lang=”pl”

Atrybuty należy zawsze zapisywać wewnątrz znacznika otwierającego, po słowie zarezerwowanym.

Ustęp

Zwykle dla jednego tagu dostępnych jest wiele atrybutów. Nie ma znaczenia, w jakiej kolejności są wymienione.

Atrybuty ogólne

Każdy tag HTML ma swój własny zestaw atrybutów. Niektóre atrybuty mogą być dostępne w wielu tagach, inne natomiast mogą działać tylko w jednym. Istnieje również grupa uniwersalnych (globalnych) atrybutów, których można używać z dowolnym tagiem. Rzućmy okiem na atrybuty tej kategorii.

  • klucz dostępu umożliwia ustawienie skrótu klawiaturowego umożliwiającego dostęp do określonego obiektu strony. Można to zrobić na przykład za pomocą skrótu klawiaturowego Alt+1 użytkownik kliknął konkretny link. W ten sposób opracuj system nawigacji klawiaturowej.

Wartością atrybutu mogą być cyfry 0-9 lub litery alfabetu łacińskiego:

Link otworzy się po naciśnięciu skrótu klawiaturowego jednym

  • klasa umożliwia powiązanie tagu z predefiniowaną stylizacją CSS. Użycie atrybutu pozwala znacznie skrócić kod, ponieważ zamiast powtarzać wprowadzanie tego samego bloku CSS, wystarczy po prostu wpisać nazwę odpowiadającej mu klasy.
  • Używając treściwyedytowalne możesz pozwolić użytkownikowi na edycję dowolnego elementu strony HTML: usuwanie, wstawianie, zmianę tekstu. Ten sam atrybut umożliwia edycję i wyłączenie. Istnieją tylko dwie wartości: PRAWDA- zezwól na edycję FAŁSZ- zakazać.
  • Z atrybutem menu kontekstowe możesz nadać dowolnemu elementowi dokumentu wybrane przez siebie unikalne elementy menu kontekstowego. Samo menu tworzone jest w tagu , a atrybut menu kontekstowego otrzymuje swój identyfikator.
  • reż określa kierunek tekstu: od lewej do prawej (litry) lub od prawej do lewej (rtl).
  • przeciągane pozwala zabronić (FAŁSZ) lub pozwolić (PRAWDA) użytkownika do przeciągnięcia elementu strony wyposażonego w ten atrybut.
  • strefa zrzutu mówi przeglądarce, co zrobić z przeciąganym elementem: copy(value Kopiuj), przenosić ( przenosić) lub utwórz link do niego (połączyć).
  • ukryty- atrybut pozwalający ukryć zawartość elementu tak, aby nie był on wyświetlany w przeglądarce. Jeśli atrybut jest ustawiony na false, obiekt jest wyświetlany, true - ukryty.
  • ID ustawia identyfikator elementu - rodzaj nazwy potrzebnej do prostej zmiany stylu obiektu, a także po to, aby skrypty mogły uzyskać do niego dostęp. Wartością atrybutu będzie jego nazwa. Musi zaczynać się od litery łacińskiej i może zawierać cyfry, litery tego samego alfabetu łacińskiego (duże i małe), a także łączniki (-) i podkreślenia (_) . Litery rosyjskie nie mogą zawierać.
  • język pomaga przeglądarce zrozumieć język, w którym napisana jest treść, i nadać jej odpowiedni styl (na przykład w językach mogą być używane różne cudzysłowy). Wartości to kody języków (rosyjski - pl, Język angielski - pl i tak dalej.).
  • sprawdzanie pisowni zawiera (PRAWDA) lub wyłącza (FAŁSZ) sprawdzanie pisowni. Szczególnie przydatne jest użycie atrybutu w znacznikach pól formularzy, w których użytkownik będzie wprowadzał tekst.
  • styl pozwala ustawić wygląd elementu za pomocą kodu CSS.
  • tabindex umożliwia określenie, ile razy użytkownik będzie musiał nacisnąć klawisz Tab, aby obiekt z tym atrybutem uzyskał fokus. Liczba kliknięć określa wartość atrybutu - dodatnią liczbę całkowitą.
  • tytuł- podpowiedź, która pojawi się po najechaniu myszką na element i pozostawieniu go na chwilę w bezruchu. Ciąg znaków w wartości będzie wskazówką.
  • Tłumaczyć pozwala (Tak) lub zabrania (NIE) tłumaczenie treści tagów.
  • wyrównywać ustawia wyrównanie elementu. Można go na przykład zastosować do wyrównania tekstu do lewej strony (value lewy), po prawej stronie ( Prawidłowy), wyśrodkowany (Centrum) lub według szerokości (uzasadniać). W przypadku obrazów (tag ) jest również dostępna w celu wyrównania do góry najwyższego elementu w rzędzie ( szczyt), wzdłuż dolnej granicy (spód), a wartość środkowa powoduje, że środkowa linia obrazu pokrywa się z linią bazową linii.

Warto mieć na uwadze, że użycie atrybutu wyrównywać nie zalecane, a wyrównanie tekstu jest lepsze w przypadku CSS.

Przykład użycia atrybutów

Jako przykład rozważ linię kodu HTML:

Ten tekst można edytować

Cała linia tworzy akapit tekstu, który użytkownik może edytować w przeglądarce.

Przeanalizujmy każdy element ciągu.

- znacznik otwierający kontenera przechowującego akapit.

- znacznik zamykający.

Pomiędzy postaciami > I < zlokalizowany tekst Ten tekst można edytować. Jest to napis znajdujący się poza tagami (pomiędzy nimi), co oznacza, że ​​będzie widoczny dla użytkownika, który otworzył stronę. Przeglądarka traktuje go jako zwykły tekst, który należy wyświetlić na ekranie.

treściwyedytowalne=”PRAWDA” - to jest atrybut i jego wartość. Pamiętacie jak w szkole: x=3. Podobnie tutaj: treściwyedytowalne=”PRAWDA„. Atrybut treściwyedytowalne ustawia, czy użytkownik będzie mógł edytować zawartość elementu, wartość PRAWDA, ujęte w cudzysłów oddzielone znakiem równości, edycja umożliwia:

Atrybut=”wartość” contenteditable=”true”

Określa, do której strony element zostanie wyrównany, podczas gdy inne elementy będą go otaczać po innych stronach. Gdy wartość właściwości float wynosi none, element jest renderowany na stronie w normalny sposób, przy czym jedna linia zawijanego tekstu może znajdować się w tej samej linii, co sam element.

krótka informacja

Notacja

OpisPrzykład
<тип> Określa typ wartości.<размер>
A&BWartości muszą być wyprowadzane w określonej kolejności.<размер> && <цвет>
| BWskazuje, że należy wybrać tylko jedną z sugerowanych wartości (A lub B).normalne | kapitaliki
|| BKażdej wartości można używać samodzielnie lub w połączeniu z innymi w dowolnej kolejności.szerokość || liczyć
Grupuje wartości.[przytnij || przechodzić]
* Powtórz zero lub więcej razy.[,<время>]*
+ Powtórz jeden lub więcej razy.<число>+
? Określony typ, słowo lub grupa jest opcjonalna.wstawka?
(A, B)Powtórz co najmniej A, ale nie więcej niż B razy.<радиус>{1,4}
# Powtórz jeden lub więcej razy, oddzielając je przecinkami.<время>#
×

Wartości

do lewej Wyrównuje element do lewej, a wszystkie inne elementy, takie jak tekst, otaczają go do prawej. prawo Wyrównuje element do prawej strony, a wszystkie pozostałe elementy otaczają go w lewo. none Zawijanie elementów nie jest ustawione.

Piaskownica

Kubuś Puchatek nie miał nigdy nic przeciwko odrobinie poczęstunku, zwłaszcza o jedenastej rano, bo o tej porze śniadanie już dawno się skończyło, a obiad nawet nie myślał o rozpoczęciu. I oczywiście był strasznie szczęśliwy, widząc, że Królik wyjął kubki i talerze.

img ( float: brak; )

Przykład

platforma

Behawioryzm, choć może się to wydawać paradoksalne, oświetla wysublimowany bodziec, na przykład Richard Bandler wykorzystał zmianę submodalności do budowy efektywnych stanów.



Wynik tego przykładu pokazano na ryc. 1.

Ryż. 1. Korzystanie z właściwości float

Model obiektowy

Obiekt.style.cssFloat

Notatka

W przeglądarce Internet Explorer 6 występuje błąd polegający na podwajaniu lewej lub prawej wartości dopełnienia dla elementów pływających zagnieżdżonych w elementach nadrzędnych. Wyściółka przylegająca do boku elementu nadrzędnego jest podwojona. Problem zwykle rozwiązuje się dodając display: inline do elementu pływającego. Ta przeglądarka dodaje również dopełnienie 3px (tzw. „błąd trzech pikseli”) w kierunku określonym przez wartość zmiennoprzecinkową.

Specyfikacja

Każda specyfikacja przechodzi przez kilka etapów zatwierdzania.

  • Zalecenie (Zalecenie) – specyfikacja jest zatwierdzona przez W3C i zalecana jako standard.
  • Rekomendacja kandydata ( Możliwa rekomendacja) - grupa odpowiedzialna za standard jest usatysfakcjonowana tym, że spełnia swoje cele, ale wdrożenie standardu wymaga wsparcia społeczności programistów.
  • Proponowane zalecenie ( Sugerowana rekomendacja) - na tym etapie dokument jest przekazywany Radzie Doradczej W3C do ostatecznego zatwierdzenia.
  • Wersja robocza — bardziej dojrzała wersja robocza po dyskusji i poprawkach do przeglądu społeczności.
  • Szkic redaktora ( Projekt redakcyjny) jest wersją roboczą normy po wprowadzeniu zmian przez redaktorów projektu.
  • projekt ( Projekt specyfikacji) to pierwsza wersja robocza standardu.
×
W górę