css probléma

Sok dolog, a css, eredetileg nem tervezték, például mint: többoszlopos, érzékeny web design, stb Ezért vált nyelv tele csapkod és hibák, mint valami ősi autó egy csomó kiterjesztések.

A legjobb esetben - együttműködik css nevezhető szórakoztató időtöltés. És ez annak köszönhető, hogy mit kell dolgoznunk. Mert, mivel úgy vélem, a generációs hatékony és cross-böngésző css stílusokat nem lehet és nem lesz elérhető a közeljövőben.

css probléma

Térjünk a lényegre, mert nem vagyok itt, mit adna a véleménye a css. És annak érdekében, hogy kezelni számos közös probléma a css, és a lehetséges megoldásokat.

Próbáltam, hogy választani néhány valóban nagyon gyakori:

  • Tisztító float`ov.
  • Hogyan nyerjünk a behúzás elemek közötti inline-block?
  • Megértése abszolút pozicionálás.
  • Amikor elhelyezzük az szélesség / magasság értékek olyan méretű egyenlő 100%? (2. rész)
  • Ez nem túl okos z-index. (2. rész)
  • Mi alvadási határokat (árrés összeomló)? (2. rész)

Tisztító float`ov.

Úgy tűnik számomra, hogy ez a leggyakoribb kérdés, CSS. Ő olyan régi, mint a világ, őszintén, én ezer százalékig biztos, hogy minden ember, aki valaha is írt css találkozott vele.

Egyszerű szavakkal leírható a következő: ha a belső elem tartalmaz egyetlen elemet úszóval, összeesik, mintha benne nincsenek gyermek elemei. Ez azt jelenti, sőt, az elemek egy úszó kiesnek a teljes áramlás.

css probléma

Számos módja van, hogy megoldja ezt a problémát. Korábban használt üres div stílus «egyértelmű: mind» alján a tartály. Aztán, mi váltotta le a címke óra, ami nem sokkal jobb.

Végül Nicolas Gallagher javasolt új float`ov tisztító utat anélkül, hogy megérintse a jelölő egyáltalán. Hosszas viták és vizsgálatok, megvan a szükséges minimális működése egy sor stílusok, így a legújabb verzióját:

Tulajdonképpen hazudtam, nem tart ez a legrövidebb. De ha szükség IE 6/7 támogatást, akkor hozzá kell adni a következő:

Dolgozni, akkor kell hozzá .clearfix osztály a projekt, majd alkalmazza azt elemei a jelölést. Ez a legegyszerűbb és legtisztább módja dolgozni float`ami.

Hogyan nyerjünk a behúzás elemek közötti inline-block?

Folytatjuk a végeredmény az elemek egy sorban, ezúttal nem az úszó, de inline-blokkok. display: inline-block hosszú alábecsülték, és mégis megértjük, hogyan működik és miért jó. Ma már egyre több front-end fejlesztők inkább használni inline-block helyett float`ov, ha van rá lehetősége.

A fő plusz inline-block az, hogy nem kell kaparni float`y és mi nem találkozunk más problémák merülhetnek fel, mivel álláspontja elemek használatával float`ov. Csak beállítás a display tulajdonság egy elem az inline-block értéke a hibrid vonal elem és a blokk. Lehet, hogy a méret, margók, de a szélessége alapértelmezés szerint ez függ a tartalom, hanem a teljes szélessége a szülő elem. Így vízszintesen vannak elrendezve, hanem függőlegesen.

Ön kérheti, „Mi a baj?”. És az a baj, hogy azok fele kisbetűs, és ezért behúzott egymástól egyenlő nagyságú helyet. A normál 16px betűméret, ez 4px. A legtöbb esetben, a behúzás mérete lehet kiszámítani 25% -a a betűméretet. Különben is, ez zavarja a normális elrendezése elemek. Vegyük például a méret a tartály 600px három elem belül mérete amely be van állítva, és 200px display tulajdonság: inline-blokk. Ha nem távolítja el a behúzás, akkor nem lesz képes, hogy azokat egy vonal (200 * 3 + 4 * 2 = 608).

Számos módja van, hogyan kell eltávolítani a szükségtelen számunkra helyet, mindegyiknek megvan a maga előnye és hátránya. Hogy őszinte legyek, amíg nincs tökéletes megoldás. Nézzük meg egymás után!

Markup szint: eltávolítja terek

Minden tesztjeink az alábbi jelölést.

Amint azt már említettük, a gyermek elemek nem lesz egy egyenes vonal, mert van egy további szóköz karakter között mindegyik (ebben az esetben egy új sort és 4 férőhely). Az első módszer a probléma megoldására - teljesen eltávolítani a hiányosságok.

Úgy működik, de nem kényelmes elolvasása kódot. Bár tudjuk átszervezni mi kis elemeket, amely megőrzi az olvasást:

És hogy igazán hűvös, megteheti:

Igen - ez működik! Persze én nem ajánlom ezt a megközelítést, mert nem intuitív, és teszi csúnya kódot. Nézzük jobb, próbálja meg, semmi mást.

Igen, sokkal jobb! A kód olvasni és működtetni. Igen, ez a módszer egyáltalán nem ismerős első pillantásra, de ez nem olyan nehéz szokni. Magam ezt a módszert, amikor el kell távolítani a terek közötti elemek inline-block.

Persze, valaki azt fogja mondani, hogy ez nem egy ideális megoldás, mivel ez működik az elrendezés oldalon, és a problémát meg kell oldani szintjén css. Valóban. A legtöbben ténylegesen használni css megoldásokat.

Szint css: távolság a szimbólumok

levél-térköz tulajdonság lehet beállítani a behúzás karakterek között. Az elképzelés az, hogy a francia úgy, hogy neviliroval bemélyedés a két elem között, akkor vissza kell állítania a levél-térköz a gyerekek, akik a bennük lévő szöveget nézd normális.

Szint css: negatív különbözet

Egy másik megközelítés a probléma megoldásának, nagyon hasonlít az előző fájlt, de a használata negatív különbözet. Fő hátránya, hogy nem működik az IE 6/7. Plusz, el kell távolítani a behúzás az első elem, hogy ők is emelkedtek belül a tartályba.

Ha nem kell IE 6/7 támogatást, úgy vélem, hogy ez egy nagyon jó megoldás.

Szint css: font-size

És végül, akkor állítsa be a betűméretet, a szülői egység 0, hogy lenne a különbség egyenlő 0px, majd állítsa vissza a betűméretet a gyermekek számára.

Ebben a határozatban, van néhány a problémák és korlátozások:

  • Nem lehet visszaállítani a betűtípust a gyermek elemek felhasználásával em a betűméret
  • Terek nem távolítja el az Android készülékek Jellybean
  • Szöveget a @ font-face elveszíthetik simítása Safari 5
  • Egyes böngészők figyelmen kívül hagyja a font-size: 0 Chrome például kínai változata, amely esetben a font-size visszaáll 12px

Megértése abszolút pozicionálás.

Positioning elemek - egy bonyolult folyamat, és mindig is az volt. Helymeghatározás, a kezdők, mivel nagy nehezen. Gyakran (mis) a pozíció tulajdonság. Ez a tulajdonság meghatározza, hogy milyen az elem lehet mozgatni útján az elmozdulás (felső, jobb, alsó és bal). És a következő értékeket:

  • statikus - alapértelmezés szerint az eltolás nem alkalmazható
  • relatív - offset mozgó vizuális réteg, de nem az elem
  • abszolút - az elmozdulás elem elmozdul keretében (az első elem nem statikus)
  • fix - elmozdulás elem belsejében van elhelyezve viewport`a és nem számít, hogy hol található a dokumentumban

Problémák merülnek fel, amikor használja position: absolute. És biztosan ki volt téve nekik: megadtuk egy elem abszolút pozicionálás, mert azt szeretnénk, hogy mi lenne a jobb felső sarokban a szülő (például egy gombot, hogy bezárja az ablakot modális).

... és ez a jobb felső sarokban a dokumentumot. Akkor egy pillanatra azt gondolta „Mi a fene?”. Tény, hogy ez normális böngésző működését. Kulcsszó összefüggésben van.

A fenti kód egyszerűen azt mondja: „Azt akarom, hogy az én elem prepositioned a jobb felső sarokban a kontextusban.” Tehát mi a háttér? Ez az első eleme a helyzet ingatlan nem egyenlő a statikus. Ez lehet a közvetlen szülő elem, a szülő vagy szülők, vagy a szülő szülő szülő. És így tovább, amíg az első eleme a helyzetben! = Statikus.

Ez a fogalom gyakran nehéz megérteni a kezdők, de ha egyszer megérted, hogy nyit egy nagy lehetőséget, hogy működjenek együtt az elemek vannak elhelyezve teljesen.

Részben demo bemutató fent említett. Két szülő, mindegyik egy utódeleme pozíciótól abszolút top offset: 0 és jobbra: 0. Balról jobbra szülő position: relative jobb rossz helyről: statikus.

Vége az első rész.

Kapcsolódó cikkek