ujuki piirid. Ujuv ja selge on plokipaigutuse ujuvate elementide CSS-i omadused. Kuidas Flexbox töötab

Igal atribuudil, välja arvatud tõeväärtused, on väärtus, mis on üks järgmistest tüüpidest: märksõna, string, aadress, arv, protsent, keelekood. Need pole kõik tüübid, kuid kõige levinumad.

Märksõna

Mõnel atribuudil on reserveeritud väärtused, mida nimetatakse "märksõnadeks". Näiteks elemendi tüübi atribuudi väärtus määrab vormielemendi tüübi. Üksuse all loob nupu.

Märksõnad kuuluvad spetsifikatsiooni alla, nende väärtuste loetelu on piiratud ja seda ei saa suvaliselt muuta.

Liin

String on tekst, mis on ümbritsetud kahe- või üksikjutumärkidega.

Jutumärk määrab stringi alguse ja lõpu, seega ei saa stringi sisse samu jutumärke lisada. Näiteks järgmisel real on kasutatud vale jutumärkide kombinatsiooni.

Sisemiste jutumärkidega stringi korrektseks kirjutamiseks on mitu võimalust.

1. Sisemise jutumärgi vältimine nii - \". Sel juhul ei taju brauser seda enam jutumärgina, vaid seda peetakse märgiks.

2. Kasutage ühe- ja topeltjutumärkide kombinatsiooni.

Siin on pealkirja atribuudi string ühekordsete jutumärkidega, nii et saame turvaliselt kirjutada topeltjutumärgi sisse.

Kõik see toimib samamoodi ka üksikute jutumärkide puhul.

Aadress

Aadress on tee dokumendile, näiteks graafilisele failile. Aadressi on vaja juhtudel, kui luuakse link saidile, teisele veebilehele või laaditakse alla konkreetne fail. Näiteks elemendis aadressi kasutatakse atribuudi src väärtusena, see määrab pildifaili tee.

Eristage absoluutseid ja suhtelisi aadresse.

Absoluutsed aadressid

Sellised aadressid töötavad igal pool ja igal pool, olenemata selle saidi või veebilehe nimest, kus aadress on antud, ja algavad alati andmeedastusprotokolliga. Veebilehtede puhul on selleks tavaliselt HTTP (HyperText Transfer Protocol), nii et absoluutaadressid algavad märksõnaga http://. Näide 1 näitab linki, mis kasutab absoluutset aadressi.

Näide 1: Absoluutse aadressi kasutamine lingis

Link

Google



Lisaks HTTP-protokollile on olemas ka turvaline HTTPS-protokoll. Alati pole selge, millist protokolli saidil kasutatakse, seega võib selle lingi aadressist üldse välja jätta. Sel juhul kirjutatakse aadress järgmiselt:

Google

Absoluutseid aadresse kasutatakse peamiselt teisele võrguressursile osutamiseks ja harva kasutatakse sisemiste linkide jaoks.

Suhtelised aadressid

Suhtelised aadressid määratakse saidi juurtest või praegusest dokumendist. Näiteks kood tähendab graafilise faili pic.png allalaadimist, mis asub veebilehe endaga samas kaustas. Vaatame mõnda näidet sellistest aadressidest.

/
Aadress osutab tavaliselt failile index.html, mis asub saidi juurtes. Kui faili index.html pole, näitab brauser tavaliselt selles kataloogis olevate failide loendit. Faili nimi ei pea olema index.html, seda parameetrit muudetakse läbi veebiserveri seadete – see on programmi nimi, mis analüüsib brauserist tulevaid päringuid ja saadab sellele kasutajale näidatud dokumendid.

/images/pic.png
Kriips (/) aadressi ees näitab, et adresseerimine algab saidi juurtest. Link viib pic.png faili, mis asub piltide kaustas. Ja see omakorda asub saidi juurtes.

../help/me.html
Nime ees olevad kaks punkti käsivad brauseril tõusta saidikaustade loendis ühe taseme võrra kõrgemale ja seal "otsida" abikaustas faili nimega me.html.

manual/info.html
Kui kausta nime ees ei ole lisamärke, näiteks punkte või sidekriipse, siis asub kaust praeguses kaustas ja info.html fail on selles juba olemas.

Saidi juurkohaga seotud URL-id, nagu /demo/, töötavad ainult veebiserveri kontrolli all ega ole kohalikus arvutis rakendatavad.

Lingid

Vaata minu fotot!

Kuidas teha sama fotot?



Mõnikord leiate aadresse kujul ./file/doc.html. Punkt ees tähendab, et pöördloendus pärineb praegusest kaustast. Selline kirje on üleliigne ja seda saab lühendada failiks/doc.html.

Numbrid

Numbrid koosnevad numbritest 0 kuni 9; negatiivsete arvude puhul pannakse vajadusel ette miinusmärk (-45). Näide 3 näitab numbrite kasutamist atribuudi väärtustena.

Näide 3: Numbrite kasutamine

Numbrid

Vee temperatuur

Madal Tavaline kuum Keev vesi

Lisaks täisarvudele on lubatud kasutada kümnendmurde, samas kui täisarv ja murdosa eraldatakse üksteisest punktiga - 36,6, nagu on näidatud näites 4.

Näide 4. Murdarvud

sisend, maksimaalne atribuut

Sisestage oma temperatuur kraadides:



Huvi

Protsendi märkimine võimaldab siduda lähteelemendi suurusega ja määrata selle suhtes suuruse. Oletame, et meil on järgmine kood:

Element asub sees

Seega element

saab lapsevanemaks . Tõsi on ka vastupidi – element on laps

Sellest lähtuvalt arvutatakse sel juhul pildi laius protsentides emalõigust, mis vaikimisi hõivab kogu akna laiuse vaba ruumi.

Brauser saab aru, et me räägime protsentidest, kui arvu järele on lisatud sümbol %, näiteks: width="40%" .

Näites 5 on toodud veebilehe kood, milles on näidatud pildi laius protsentides.

Näide 5. Pildi mõõtmed protsentides

Pilt



Selle näite tulemus on näidatud joonisel fig. 1. Pildi laiuseks on seatud 100%, nii et see võtab enda alla kogu brauseriakna laiuse. Kõrgust ei määrata ja brauser arvutab selle automaatselt.

Riis. 1. Pildi suurus protsentides

Protsendi märkimise eeliseks on see, et pildi suurus muutub koos brauseriakna laiusega, mitte ei jää staatiliseks. Puuduste hulka kuulub pildikvaliteedi halvenemine, kui see on tugevalt venitatud.

Keelekood

Elame globaliseerumise ajastul, mil veebisaidid sisaldavad tekste erinevates keeltes. Näidata otsingumootorid, millises keeles tekst on kirjutatud ja määrake oma seaded erinevaid keeli(näiteks tsitaatide tüübid) ja koodina näidatakse teksti keel. Keele määramiseks kasutatakse atribuuti lang (näide 6).

Näide 6: atribuudi lang kasutamine

keel

Fraas prantsuse keeles

Je n "ai pas mange depuis kuus päeva



Selles näites on kogu leht seatud venekeelseks ja atribuudi lang väärtus on ru . Näitamaks, et keel kehtib kogu lehe kohta, lisatakse elemendile atribuut . Prantsuse teksti puhul lisatakse elemendile atribuut lang väärtusega fr

Atribuudi lang kehtivad väärtused leiate sellelt lehelt.

Kirjeldus

Määrab, millisele küljele element joondub, kui teised elemendid ümbritsevad seda teistel külgedel. Kui float-atribuudi väärtus on none , renderdatakse element lehel tavalisel viisil, võimaldades samal ajal olla ühel reas ümbristeksti elemendi endaga samal real.

Süntaks

ujuk: vasak | paremal | mitte ühtegi | pärida

Väärtused

vasak Joondab elemendi vasakule ja kõik muud elemendid, näiteks tekst, kerivad selle ümber paremale. right Joondab elemendi paremale ja kõik muud elemendid kerivad selle ümber vasakule. none Elemendi mähis pole määratud. inherit Pärib vanema väärtuse.

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

ujuk

Lorem ipsum dolor sit amet, consectetuer adipiscing eliit, 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 falisi nulla zzril delenit au gue felisit.


Selle näite tulemus on näidatud joonisel fig. 1.

Riis. 1. Ujukomaduse kasutamine

Objektimudel

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

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

Brauserid

Internet Explorer 6-s on viga, mis on seotud vasaku või parema polsterduse väärtuse kahekordistamisega emaelementidesse pesastatud ujuvate elementide jaoks. Vanema küljega külgnev polster on kahekordistunud. Tavaliselt lahendatakse probleem, lisades ujuvale elemendile display: inline. See brauser lisab ka 3-pikslise polstri (nn "kolme piksli viga") ujuva väärtusega määratud suunas.

Internet Explorer kuni versioonini 7.0 ei toeta pärimisväärtust.

Pikk saaga "ujuva" vara kohta artikli kirjutamisest on läbi. Kuigi see võttis palju aega, arvan, et mul õnnestus selle võimsa ja pisut kummalise omaduse kõikvõimalikud käitumisviisid võimalikult selgelt koondada ühte ühisesse süsteemi.

Lisaks on selles artiklis rekordarv illustratsioone kogu "Õpiku" seas :-)

Atribuudi "float" saatus CSS-is on veidi sarnane HTML-i märgendi "tabel" saatusega: kumbki ei olnud mõeldud veergude loomiseks ja üldiselt elementide paigutamiseks. Positsioneerimismehhanismi teatud puuduste tõttu kasutatakse selleks aga laialdaselt ujukke. Ja see, et see leiutati teisele, avaldub sageli mitmesuguste mitteilmsete mõjudena. Enne nende näitamist räägin siiski teile, kuidas float on Saab taotleda paigutust.

Kohe alguses - väike märkus terminite kohta. Selle pilli kohta pole vene keeles teadaolevat terminit (vähemalt veel mitte). Seetõttu eelistan ma selle kirjutada algses kirjaviisis - "ujuda". See kõlab umbes nagu "float" (sa ei pea oma põsesarnasid murdma hääldusega "ujumine"). Samas palun kohe andeks anda sellised vabadused nagu "ujuta" seda, "ujuta" tibi jne. :-)

Toimimispõhimõte

Nagu positsioneerimist, kasutatakse ujukit kastide liigutamiseks. Kuid erinevalt positsioneerimisest, mis võib kaste peaaegu meelevaldselt liigutada, saab ujuk vaid liigutada elementi voolu mõlemale poole, paremale või vasakule.

Samal ajal omandavad kast ise ja seda voos jälgijad huvitava käitumise:

  1. Float" Kast hõljub horisontaalselt ja kleepub oma vanema ühele küljele.
  2. Float" mutriga kaetud kasti ei jaotata enam kogu emakonteineri kasti laiusele (nagu see juhtub voos olevate plokkidega). Kui selle vaba külg pole ülemelemendile surutud, ilmub vaba ruum.
  3. teda järgides blokk kastid tõmmatakse üles ja asuvad oma kohale, nagu poleks ujuki kasti ojas.
  4. Väiketähtedegaüles liikunud plokkide sees olevad karbid hakkavad ujuki "kasti ümber voolama vabast küljest.

Tahan veel kord rõhutada asja, mis kohe silma ei paista: ujukile järgneva ploki kast ise roomab selle alla ja võtab enda alla kogu voolu laiuse, kuid selle ploki sees olev tekst nihkub küljele ja keerdub ümber ujuk.

Edasi on huvitav, kuidas käituvad üksteise järel ühes suunas liikuvad float "kastid. Sel juhul üritab järgmine kast mahtuda eelmise küljele, selle vabale küljele. Ja ainult siis, kui seda pole piisavalt ruumi, siis liigub allapoole ja proovib juba sinna ära mahtuda.

On veel üks väike tehniline aspekt, mis pole kogu "mehaanika" mõistmiseks vajalik. Ujutada saab nii plokikaste kui ka seesolevaid. Samas muutuvad tekstisisesed kastid kohe automaatselt plokkkastideks ehk siis displei: block; for float kirjutamine pole vajalik.

Ujuki kahest kirjeldatud funktsioonist - servale vajutamine ja üksteise külge dokkimine - järgneb nende kaks peamist rakendust paigutuses:

  • lehe jagamine veergudeks
  • horisontaalsed menüüd

kõlarid

Veerud on siis, kui tekstiplokid on kõrvuti ja sama kõrgusega.

Kaalun kõiki veergude paigutusi järgmisel lihtsal kahe plokiga HTML-koodil:

...


Olgu kohe öeldud, et veergude tegemine laiusesse venivas konteineris on keerulisem kui antud laiusega. On kaks põhimõtteliselt erinevat lähenemisviisi, mis sobivad erinevatel juhtudel.

Proportsionaalne laius

Kui soovite, et veergude laius muutuks lehe laiuse muutumisel proportsionaalselt, on lähenemine järgmine:

#sisu ( ujuv:parem; laius:70%; ) #külgriba ( hõljumine:vasak; laius:30%; )

See tähendab, et kaks ujukiplokki on kõrvuti eri suundades ja nende laius on jagatud soovitud protsendiga. See meetod muudab veergude vahetamise lihtsaks - lihtsalt parema ja vasaku väärtusi muutes.

Ainult ühe veeru venitamine

Kui peate muutma ainult põhiveeru laiust, siis eelmine meetod ei sobi. Fakt on see, et CSS-is on see kahjuks võimatu otse sõnastada selline asi nagu "kõik saadaolevad laiused miinus konkreetne arv".

Nüüd pöördume ühe eelmiste artiklite juurde voos olevate plokkide kohta, kus mainisin ühte nende kasulikku funktsiooni, mis mahub automaatselt emakasti laiusesse. See tähendab, et kui edasivoolu plokile antakse näiteks vasak veeris, siis selle laius väheneb vastavalt. Ja just seda käitumist tahtsime ühest veerust saavutada.

Nii et soovitud efekti saavutamiseks anname põhiplokile vasakpoolse veerise, nii et see kahaneb paremale ja külgriba ujub oma kohale:

#külgriba ( float:left; laius:200px; ) #content (veeris-vasak:200px; )

Kuid teisel meetodil on üks väga tõsine puudus. Pange tähele, et algses HTML-is läheb "külgriba" plokk enne blokeerida "sisu" põhisisuga. Pole vaja arvata, et see tehti kogemata :-). Seda tehti meelega, sest muidu see päris teine ​​meetod veerise peal oleva veerukattega ei töötaks.

Nagu artikli alguses kirjutasin, liiguvad ujukid ainult küljele ja teevad ruumi järgmistele plokkidele, mis üles liiguvad.Seetõttu on oluline, et "küljeriba" oleks juba üleval ja siis hakkab põhiplokk sõitma. kuni selleni. Kui "küljeriba" tuleb pärast põhiplokki, siis jääb see madalamaks ja see ei näe välja nagu veerud.

See on tõesti halb, sest see õõnestab üht CSS-i põhiideed: stiili eraldamine sisust. Selgus, et me tahtsime muuta ainult kujundust ja kui plokid asuvad "valesti", siis peame minema ka HTML-i mallidesse. Lisaks võib konstruktsiooni seisukohalt olla mõjuvaid põhjusi paigutada plokke ühtpidi ja mitte teisiti. Näiteks selleks, et kasutaja saaks alustada lehe põhiteksti lugemist, ootamata navigatsiooni laadimist.

fikseeritud laius

Asjad on dramaatiliselt lihtsustatud, kui veerud mahuvad fikseeritud laiusega konteinerisse. Sel juhul on kõige parem kasutada esimest meetodit (kõik veerud hõljuda) ja laiust saab juba määrata mitte ainult protsentides, vaid mis iganes soovite, kuna seda saab täpselt arvutada.

Kõlari kõrgus

Jällegi polnud kaugeltki juhuslik, et ma piltidel olevate klotside alumise osa "ära lõikasin" :-). Muidu ei näeks need üldse veergudena välja, sest nagu näha, kui rakendada minu antud CSS-i fragmente ja värvida veerud erinevate värvidega, siis nende kõrgus osutub erinevaks. See sõltub nende plokkide sisu hulgast.

Sellest koledast efektist saab mööda hiilida mitmel viisil.

Esimene meetod kannab nime "Faux veerud", mis avaldati 2004. aasta septembris autoriteetses veebiajakirjas A List Apart ja on sellest ajast peale olnud väga populaarne. Soovitan kõigil lugeda kas originaali või venekeelset tõlget. Kui sul aga pole täna tuju klõpsata, siis siin on lühikokkuvõte selle olemusest.

Selle asemel, et veergudele endile tausta määrata, jäetakse need läbipaistvaks, kuid nende konteinerile määratakse taustapilt, mis on kogu konteineri laiune ja kordub vertikaalselt. Selle pildi osad, mis asuvad erinevate veergude all, on sisse maalitud erinevad värvid ja allapoole itereerides annab see soovitud visuaalse efekti.

Valede veergude puhul on suurepärane see, et te ei pea piirduma taustapildi ühevärviliste värvidega. Sellele saab näiteks veergude vahele joonistada varjuefekti, korrates taustaks horisontaalseid triipe, äärtesse ornament.

Selle meetodi puuduseks on see, et kuna taustapildil on ainult üks suurus, ei saa seda kasutada veergude proportsionaalseks venitamiseks, kuna pilt ei veni. Kuid juhul, kui üks veergudest on laiusega fikseeritud, saab tausta reguleerida (seda juhtumit, muide, "Faux veergudes" ei käsitleta).

Asi on selles, et taustpilt asetatakse ainult selle veeru alla, mille laius on teada. Ülejäänud ruumi hõivab taust värvi konteiner, mitte pilt.

Võtame oma näite ja teeme parempoolse veeru "külgriba" 200 piksli laiuseks ja laseme "sisu" venitada. "Külgriba" jaoks valmistame ette pildi mõõtmetega 200x1, näiteks ühtlase sinise tooniga. Ja "sisu" all võtame kollaka.

Stiilides näeb see välja selline:

#külgriba ( float:right; laius: 200px; ) #content ( margin-right: 200px; ) body ( background:url(bg.png) #FFD parem ülemine kordus-y; )

Ainus konteineri (keha) reegel määrab kogu tausta käitumise:

  • määrake pildi URL (bg.png)
  • taustavärv kohtades, kus seda ei ole (#FFD)
  • paremasse serva surutud pildi asukoht (paremal ülaosas)
  • korda pilti alla (kordus-y)

IN tõeline näide CSS-il oli ka paar reeglit tähtede värvi ja ääristega tegelemise kohta, mis pole nüüd olulised.

Teine viis veergude kõrguse võrdsustamiseks oli hiljuti kirjeldatud ja oma mugavuse tõttu juba hästi tuntud.

Selle mõte on peita veergude ebaühtlased kõrgused, pikendades neid uskumatult allapoole, nii et nende otsad jäävad lehe tegelikust sisust välja. Nad saavutavad selle, tehes kõigepealt veergudele väga suure taande (polsterduse), mis värvitakse üle taustavärviga. Ja et ülejäänud sisu seal liiga kaugele ei liiguks, määratakse veerud negatiivne sama suurusega ääris (veeris):

Kummaline number tuleneb sellest, et see on maksimum, mida Safari brauser lubab. Tegelikult pole see nii imelik. Kõigile, keda huvitab, on see maksimaalne märgiga täisarv, kui seda esindab 16 bitti.

Selle tulemusena on kõik veergudele järgnev nihkunud ja asub otse pikima veergude sisu all ning veerud pikendatakse allapoole. Üks asi on kole – pikkade veergude tõttu muutub leht ise sama pikaks. Selle vastu võitlemiseks peate nende konteinerile määrama atribuudi overflow:hidden, mis sunnib konteinerit lihtsalt ära lõikama ja mitte näitama, mis ületab selle piire.

Minu eeskujul, mille ma alguses võtsin, on aga üks tõrge. Seal asuvad veerud otse kehas. Ja kui keha on seatud overflow:hidden , tühistavad brauserid lehe kerimise täielikult. Isegi kui tegelik sisu on akna kohal. Seetõttu tuleb veerud ümbritseda mõne muu elemendiga, näiteks div . Kuid ausalt öeldes tuleb öelda, et praktikas on veerud juba millegi sisse mässitud.

Varitsus

Kuhu ilma selleta teha :-). Nagu ma alguses mitte eriti läbipaistvalt vihjasin, siis kuna ujukid pole veergude loomise vahendina leiutatud, tuleb see kindlasti välja midagi inetut ja jääb kummitama analgini tarbimise suurenemist (mõned eelistavad tempalgiini või paratsetamooli) .

Ja "ära" - selle kõige otsesemas mõttes. Liigutame oma "palja" näite tegelikkusele veidi lähemale, lisades veergude kohale päise ja alloleva tekstiga ploki.

...


Lihtsuse huvides valime lihtsa, fikseeritud laiusega sammaskujulise kujunduse. Teeme päise ja alumise ploki valgete tähtedega siniseks, põhisisu on valge ja lisaveerg on samuti sinine, kuid veidi heledam. Veergude värvid määrame "Faux veerud" meetodil.

/* Veeru paigutus */ body (laius:600px; veeris:0 auto background:url(bg.png) parem ülemine kordus-y; ) #header, #footer ( background:#238; color:white; )

Jätsin tajumise hõlbustamiseks taas kõik taanded ja fondid välja. Lisage testtekst ja käivitage:

Hmm... No veerud üldiselt on isegi näha! Ära hoia end tagasi! Kuid mida iganes öelda, kõik ei näe välja nii, nagu plaanitud ja võib isegi öelda, et kõik on muutunud omamoodi lillede ja kirjade segaduseks.

Et mõista, miks see juhtub, peame meeles pidama ujuki toimimise kirjeldust. Nimelt, et ujukitele järgnevad klotsid lõpetavad nende ujukite märkamise ja tõmmatakse üles. Veelgi enam, konteiner ise, milles ujukid asuvad, ei märka neid samuti ja ujukplokid kukuvad läbi konteineri põhja, kui see varem lõpeb.

Vaatame nüüd oma koodi. Nii float "sisu" kui ka "külgriba" plokid on "peamise" ploki sees. Ja "peamises" pole midagi muud. Ja kuna tal pole enam midagi sisaldada, siis kukub selle kõrgus nulli! Seetõttu ei näe. mis tahes valge pildil on "sisu" taust ega helesinine "külgriba" taust, kuna need värvid on määratud "peamiseks" taustaks.

Järgmine - "jalus". Ta, järgides kõiki sama reeglit, ei näe ka ujukit "mutter blokeerib ja tõmmatakse otse päise enda juurde (kuna "peamine" on null kõrgus). Kuid "jaluses" on tekst. See tekst peaks juba olema keerake ümber ujuki "s: paremal "sisu" ja vasakul "külgriba". Veergude vahele ei jää tühikut, seega saab tekst alata ainult ühe esimesena lõppeva veeru alt. Seal ta on. Nii tõmbab "jalus" pealkirja all üles ja jätkab allapoole, kuni kogu selle tekst on kadunud. Ja kogu see sinine taust, mis pealkirja all on, on "jalus" ja nii ongi.

Miks selline keerukus

Kirjeldatud käitumine peaks tekitama hämmeldust. Miks oli vaja selliseid komplikatsioone välja mõelda: jagada ploki mõiste nii, et värvid ja raamid on peal ning tekst paigas? Aga see on muidugi mõistlik. See koos ääriste kokkuvarisemisega on katse panna CSS-kasti mudel lihtsa tekstivoo tingimustes normaalselt käituma. Selle nähtuse üksikasjaliku klassikalise seletuse annab seesama Eric Meyer artiklis "Containing Floats" (inglise keeles). Püüan sisu lühidalt edasi anda.

Kujutage ette tavalist lõikude voogu – tekstiplokke – ilma igasuguse positsioneerimiseta. Ühes lõigus on pilt, mida soovite liigutada näiteks vasakule, et tekst selle ümber voolaks. See saavutati varem HTML-is atribuudiga align="left", kuid HTML-ist stiilide stiilide muutmise vaimus, selle funktsiooni jaoks tulid nad lihtsalt välja float atribuudiga. See tähendab, et joonduse asemel määratakse sellele pildile float:left .

Laske nihutatud kujutisel olla rohkem kõrgust kui lõigu tekst. Kui ta venitab oma lõiku ja lükkab järgmise alguse madalamale, näeb see külgnevate lõikude suurenenud reavahe tõttu kole välja. Seetõttu langeb see läbi kõigi plokkide piiride, hoides nende vahel ilusaid taande ja tekst voolab selle ümber.

Lahendused

Seega on läbikukkumise käitumine arusaadav, kuid see on mugav positsioneerimata teksti jaoks ja üsna ebamugav paigutuse jaoks. Selle omaduse mõlemad ilmingud kõrvaldavad kaks lähenemisviisi: järgmiste kastide tõmbamine üles ja konteineri põhja kukkumine.

Plokkide ülestõmbamise välistamiseks on spetsiaalne omadus. See paneb elemendi allapoole liikuma, kuni selle küljele ei jää hõljukid. Lisaks saate juhtida, milliselt küljelt ei tohi ujukeid olla:

clear:left tagab, et vasakul ei oleks ujukeid clear:parem tagab, et paremal ei oleks ujukeid Clear:mõlemad tagavad, et mõlemal küljel pole ujukke

Seega, kui ütleme oma "jalusele":

#footer ( selge:mõlemad; )

Et sellest vasakul ja paremal ei oleks ujuki veerge, liigub see alla just seal, kus need mõlemad lõpevad.

Kuid see ei lahenda teist probleemi: need ujukid kukuvad läbi "peamise" ja kukuvad kokku, jättes sellele määratud veeru tausta nähtamatuks.

Saate konteinerit mingil viisil selgesõnaliselt paigutada. Niipalju kui ma spetsifikatsiooni loogikast aru saan, peetakse tõrkesiirde käitumist loogiliseks ainult lihtsas lõimes. Muudel juhtudel see lihtsalt segab. Ja nii see on, nagu oleme näinud. See tähendab, et piisab, kui määrata konteinerile näiteks asukoht: absoluutne või hõljuk: vasakule ja midagi ei kuku läbi, konteiner sisaldab täielikult nii teksti kui ka ujuke. Meie puhul (ja enamikul juhtudel viisil) on see lahendus üsna sobiv.

Teine huvitav viis on seotud ülevoolu omaduse kõrvalmõjuga. Iseenesest on see ette nähtud määrama, kuidas konteiner üle voolab, kui see ei mahuta oma sisu. Sellel on neli tähendust:

Nähtav sisu läheb üle serva ja on tavaliselt nähtav (see on vaikekäitumine) peidetud sisu lõigatakse väljastpoolt konteinerit ära ja pole seal mingil moel nähtav, kui sisu ületab konteineri, sellel on kerimisriba, mis võimaldab kerida sisu, kui mitte, siis kerimist ei kuvata nagu automaatne , ainult konteineril on alati kerimisriba, isegi kui sisu ei ületa seda

Nii et siin kõrvalmõju on see, et kui asetate konteinerile ülevoolu, välja arvatud tavaline nähtav , venib see ootamatult välja ja hõlmab selles olevaid ujukke, välistades kokkuvarisemise.

Millist ülevoolu kasutada? Kerimine kaob kohe – alati pole rippuvaid kerimisribasid ilmselgelt vaja. Alles jääb automaatne ja varjatud , mis erinevad ainult selle poolest, kas kerimisriba ilmub ületäitumisel või mitte. Kuid meil pole ülevoolu, vastupidi, selle omadusega sundisime konteinerit edasi venima, et see kataks kõik selle elemendid. Seetõttu võib kasutada mis tahes väärtust.

Üritan ebausklikult kasutada peidetud, et kerimisribad ei ilmuks, kui mõne tõrke tõttu peaks ootamatult ületäitumine tekkima.

Ülevoolulahendusel on üks tõrge, mis on seotud rakenduse Some Browser™ käitumisega. See töötab ainult siis, kui konteinerile on selgesõnaliselt määratud laius või kõrgus. Seetõttu on neid mõnikord ebamugav kasutada, kui vajate jäikade asemel automaatseid suurusi.

Lõpuks peame oma näite parandamiseks veergudega tegema järgmist:

#main (laius:100%; ületäitumine:peidetud; )

Muideks! Kui ma ei kasutaks veergude alla tausta joonistamiseks võltsveerge, vaid pikka polsterdamismeetodit, siis nõudis kasutage "main" jaoks overflow:hidden, mis lahendab ka läbikukkumise probleemi. Aga kuidas ma siis sellest räägiksin?

Kõlaritega on kõik... Aeg minna valama endale maitsvat teed (paljud eelistavad kohvi) ja lisada sellele mõni maitsev muffin, tehke paus, et kogu see segadus pähe ajada. Järgmiseks ootame väikest lisa - menüü kohta.

Menüü

Tuletan meelde, et kui mitu järjestikust plokki hõljuvad ühes suunas, siis iga järgmine proovib laieneda eelmise vabast küljest. Seda efekti kasutatakse laialdaselt saidi jaotiste loendite muutmiseks horisontaalseteks menüüdeks.

Võtame selle nimekirja:

  • Alusta
  • Kataloog
  • Korv
  • Viide

Et see näeks välja nagu menüü, peate hõljuma "kõik li vasakule, eemaldama nendest loendi atribuudid (taanded ja täpid) ning lisama taanded, tausta ja raami ilu jaoks:

/* paigutus */ ul, li ( float:left; list-style:none; margin:0; padding:0; ) /* vaade */ li ( padding:2px 10px; font:Bold Small Tahoma; background:#35C ; värv: valge; ääris: ühtlane 1px; äärise värv: # 46F # 238 # 238 # 46F; ) a ( värv: valge; teksti kaunistus: puudub; )

Pange tähele, et kõik paigutuse omadused on määratud nii ul- kui ka li-elementidele. See on mugav taandada ühele reeglile, sest:

  • float:left on vajalik loendi elementide jaoks, et need laieneksid horisontaalselt, ja loendi enda jaoks, et elemendid sellest läbi ei kukuks;
  • null marginaal ja täidis kõrvaldavad täidise, mida brauserid teevad loendite jaoks vaikimisi, kuid teevad seda väga erinevalt, nii et lihtsam on öelda "kõik on null", kui meeles pidada, mida millise elemendi jaoks eraldi panna.

Moraal

Ujukmehhanism on veel üks paigutustööriist koos absoluutse positsioneerimisega.

Need erinevad paremuse poole, võimaldades jätta elemendi voolu, mis on veeru paigutuse jaoks väga mugav.

Selle puuduseks on aga vähem paindlikkus, kuna elemente ei saa suvaliselt teisaldada ja selle kasutamise võimalus võib sõltuda HTML-i märgistuse elementide järjekorrast.

See artikkel on osa tsüklist, mida kirjutatakse tööpealkirja "Õpik" all. Soovitan lugeda ka teisi artikleid, mis leiate kategooriast "Õpik" ja kus need on nüüd kogutud vastupidises kronoloogilises järjekorras.

Oleme selle juba välja mõelnud. Saime teada, et neil on sisu. See pole aga veel kõik. Siltidel on ka atribuute, mis laiendavad nende võimalusi, ja atribuutidel on omakorda väärtused. Nende abiga saate määrata elemendi parameetreid, määrata disaini stiili. Näiteks silt

sa märkisid lõigu. Aga kuidas seda õigesti joondada? Selleks vajate teatud atribuuti sobiva väärtusega. Nii nagu mõnel märgendil pole paari, nii saab ka mõnda atribuuti kasutada ilma väärtusteta.

Kuidas atribuute kirjutada?

Atribuudid on reserveeritud sõnad (nagu sildid, ainult ilma nurksulgudeta), kuid nende väärtused võivad olla erinevad. Nii nagu sildid, soovitatakse ka hinnatud atribuute kirjutada väiketähtedega, kuigi brausereid üldiselt ei huvita – see on lihtsalt rusikareegel. head kombed: vene keeles EI OLE AKTSEPTEERITUD KA KIRJUTAMINE SULETUD CAPS LOCK-iga. Miks on HTML halvem?

Atribuutidega väärtused kirjutatakse järgmises vormingus:

atribuut=”value” lang=”et”

Atribuudid tuleks alati kirjutada avasildi sisse, pärast reserveeritud sõna.

Lõik

Tavaliselt on ühe sildi jaoks saadaval mitu atribuuti. Pole tähtis, millises järjekorras need on loetletud.

Üldised atribuudid

Igal HTML-i märgendil on oma atribuutide komplekt. Mõned atribuudid võivad olla saadaval mitmel sildil, samas kui teised võivad töötada ainult ühega. Samuti on rühm universaalseid (globaalseid) atribuute, mida saab kasutada mis tahes sildiga. Vaatame lühidalt selle kategooria atribuute.

  • juurdepääsuvõti võimaldab määrata kindlale leheobjektile juurdepääsuks kiirklahvi. Näiteks saate seda muuta klaviatuuri otsetee abil Alt+1 kasutaja klõpsas konkreetsel lingil. Nii arendage välja klaviatuuriga navigeerimissüsteem.

Atribuudi väärtus võib olla numbrid 0-9 või ladina tähestiku tähed:

Link avatakse, vajutades kiirklahvi ühega

  • klass võimaldab siduda sildi eelmääratletud CSS-stiiliga. Atribuudi kasutamine võimaldab koodi oluliselt vähendada, sest sama CSS-i ploki sisendi kordamise asemel saab lihtsalt sisestada sellele vastava klassi nime.
  • Kasutades rahulolev saate lubada kasutajal redigeerida mis tahes HTML-lehe elementi: kustutada, sisestada, muuta teksti. Sama atribuut võimaldab muuta ja keelata. Väärtusi on ainult kaks: tõsi- luba redigeerida vale- keelama.
  • Atribuudiga kontekstimenüü saate anda mis tahes dokumendi elemendile omal valikul ainulaadseid kontekstimenüü üksusi. Menüü ise luuakse sildis ja kontekstimenüü atribuudile antakse selle ID.
  • rež määrab teksti suuna: vasakult paremale (ltr) või paremalt vasakule (rtl).
  • lohistatav võimaldab keelata (vale) või lubada (tõsi) kasutaja lohistada selle atribuudiga leheelementi.
  • langustsoonütleb brauserile, mida teha lohistatud elemendiga: copy(value kopeerida), liiguta ( liigutada) või looge sellele link (link).
  • peidetud- atribuut, mis võimaldab peita elemendi sisu nii, et seda brauseris ei kuvata. Kui atribuut on seatud väärtusele Väär, kuvatakse objekt, tõene – peidetud.
  • id määrab elemendi identifikaatori - omamoodi nime, mida on vaja nii objekti stiili lihtsaks muutmiseks kui ka selleks, et skriptid saaksid sellele juurde pääseda. Atribuudi väärtuseks saab selle nimi. See peab algama ladina tähega ja võib sisaldada numbreid, sama ladina tähestiku tähti (suur ja väike) ning sidekriipse (-) ja allkriipsud (_) . Venekeelsed tähed ei tohi sisaldada.
  • keel aitab brauseril aru saada keelest, milles sisu on kirjutatud, ja selle vastavalt stiilida (näiteks võib keeltes kasutada erinevaid jutumärke). Väärtused on keelekoodid (vene - et, Inglise - et ja nii edasi.).
  • Õigekirja kontroll sisaldab (tõsi) või keelab (vale)Õigekirja kontroll. Eriti kasulik on atribuuti kasutada vormivälja siltides, kuhu kasutaja teksti sisestab.
  • stiilis võimaldab CSS-koodi abil määrata elemendi välimust.
  • tabindex võimaldab määrata, mitu korda peab kasutaja vajutama klahvi Tab, et selle atribuudiga objekt fookuse saaks. Klõpsude arv määrab atribuudi väärtuse – positiivne täisarv.
  • pealkiri- tööriistavihje, mis ilmub, kui liigutate hiirekursori elemendi kohal ja jätate selle mõneks ajaks liikumatuks. Väärtuses olev string on vihje.
  • tõlkida lubab (jah) või keelab (ei) sildi sisu tõlge.
  • joondada määrab elemendi joonduse. Näiteks saab seda kasutada teksti vasakule joondamiseks (väärtus vasakule), paremal pool ( õige), keskel (Keskus) või laiuse järgi (põhjendada). Piltide jaoks (silt ) on saadaval ka rea ​​kõrgeima elemendi ülaosaga joondamiseks ( üleval), piki alumist piiri (all), ja keskmine väärtus muudab pildi keskmise joone vastava joone lähtejoonega.

Tasub meeles pidada, et atribuudi kasutamine joondada pole soovitatav ja teksti joondamine on CSS-iga parem.

Näide atribuutide kasutamisest

Näiteks võtke HTML-koodi rida:

Seda teksti saab redigeerida

Terve rida loob tekstilõigu, mida kasutaja saab brauseris redigeerida.

Analüüsime stringi iga elementi.

- lõiku salvestava konteineri algussilt.

- sulgev silt.

Tegelaste vahel > Ja < asuv tekst Seda teksti saab redigeerida. See on silt väljaspool silte (nende vahel), mis tähendab, et see on lehe avanud kasutajale nähtav. Brauser käsitleb seda lihttekstina, mis tuleb ekraanil kuvada.

rahulolev=”tõsi” – see on atribuut ja selle väärtus. Pea meeles, kuidas koolis: x=3. Samamoodi siin: rahulolev=”tõsi". Atribuut rahulolev määrab, kas kasutaja saab muuta elemendi sisu, väärtust tõsi, kirjutatud võrdusmärgiga eraldatud jutumärkides, võimaldab toimetamine:

Atribuut=”value” contenteditable=”true”

Määrab, millisele küljele element joondub, kui teised elemendid ümbritsevad seda teistel külgedel. Kui float-atribuudi väärtus on none , renderdatakse element lehel tavalisel viisil, võimaldades samal ajal olla ühel reas ümbristeksti elemendi endaga samal real.

lühike teave

Märge

KirjeldusNäide
<тип> Määrab väärtuse tüübi.<размер>
A&&BVäärtused tuleb väljastada määratud järjekorras.<размер> && <цвет>
A | BNäitab, et soovitatud väärtustest (A või B) tuleks valida ainult üks.normaalne | väiketähed
A || BIga väärtust saab kasutada eraldi või koos teistega mis tahes järjekorras.laius || loendama
Rühmade väärtused.[ saak || rist]
* Korrake null või rohkem korda.[,<время>]*
+ Korrake üks või mitu korda.<число>+
? Määratud tüüp, sõna või rühm on valikuline.sisend?
(A, B)Korda vähemalt A, kuid mitte rohkem kui B korda.<радиус>{1,4}
# Korrake üks või mitu korda, eraldades need komadega.<время>#
×

Väärtused

vasak Joondab elemendi vasakule ja kõik muud elemendid, näiteks tekst, kerivad selle ümber paremale. right Joondab elemendi paremale ja kõik muud elemendid kerivad selle ümber vasakule. none Elemendi mähis pole määratud.

Liivakast

Karupoeg Puhh ei tõrjunud alati väikest kosutust, eriti kella üheteistkümne ajal hommikul, sest selleks ajaks oli hommikusöök juba ammu lõppenud ja õhtusöök polnud isegi mõelnud alustada. Ja muidugi oli tal kohutavalt hea meel näha, et Jänes tassid ja taldrikud välja võttis.

img ( float: puudub ; )

Näide

ujuk

Biheiviorism, kui paradoksaalne see ka ei tunduks, valgustab sublimeeritud stiimulit, näiteks Richard Bandler kasutas submodaalsuste muutmist efektiivsete olekute loomiseks.



Selle näite tulemus on näidatud joonisel fig. 1.

Riis. 1. Ujukomaduse kasutamine

Objektimudel

Objekt.style.cssFloat

Märge

Internet Explorer 6-s on viga, mis on seotud vasaku või parema polsterduse väärtuse kahekordistamisega emaelementidesse pesastatud ujuvate elementide jaoks. Vanema küljega külgnev polster on kahekordistunud. Tavaliselt lahendatakse probleem, lisades ujuvale elemendile display: inline. See brauser lisab ka 3-pikslise polstri (nn "kolme piksli viga") ujuva väärtusega määratud suunas.

Spetsifikatsioon

Iga spetsifikatsioon läbib mitu kinnitamisetappi.

  • Soovitus (Recommendation) - spetsifikatsioon on W3C poolt heaks kiidetud ja soovitatav standardina.
  • Kandidaadi soovitus ( Võimalik soovitus) - standardi eest vastutav grupp on rahul, et see täidab oma eesmärke, kuid standardi rakendamiseks on vaja arenduskogukonna toetust.
  • Kavandatud soovitus ( Soovitatud soovitus) – selles etapis esitatakse dokument lõplikuks kinnitamiseks W3C nõuandekogule.
  • Tööprojekt – küpsem eelnõu pärast arutelu ja muudatusi kogukonna ülevaatamiseks.
  • Toimetaja mustand ( Toimetuse mustand) on standardi mustandversioon pärast seda, kui projekti toimetajad on teinud muudatusi.
  • mustand ( Spetsifikatsiooni kavand) on standardi esimene mustandversioon.
×
Üles