Kontakty

Zrútenie okrajov. Víťazstvo nad nepozorným. Zrútenie okrajov Susedné prvky a zrútenie

Niekto v rozcuchaných pocitoch napíše „nie ahoj, nie zbohom“. :-))

Ako robíte dizajnéra zodpovedným za preklepy? Naša spoločnosť má napríklad dizajnérske štúdio, s ktorým neustále spolupracujeme. A takmer v každom rozložení, ktoré pre nás urobia, sú preklepy. Niektoré z nich robíme sami a opravujeme sa, keď nám posielajú rozvrhy na overenie, niektoré je potrebné opraviť viackrát - dizajnéri akceptujú veľa dodatkov, niečo opravia, niečo zabudnú. A niekedy sa už v hotovom produkte objavia nové preklepy, ktoré samotné dizajnérske štúdio pošle na tlač. Štúdio nemá vlastného korektora, ale sú tu manažéri, ktorí dohliadajú na projekty, je tam art director, sú tu dizajnéri a webmasteri. Skrátka vtipní a talentovaní chalani, ale veľmi nedbalí. Ste ilustrátor a okolo vás je veľa ilustrátorských návrhárov a kreatívnych ľudí. Nezahŕňa však kreativita úhľadnosť? Končí sa zodpovednosť tvorcu nakreslením obrázka a prilepením dôležitého textu? Často máte problémy s preklepmi a kto by ich mal riešiť - ten, kto robí rozloženie, alebo ten, kto si ho objednáva? A čo robíte, keď vám prinesú niečo vyrobené s hrubými chybami? Veľmi bolestivé.

Ahoj!
Samozrejme si myslím, že každý by mal VŠETKÚ svoju prácu vykonávať veľmi dobre. Ale tiež viem, že veľmi často robia chyby ilustrátori, dizajnéri a ďalší ľudia, ktorí „zbierajú obsah do niečoho“, nie preto, že sú takí leniví a nedbalí jednotlivci. A pretože to je znakom ich práce - sú vyladení na obrázky, rozloženie a dizajn a nemyslia na chyby a preklepy. Ak chcete skontrolovať chyby, musíte vedome a so značným úsilím prepnúť mozog na čítanie textu a premýšľanie nad ním. A aj v tomto prípade môžete veľa minúť, pretože pri práci s textom, podobne ako pri grafike, sa oko nejakým zvláštnym spôsobom rozmazáva.

Aké sú východiská z tohto?
1 - Úplne zakázajte návrhárom (a odnaučte ich od toho) úplne sa dotýkať textu. To je úplne jasné. dal text taký, aký je - tu s ním pracujeme. Nič nepridávame, nič nepripisujeme. neopravujeme to. neodpisujte ručne z obrázku a pod. A nauč to. ak musíte opraviť aspoň jedno slovo sami alebo dokonca časť slova - to je vždy situácia špeciálnej bojovej pripravenosti - potom musíte znova prečítať, znova skontrolovať a (!!!) stále nezabudnite informovať vedúci, že niekde bol text ovládaný.

A to nie je potvrdením toho, že dizajnéri sú hlúpe zvieratá, ktoré nevedia čítať a písať, je to zodpovedné nakladanie s dôležitými vecami, o ktorých je známe, že sa často rozpadávajú kvôli zvláštnostiam tejto práce.

Dlho som sa naučil dávať korektorovi alebo redaktorovi (alebo projektovému manažérovi) VŠETKO, kde som niečo napísal. Všetko. Je to všetko pravda. Každý obrázok obsahuje iba tri slová. Pretože aj tam sa to stáva. A hovorte o tom, ak som niekde zmenil texty. Všetci tiež. Vidieť to znova. Nehanbím sa Viem, že hlúpe preklepy zblízka nevidím. Oveľa trápnejšie je, keď sa 2 000 kópií vytlačených na drahom materiáli objaví s chybou.

2 - Všetci manažéri hovoria - nahlas a jasne -, že vaši dizajnéri majú zakázané ísť do textu a zmeniť tam aspoň jedno písmeno, a presne tak to odošlú, a tak to dajú na svoje miesto. A ak dôjde k chybe, bude to chyba manažéra. Úlohou manažéra je rozhodnúť, kto kontroluje chyby - sám alebo iný manažér alebo pridelený novinár alebo redaktor alebo korektor. A stále strkať nos je VAŠA úloha, vaša. Dizajnér s tým nemá nič spoločné, ilustrátor s tým nič nemá, je dobré, ak sa ešte raz pozrú a všimnú, ale to nie je ich úloha a ani zodpovednosť. Toto je manažér, ktorý by sa mal po poslednom, predposlednom a tridsiatom prepracovaní znova na všetko pozrieť a informovať dizajnéra, či im tam chýba písmeno, a potom sa zvláštna postava dostala von.

3 - Vo všeobecnosti bývala taká tradícia: ak sa niečo vydáva vo veľkom náklade (od 200), existuje „signalizácia“ - jedna posledná konečná verzia. ktorý je daný viacerým ľuďom na prečítanie a sledovanie. Pri náklade 10 000 by malo byť približne rovnaké číslo - 8-10. S menším obehom - stále najmenej tri. Musia čítať veľmi svedomito a podpísať, že čítali. Ak po nich stále existuje chyba, aspoň sa nájde pár ľudí, ktorí to videli a ktorých sa možno opýtať - ako vyzerali tí traja? Tiež, ak sa títo traja dvakrát „hanobia“, potom sa sami tiež aktívne zúčastnia strkania tých, ktorým pôvodne nemali chýbať tieto preklepy. Je potrebné obviniť niekoho zo zodpovednosti za to - a pýtať sa. Potom sa budú snažiť to nepriznať.
A teraz, súdiac podľa popisu, nikto necíti zodpovednosť.

Mnoho začínajúcich programátorov a webových vývojárov sa stretáva so situáciou, keď sa prvky na stránke nesprávajú podľa očakávania, a toto správanie sa zdá byť absurdné. Nezabudnite však, že existujúce dominantné technológie vytvárajú mysliaci ľudia, a ak je táto technológia tiež preverená časom, znamená to, že také zvláštne, na prvý pohľad správanie bolo a zostáva nevyhnutnosťou.

Pravdepodobne každý narazil na nehnuteľnosť hraničný kolaps pre stoly. Je známe, že táto vlastnosť s hodnotou hraničný kolaps: kolaps odstráni jedno z okrajov pre susedné bunky tabuľky, čím sa zabráni duplicitnému ohraničeniu. Funkcia blokového modelu tzv prepadajúce sa okraje(Anglicky - Collapsing Margin). Zbalenie výplne je funkcia modelu CSS boxu, ktorá prekrýva zvislé vypchávky dvoch alebo viacerých prvkov boxu (ktoré môžu, ale nemusia byť susedmi), aby vytvorili jedno polstrovanie. Odsadenie vyplývajúce z tohto zlúčenia sa nazýva zbalená zarážka. Uvedomte si, že táto funkcia platí iba pre zvislé čalúnenie prvku, t.j. Komu margin-top a okrajové dno.

Pre jednoduchosť si predstavte zrútenie nasledovne: keď sa dotknú vonkajších zvislých okrajov blokových prvkov, dôjde k zarážke rovnajúcej sa hodnote väčšieho, zatiaľ čo hodnota okraja prvku s menším okrajom je nulová. Na obrázku nižšie je veľkosť jednej bunky obrázku na pozadí 20 pixelov; ako vidíte, odsadenie medzi prvkami je 40 pixelov, aj keď si na prvý pohľad pri pohľade na kód môže osoba, ktorá nie je oboznámená so zásadami zrútenia, myslieť, že bloky sú umiestnené nesprávne, pretože ich zarážky nie sú pridané :

# block1 (margin: 40px; / * Nastaviť okraje na všetkých stranách na 40px pre prvý blok * /) # block2 (margin: 40px; / * Nastaviť okraje pre druhý blok podobne ako pre prvý * / margin-top: 20px ; / * Prepísať hornú zarážku * /)
* Zdrojový kód príkladu

Ak má jedna hodnota c mínusovú hodnotu, konečná hodnota zbaleného posunu sa vytvorí súčtom počiatočných hodnôt blokových prvkov. Ak sú obe hodnoty záporné, použije sa väčšia záporná hodnota (z aritmetického hľadiska menej). Ak napríklad blok1 mal hodnotu dolný okraj: -60 pixelov a blok block2 horný okraj: 50 pixelov, potom by konečná hodnota výplne medzi prvkami bola mínus 10 pixelov.

Ako pri každom inom koncepte, aj tu existujú výnimky, takže zbalenie nefunguje v nasledujúcich prípadoch:

  • s plávajúcimi blokmi, ktoré používajú nehnuteľnosť plavák;
  • s koreňovými prvkami ( html, telo);
  • s absolútne umiestnenými prvkami, ktoré majú vlastnosť a hodnotu poloha: absolútna;
  • v vložených prvkoch.
Existujú aj špecifické výnimky, ktoré sa uplatňujú v závislosti od toho, v ktorej hierarchickej interakcii sa bloky nachádzajú (viac o tom nižšie):
  • Ak majú prvky hodnotu vlastnosti pretekať odlíšiteľný od viditeľný, potom také prvky nezrušia zarážky so zarážkami ich dedičov.
  • Prvky s majetkom vymazané nezrážajte horné okraje so spodnými okrajmi ich rodičov.
Teórii môže byť ťažké porozumieť, preto prejdeme k príkladom. Zvážte klasické prípady, ktoré existujú v dedičnosti: keď bloky majú vzťah dieťa-dieťa ( súrodenec-súrodenec), prvky susedia navzájom a majú spoločného rodiča; a tiež vtedy, keď majú bloky vzťah rodič-dieťa ( rodič-dieťa) - jeden prvok vnorený do druhého. V oboch prípadoch sa kolaps úspešne uplatnil, ale má niekoľko nuancií, o ktorých stojí za to hovoriť.

Susedné prvky a zrútenie

Obvykle, s výnimkou použitia ďalších vlastností, sa vonkajšie okraje akýchkoľvek susedných prvkov bez koreňového bloku zrútia, príklad zrútenia susedných prvkov je uvedený vyššie.

Niekedy je potrebné vyhnúť sa tomuto účinku. Okrem použitia vlastností, ktoré sa prekrývajú, môžete použiť aj niektoré triky, napríklad nenastavujte hodnoty odsadenia pre prvky, s výnimkou jednej zarážky - hornej alebo spodnej, ale ak nastavujete hodnoty pre niekoľko Prvky týmto spôsobom možno budete musieť určiť odsadenie pre prvý alebo posledný prvok vzhľadom na rodič alebo zmeniť jeho pole:

#parent (margin: 40px; border: 1px dashed white; background: rgba (150, 0, 255, 0.2); width: 204px;) / * Vizuálna symetria would require adds padding-bottom: 20px; * / .blok (výška: 16 pixelov; horný okraj: 20 pixelov; orámovanie: 2 pixely plná biela; pozadie: rgba (150, 0, 255, 0,7);)
* Zdrojový kód príkladu

Ako vidíte, tu musíte do spodného prvku pridať spodné vypchávky, aby boli všetky prvky zarovnané. Či sa vám oplatí lámať si nohy, aby ste mohli nahradiť barle, je vecou vkusu, ale neodporúčal by som to.

Zbaliť polstrovanie prvkov prepojených s rodičmi

V tomto prípade kolaps funguje o niečo komplikovanejšie a komplikovanejšie ako vo vyššie uvedených príkladoch. Najprv musíte vedieť, že bloky sú zbalené podľa príslušných polí. To znamená, že horný okraj rodiča sa zbalí s horným okrajom jeho dieťaťa. Na zváženie tejto situácie si predstavte, že existujú tri bloky: vonkajší rodičovský blok, rodičovský blok a podradený blok. Aby kolaps fungoval, rodičovský blok nesmie mať ani polia, ani okraje (ich hodnoty boli nulové). Vonkajšie polia týchto prvkov sa teda dotýkajú. Na spustenie kolapsu sú potrebné nulové hodnoty odsadenia a rodičovstva.

Outside_parent (horný okraj: 40 pixelov; ľavý okraj: 40 pixelov; okraj: 2 pixely s bodkovanou čiernou; pozadie: rgba (150, 0, 255, 0,7);). Rodič (výplň: 0 pixelov; / * Všimnite si, že vypchávky sú 0 * / border: 0px solid grey; / * Rodič by tiež nemal mať okraje * / margin-top: 40px; / * Tento okraj sa zrútil s dieťaťom * / background: rgba (150, 0, 255, 0,7);). dcéra (šírka: 196 pixelov; horný okraj: 60 pixelov; / * Skutočné hodnoty okraja * / okraj: 2 pixely plná biela;)
* Zdrojový kód príkladu

Pripomínam, že veľkosť jednej bunky je 20 pixelov, takže bez zbalenia zarážky medzi prvkami by bolo 60 + 40 pixelov, ale vzhľadom na použitie tohto efektu sa rovná maximálnej hodnote jedného z prvkov. , v tomto prípade - 60 pixelov (3 bunky). Vidíme, že vypchávka detského bloku nahrádza vrchné vypchávky pre jeho rodiča. Ak nastavíte niečo pre nadradený prvok: pole ( vypchávka) alebo hranica ( hranica), potom sa zbalenie neuplatní a vzdialenosť medzi prvým blokom a druhým bude zrejmých 100 pixelov. Týmto spôsobom môžete ovládať prítomnosť tohto efektu pridaním malého poľa alebo bezfarebného ohraničenia, povedzme 1 mm hrubého, čím deaktivujete efekt zbalenia.
Na prvý pohľad by sa mohlo zdať, že efekt funguje iba vtedy, keď je štruktúra vytvorená, ako v príklade vyššie, ale nie je: kolaps bude fungovať aj medzi susednými prvkami, ak majú ďalšie vnorené bloky. Zoberme si situáciu, keď existuje vonkajší blok a dva bloky, z ktorých jeden je vnorený do druhého.

Vonku (výška: 16 pixelov; okraj: 20 pixelov 0 0 40 pixelov; okraj: 2 pixely nepretržite biely; pozadie: rgba (150, 0, 255, 0,7); spodný okraj: 20 pixelov / / * Tento okraj sa tiež zrútil * /). Rodič (margin-top: 40px; / * This padding collapsed with the child * / margin-left: 40px;) / * Rodičovský box nesmie mať žiadne okraje ani ohraničenia, aby efekt spustil * / .daughter (margin-top: 60px ; / * Skutočne zbalená vrchná časť * / okraj: 2px plná biela;)
* Zdrojový kód príkladu

Je pozoruhodné, že zrútenie vo vyššie uvedenom príklade fungovalo dvakrát: najskôr sa zrútila výplň rodičovského a podradeného prvku, potom sa vytvorená výplň zrútila so spodným polstrovaním vonkajšieho prvku.

Výkon

Pre dobrého technika je dôležité ovládať všetky nástroje a vlastnosti, ktoré sú pre neho vhodné: dobrý mechanik sa stará nielen o počet ventilov v motore, ale aj o dostupnosť dobrého systému vstrekovania paliva a kvalitu samotné palivo. Rovnako tak dobrý webový vývojár by mal ovládať každý pixel a nestratiť dôležité detaily v štruktúre webu.

Diabol je v maličkostiach, diabol je v pixeloch.

Značky: Pridajte značky

V čom spočíva chyba v nasledujúcom úryvku kódu: pre (i = 0; i< 10; i++) {int sum;sum = sum + i;}System.out.println("Sum is: " + sum);В этом фрагменте кода имеются две существенные ошибки. Во-первых, переменная sum создается на каждом шаге цикла for, а следовательно, в промежутке междупоследовательными итерациями предыдущее значение подсчитываемой суммы небудет сохраняться в этой переменной. И во-вторых, переменная sum недоступна запределами кодового блока, в котором она объявлена. Поэтому ссылка на нее привызове метода println () недопустима.

Vysvetlite rozdiel medzi formami prefixu a postfixu operátora prírastku. Ak operátor prírastku predchádza operandu, runtime systém Java vykoná operáciu pred načítaním hodnoty operandu a jeho použitím vo zvyšku výrazu. Ak operátor prírastku nasleduje operand, runtime systém najskôr načíta hodnotu operandu a až potom ho zvýši.

Ukážte, ako môže skrátený logický operátor AND zabrániť deleniu nulou. Ak ((b! = 0) && (val / b)) ... Príloha A. Otázky autotestu 559.

Na aký typ sa pri hodnotení výrazu povoľuje bajt a skratka? Vo výraze sa bajt a skratka povýši na int.

Keď je potrebné explicitné typové triedenie? Pri práci s nekompatibilnými typmi alebo ak konverzia typu vedie k zúženiu rozsahu platných hodnôt, je potrebné explicitné typové obsadenie.

Napíšte program, ktorý nájde prvočísla od 2 do 100. // Nájdite prvočísla od 2 do 100. trieda Prime (public static void main (String args) (int i, j; boolean isprime; for (i = 2; i< 100; i++) {isprime = true;// проверить, делится ли число без остаткаfor(j=2; j < i/j; j++)// если число делится без остатка, значит, оно простоеif ((i%j) == 0) isprime = false;if(isprime)System.out.println(i + " is prime.");}}}

Majú zbytočné zátvorky vplyv na účinnosť vykonávania programu? Nie, nie.

Definuje blok kódu rozsah premenných? Áno, je to tak. Kapitola 3. Ovládacie operátory

Napíšte program, ktorý bude zadávať znaky z klávesnice, kým nenastane bodka. V programe poskytnite priestorové počítadlo. Informácie o počte medzier by mali byť vytlačené na konci programu. // Počítanie medzier, trieda Medzery (public static void main (String args) hodí java.io.IOException (char ch; int spaces = 0; System.out .println („Zadajte bodku na zastavenie.“); urobte (ch = (char) System.in.read (); ak (ch == 1 ") medzery ++;) while (ch! = System.out. println ("Medzery:" + medzery);))

Aká je všeobecná forma viacstupňového príkazu if-else-if? If (podmienka); príkaz if (podmienka); príkaz if (podmienka); príkaz if (podmienka); príkaz else;

Povedzme, že máte nasledujúci kus kódu: if (x< 10)if(у >100) (if (! Done) x = z; else y = z;) else System.out.println ("chyba"); // čo keď? Čo keď je príkaz if posledným príkazom else, ku ktorému je priradený? Príkaz last else korešponduje s najbližším príkazom if na rovnakej úrovni, t.j. ak (y> 100).

Napíšte slučku for, ktorá iteruje hodnoty od 1 000 do 0 v prírastkoch -2. Pre (int i = 1000; i> = 0; i - = 2) // ...

Je nasledujúci kúsok kódu správny? Pre (int i = 0; i< num; i++)sum += i;count = i;Нет, не корректен. Переменная i недоступна за пределами цикла for, в которомона объявлена.

Čo robí vyhlásenie o prestávke? Popíšte oba varianty tohto príkazu. Neoznačený príkaz break spôsobí okamžité ukončenie príkazu aktuálnej slučky alebo prepínača. A príkaz break so štítkom prenáša kontrolu na koniec označeného bloku.

Aká správa sa zobrazí po vykonaní príkazu break v nižšie uvedenom úryvku kódu? Pre (i = 0; i< 10; i++) {while(running) {if(x

Čo sa zobrazí ako výsledok vykonania nasledujúceho kódu? Pre (int i = 0; i<10; i++) {System.out.print(i + " ");if((i%2) == 0) continue;System.out.println();}На экране появится следующий результат:о 12 34 56 78 9

Iteračný výraz pre slučku for nemusí meniť premennú slučky o pevnú sumu. Táto premenná môže mať ľubovoľné hodnoty. Napíšte program, ktorý používa slučku for na tlač čísel v geometrickej postupnosti 1, 2, 4, 8, 16, 32 atď. / Použitie slučky for na vytvorenie geometrickej postupnosti 1, 2, 4, 8, 16, 32 atď./ class Progress (public static void main (String args) (pre (int i = 1; i< 100; i += i)System.out.print(i + " ");}}

Malé znaky ASCII sa líšia od zodpovedajúcich veľkých písmen o 32. Ak teda chcete previesť malé písmeno na veľké, musíte zmenšiť jeho kód o 32. Túto okolnosť použite na napísanie programu, ktorý môže zadávať znaky z klávesnice. Pri výstupe výsledkov by mal program prevádzať malé písmená na veľké a malé na malé. Ostatné znaky by sa nemali meniť. Program by sa mal ukončiť, keď používateľ zadá z klávesnice bodku. Nakoniec nechajte program zobraziť počet znakov, pre ktoré bol prípad zmenený. // Zmena veľkosti písmen, trieda CaseChg (public static void main (String args) hodí java.io.IOException (char ch; int changes = 0; System) .out.println („Zadajte bodku na zastavenie.“); Vykonajte (ch = (char) System.in.read (); if (ch> = "a" & ch<= "z") {ch -= 32;changes++;System.out.println(ch);}else if(ch >= "A" & ch<= "Z") {ch += 32;changes++;System.out.println(ch);}} while(ch != ".");System.out.println("Case changes: " + changes);}}

Čo je to nekonečná slučka? Nekonečná slučka je slučka, ktorá nekončí.

Má byť v bloku kódu, ktorý obsahuje toto vyhlásenie, definovaný štítok používaný v spojení s príkazom break? Áno, malo by. Kapitola 4. Úvod do tried, predmetov a metód

Aký je rozdiel medzi triedou a objektom? Trieda je abstraktný logický opis formy a správania sa objektu. A objekt je skutočnou inštanciou triedy.

Ako je definovaná trieda? Trieda je definovaná pomocou kľúčového slova class. Príkaz class špecifikuje kód a údaje, ktoré tvoria triedu.

Čiu vlastnú kópiu obsahuje každý objekt? Každý objekt triedy obsahuje svoju vlastnú kópiu inštančných premenných tejto triedy.

Ukážte, ako deklarovať objekt počítadla triedy MyCounter pomocou dvoch samostatných príkazov: počítadlo MyCounter; počítadlo = nový MyCounter ();

Ako by sa mala deklarovať metóda myMeth, ktorá preberá dva parametre a a b typu int a vracia hodnotu typu double? Double myMeth (int a, int b) (// ...

Ako by malo skončiť vykonávanie metódy, ktorá vracia hodnotu? Na ukončenie metódy použite príkaz return. Vráti tiež návratovú hodnotu do volajúcej časti programu.

Aký by mal byť názov konštruktéra?

Čo robí nový operátor? Nový operátor alokuje pamäť pre objekt a inicializuje ho pomocou konštruktora príslušnej triedy.

Čo je to zber odpadu a na čo slúži? Prečo potrebujeme metódu finalize ()? Zber odpadu je mechanizmus na odstránenie nepoužívaných predmetov a opätovné použitie pamäte uvoľnenej z objektov. Metóda finalize () sa volá na objekt tesne pred jeho odstránením z pamäte.

Čo znamená toto kľúčové slovo? Toto kľúčové slovo znamená odkaz na objekt, na ktorý sa metóda volá. Automaticky sa odovzdá metóde.



Páčil sa vám článok? Zdieľaj to