Funktioner af Jello Mold

Original: http://www.positioniseverything.net/articles/jello.html

Hvis du har gjort et par flydende og stive CSS layouts, vil du være alt for bevidste om deres begrænsninger. En stiv layout er fantastisk til at fastholde tekst line længder og kunstnerisk udseende, men da resolutioner holde voksende større disse layouts viser pinlige bivirkninger rum mere og mere.

Flydende layout har deres egne problemer i de brede skærme, der strækker sig både tekstlinjer og design uforståeligt i nogle tilfælde. Udover den åbenlyse, kan Explorer til Windows også har meget grimme bugs i flydende layouts når stiv indhold, der deler plads med flåd sker at “låse op” side bredde. Når det sker, de dårlige gamle 3px bug inducerer indhold slippe, og den eneste kur er at bruge min-bredde for at stoppe svind før lockup sker.

Desværre er IE ikke understøtter min-bredde samt den støtter 3px bug, så en JavaScript er derefter nødvendigt for at tvinge overholdelse i IE. Det er en stor smerte i du ved hvor.

IE7 understøtter nu min-bredde og max-bredde og ikke længere har den 3px bug, woohoo!

Et nyt håb

Hvad hvis det var muligt at skabe et layout, der ikke var fuldt stiv, og heller ikke helt flydende, men på nogle vælges tidspunkt i mellem? Desuden, hvad nu hvis denne metode også bød på en “naturlig” min-bredde, du kan indstille, uden behov for scripting? Er det for meget at bede om? Nope, det er nu en realitet, takket være en anden af ​​de unge genier, Mike Purvis. Stol på os folk, behøver sind ikke få noget mere lusket end Mike.

Jello Piefecta har flere interessante funktioner, der kan ses, hvis du indsnævre og udvide vinduet. Ja centret er nu flydende, men bemærker, at den ydre indhold kant synes at være flydende, men hvis vinduet er smal nok det vil fylde viewport. Hvis det er gjort smallere det genererer et horisontalt rullepanel ligner min bredde på legemselementet.

Men denne effekt virker i IEwin, og der er ingen scripting! Nu udvider ud af vinduet, og mens siden også udvides, den hastighed, hvormed det udvider er mindre end vinduet. Denne sats, og det punkt, hvor min-bredde stopper indsnævringen er begge styres fuldt ud.

Hvad du ser, er den Jello Mold, som beskrevet af Mike selv her på PIE, og en fantastisk opfindelse er det også. Vi har taget en ny flydende center col version af Piefecta og indsat den i Jello Mold, med spektakulære resultater. Tre kolonner, kilde bestilt, enhver col længste hvert område tilable, stive side kolonner og flydende center col, og med en fin balance mellem en stiv og en flydende ydre omslag. Oven det, en max-bredde for dem, der insisterer på, at deres tekstlinjer ikke strækkes halvvejs til Alpha Centauri.

Det virker i alle moderne browsere, bortset fra at IEmac ikke gør max-bredde trick, da den ikke understøtter hverken CSS reglen eller proprietære MS udtryk anvendes til at dække IEwin. (For en script-fri layout, bare udelade max-bredde udtryk for IEwin). IE7 indbygget understøtter max-bredde og behøver ikke dette udtryk. Faktisk hele metode kan undværes, hvis IE6 ikke var omkring, så når det endelig gået, kan du bare bruge min-max bredder og en procentdel bredde på en enkelt indpakning og være færdig med den. Vil det ikke være rart?

Bugs

I IEwin, hvis ethvert element forud for den kolonne gruppe har tekst (såsom header), og indsnævre skærmen vil forårsage, at tekst til at ombrydes ned til en ekstra linje, vil det støde col gruppe ned så godt. Dette medfører IEwin til at “glemme” den negative margenberegningen på den venstre kolonne, får det til at dække center kol.

Heldigvis yderligere nedskæring eller forfriskende vil genoprette col margen. Det betyder, at fejlen kun kan være et problem, hvis en bruger manuelt indsnævrer vinduet til den nøjagtige kritiske header wrap dimension, og ikke én pixel mindre. Da dette er yderst usandsynligt, det er virkelig en ikke-spørgsmål.

Safari har en mærkelig problem med de negative margener på #expander, div, der har store negative marginer. I den browser, hvis Jello Mold er indlæst i et vindue, der er allerede er smallere end den naturlige min bredde er #expander vises som værende bredde overhovedet, hvilket resulterer i en klassisk “togkatastrofe”. Du ønsker ikke at vide. Svaret er at tildele en reel min-bredde svarende til summen af ​​de negative bivirkninger margener på #expander, at #expander. Slut på problemet. Kudos til Steven Luscher for at opdage fejlen og hjælpe med at teste rettelsen.

Der er en IEmac fejl i design, der bruger negative margenaftaler kolonner, der gør den venstre col links forsvinde på hover. Denne fejl kan dræbes via en: hover {position: relative;}, anvendes kun på hover. Den IEmac fix er venligst udlånt af Emmanuel Delaborde.

Afrundingsfejl

De rigtige col 1px afrundingsfejl er et iboende problem med Gecko (nu helt undertrykt i Firefox 3, yay!), Som måske er lidt for streng ved beregning af afsmeltede dimensioner procentvise definerede elementer. Man kan se de fejl i højre spalte og også på den højre side af midten col, men kun på nogle vindue bredder. Andre browsere har afrundingsfejl også, men ikke i dette layout.

Aditionally, det er muligt for den nederste kant på emballagen for at miste 1px af bredde, altho dette ikke altid sker. Se vores afrundingsfejl demo for mere info.

Hvis du ikke forsøger at bruge synlige elementer, der spænder over hele bredden af ​​dette col eller tryk på højre kant af centret col, vil fejlene passere ubemærket, som med dette stykke.