Contacts

Des marges qui s'effondrent. Victoire sur l'inévitable. Effondrement des marges Éléments voisins et effondrement

Quelqu'un écrit avec des sentiments échevelés, "pas de bonjour, pas d'au revoir." :-))

Comment rendre le concepteur responsable des fautes de frappe ? Notre entreprise, par exemple, dispose d'un studio de design avec lequel nous coopérons constamment. Et il y a des fautes de frappe dans presque toutes les mises en page qu'ils font pour nous. Certains d'entre eux, nous les réalisons nous-mêmes et nous les corrigeons nous-mêmes lorsqu'ils nous envoient une mise en page pour vérification, certains doivent être corrigés plusieurs fois - les concepteurs acceptent un tas de modifications, corrigent quelque chose, oublient quelque chose. Et parfois, de nouvelles fautes de frappe apparaissent dans le produit fini, que le studio de design lui-même envoie à l'impression. Le studio n'a pas son propre correcteur, mais il y a des managers qui supervisent les projets, il y a un directeur artistique, il y a des designers et des webmasters. Bref, des mecs drôles et talentueux, mais très bâclés. Vous êtes illustrateur et il y a de nombreux designers illustrateurs et créatifs autour de vous. Mais la créativité n'implique-t-elle pas la propreté ? La responsabilité du créateur se termine-t-elle par le dessin d'une image et par le collage d'un texte sans importance ? Vous avez souvent des problèmes de fautes de frappe et qui doit les résoudre - celui qui fait la mise en page ou celui qui la commande ? Et que faites-vous quand ils vous apportent quelque chose fait avec des erreurs grossières ? C'était très douloureux.

Salut!
Bien sûr, je pense que tout le monde devrait très bien faire TOUT son travail. Mais je sais aussi que très souvent les illustrateurs, les concepteurs et les autres personnes qui « collectent du contenu en quelque chose » font des erreurs, non pas parce qu'ils sont des individus paresseux et négligents. Et parce que c'est une caractéristique de leur travail - ils sont à l'écoute des images, de la mise en page et du design, et ne pensent pas aux erreurs et aux fautes de frappe. Pour vérifier les erreurs, vous devez consciemment, et avec un effort considérable, passer votre cerveau à lire le texte et à y réfléchir. Et même dans ce cas, vous pouvez manquer beaucoup de choses, car lorsque vous travaillez avec du texte, comme avec des graphiques, l'œil devient flou d'une manière particulière.

Quels sont les moyens de s'en sortir ?
1 - Interdire complètement aux concepteurs (et les sevrer) de toucher complètement au texte. C'est absolument. donné le texte tel qu'il est - ici nous travaillons avec. Nous n'ajoutons rien, nous n'attribuons rien. nous ne le réparons pas. ne pas effacer manuellement de l'image, etc. Et enseigne ça. si vous devez corriger vous-même ne serait-ce qu'un mot, ou même une partie d'un mot - c'est toujours une situation de préparation au combat spéciale - alors vous devez relire, revérifier, et (!!!) n'oubliez pas d'informer le gestionnaire que quelque part le texte a été jugé.

Et ce n'est pas une confirmation que les designers sont des animaux stupides qui ne savent ni lire ni écrire, c'est une gestion responsable des choses importantes, dont on sait qu'elles s'effondrent souvent à cause des particularités de ce travail.

J'ai longtemps appris à donner au correcteur ou à l'éditeur (ou au chef de projet) TOUT où j'ai écrit quelque chose. Tout. Tout est vrai. Chaque image avec exactement trois mots. Parce que ça arrive là aussi. Et parlez-en si j'ai changé les textes quelque part. Tout le monde aussi. A revoir. Je n'ai pas honte. Je sais que je ne vois pas de fautes de frappe stupides de près. C'est beaucoup plus embarrassant lorsque 2000 exemplaires imprimés sur du matériel coûteux comportent une erreur.

2 - Tous les managers disent - haut et fort - qu'il est interdit à vos graphistes d'entrer dans le texte et d'y changer au moins une lettre, et c'est exactement comme ça qu'ils l'envoient, alors ils le mettent en place. Et s'il y a une erreur, ce sera l'erreur du manager. C'est le travail du manager de décider qui vérifie les erreurs - lui-même, ou un autre manager, ou le journaliste assigné, ou un éditeur ou un relecteur. Et vous piquer le nez tout le temps est VOTRE tâche, la vôtre. Le dessinateur n'y est pour rien, l'illustrateur n'y est pour rien, c'est bien qu'ils regardent et remarquent encore une fois, mais ce n'est pas leur tâche et ce n'est pas leur responsabilité. C'est le directeur qui, après la dernière, avant-dernière et trentième retouche, devrait tout revoir et informer le concepteur s'il a manqué une lettre là-bas, puis le personnage spécial est sorti.

3 - En général, il y avait une telle tradition : si quelque chose sort à grand tirage (à partir de 200) il y a une "signalisation" - une dernière version finale. qui est donné à plusieurs personnes à lire et à regarder. Avec un tirage de 10 000 exemplaires, il devrait y avoir à peu près le même nombre - 8-10. Avec un tirage plus petit - toujours au moins trois. Ils doivent lire très attentivement et signer qu'ils ont lu. Si après eux il y a encore une erreur, au moins il y aura quelques personnes qui l'ont vue et à qui on peut demander - à quoi ressemblaient les trois ? De plus, si ces trois-là "se déshonorent" plusieurs fois, ils participeront eux-mêmes activement à bousculer ceux qui étaient censés à l'origine ne pas manquer ces fautes de frappe. Il est nécessaire d'accuser quelqu'un de la responsabilité de cela - et de demander. Ensuite, ils essaieront de ne pas l'admettre.
Et maintenant, à en juger par la description, personne ne se sent responsable.

De nombreux codeurs et développeurs Web novices sont confrontés à une situation dans laquelle les éléments d'une page ne se comportent pas comme prévu, et ce comportement semble absurde. Mais n'oubliez pas que les technologies dominantes existantes sont créées par des personnes réfléchies, et si cette technologie a également fait ses preuves, cela signifie qu'un comportement aussi étrange, à première vue, était et reste une nécessité.

Tout le monde est probablement tombé sur la propriété effondrement de la frontière pour les tableaux. On sait que cette propriété de valeur border-collapse: effondrement supprime l'une des bordures des cellules de tableau adjacentes, empêchant ainsi les bordures en double. Une caractéristique du modèle de bloc appelée effondrement des marges(Anglais - Collapsing Margin). L'effondrement du remplissage est une caractéristique du modèle de boîte CSS qui chevauche les remplissages verticaux de deux ou plusieurs éléments de boîte (qui peuvent ou non être voisins) pour former un seul remplissage. Le retrait résultant de cette fusion est appelé retrait réduit. Notez que cette fonctionnalité ne s'applique qu'au remplissage vertical d'un élément, c'est-à-dire À marge-haut et marge-bas.

Pour plus de simplicité, imaginez la réduction comme suit : lorsque les marges verticales extérieures des éléments de bloc se touchent, il y a un retrait égal à la valeur du plus grand, tandis que la valeur de la marge de l'élément avec la plus petite bordure est zéro. Dans l'image ci-dessous, la taille d'une cellule de l'image d'arrière-plan est de 20 pixels ; comme vous pouvez le voir, l'indentation entre les éléments est de 40 pixels, bien qu'à première vue, en regardant le code, une personne qui n'est pas familière avec les principes de l'effondrement peut penser que les blocs sont mal placés, car leurs indentations ne sont pas ajoutées :

# block1 (marge : 40px ; / * Définir les marges de tous les côtés à 40px pour le premier bloc * /) # block2 (marge : 40px ; / * Définir les marges pour le deuxième bloc de la même manière que le premier * / margin-top : 20px ; / * Remplace le retrait supérieur * /)
* Code source de l'exemple

Si une valeur c a une valeur négative, la valeur finale du décalage réduit est formée en additionnant les valeurs initiales des éléments de bloc. Si les deux valeurs sont négatives, une valeur négative plus grande est utilisée (moins d'un point de vue arithmétique). Par exemple, si block1 avait la valeur marge inférieure : -60px et bloc block2 marge supérieure : 50px, alors la valeur finale du remplissage entre les éléments serait de moins 10 pixels.

Comme pour tout autre concept, il existe également des exceptions ici, donc la réduction ne fonctionne pas dans les cas suivants :

  • avec des blocs flottants qui utilisent la propriété flotter;
  • avec des éléments racines ( html, corps);
  • avec des éléments absolument positionnés ayant une propriété et une valeur position : absolue;
  • dans les éléments en ligne.
Il existe également des exceptions spécifiques qui s'appliquent en fonction de l'interaction hiérarchique dans laquelle se trouvent les blocs (plus de détails ci-dessous) :
  • Si les éléments ont une valeur de propriété débordement distinguable de visible, alors de tels éléments ne fusionnent pas les tirets avec les tirets de leurs héritiers.
  • Éléments avec propriété effacé ne pas réduire les marges supérieures avec les marges inférieures de leurs parents.
La théorie peut être difficile à comprendre, passons donc aux exemples. Considérons les cas classiques qui existent dans l'héritage : lorsque les blocs ont une relation enfant-enfant ( frère-soeur), les éléments sont adjacents les uns aux autres et ont un parent commun ; et aussi lorsque les blocs ont une relation parent-enfant ( parent-enfant) - un élément imbriqué dans un autre. Dans les deux cas, l'effondrement a été appliqué avec succès, mais présente plusieurs nuances qui méritent d'être évoquées.

Éléments adjacents et effondrement

Habituellement, à l'exclusion de l'utilisation de propriétés supplémentaires, les marges extérieures de tout élément de bloc adjacent non racine s'effondrent, un exemple d'effondrement d'éléments adjacents est donné ci-dessus.

Parfois, il est nécessaire d'éviter cet effet. En plus d'utiliser des propriétés qui se chevauchent, vous pouvez utiliser certaines astuces, par exemple, ne définissez pas les valeurs de retrait pour les éléments, à l'exception d'un seul retrait - haut ou bas, mais si vous définissez des valeurs pour un certain nombre de éléments de cette manière, vous devrez peut-être spécifier les retraits pour le premier ou le dernier élément par rapport au parent , ou modifier son champ :

#parent (marge : 40px ; bordure : 1px en pointillé blanc ; arrière-plan : rgba (150, 0, 255, 0,2); largeur : 204px ;) / * La symétrie visuelle nécessiterait l'ajout d'un rembourrage en bas : 20px ; * / .block (hauteur : 16px ; margin-top : 20px ; border : 2px solid white ; background : rgba (150, 0, 255, 0.7);)
* Code source de l'exemple

Comme vous pouvez le voir, ici, vous devez ajouter un rembourrage inférieur à l'élément parent afin d'aligner tous les éléments. Que cela vaut la peine de se casser les jambes pour remplacer des béquilles est une question de goût, mais je ne le recommanderais pas.

Réduire le remplissage des éléments liés au parent

Dans ce cas, l'effondrement fonctionne un peu plus alambiqué et plus compliqué que dans les exemples ci-dessus. Vous devez d'abord savoir que les blocs sont réduits par les champs correspondants. Cela signifie que la marge supérieure du parent s'effondrera avec la marge supérieure de son enfant. Pour considérer cette situation, imaginez qu'il y a trois blocs : un bloc parent externe, un bloc parent et un bloc enfant. Pour que le repli fonctionne, le bloc parent ne doit avoir ni champs ni bordures (leurs valeurs étaient nulles). Ainsi, les champs extérieurs de ces éléments se touchent. Notez que zéro remplissage et valeurs parentales sont nécessaires pour que le repli soit déclenché.

Outside_parent (margin-top : 40px ; margin-left : 40px ; border : 2px pointted black ; background : rgba (150, 0, 255, 0.7);) .parent (padding : 0px; / * Notez que le rembourrage est 0 * / border: 0px solid gray; / * Le parent ne devrait pas non plus avoir de marges * / margin-top: 40px; / * Cette marge s'est effondrée avec l'enfant * / background: rgba (150, 0, 255, 0.7);). (largeur : 196px ; margin-top : 60px ; / * Valeurs de marge réelles * / border : 2px solid white ;)
* Code source de l'exemple

Permettez-moi de vous rappeler que la taille d'une cellule est de 20 pixels, donc sans réduire le retrait entre les éléments serait de 60 + 40 pixels, mais en raison de l'utilisation de cet effet, il est égal à la valeur maximale de l'un des éléments , dans ce cas - 60 pixels (3 cellules). Nous pouvons voir que le remplissage du bloc enfant remplace le remplissage supérieur de son parent. Si vous définissez quelque chose pour l'élément parent : champ ( rembourrage) ou la frontière ( frontière), alors la réduction ne s'appliquera pas et la distance entre le premier bloc et le second sera évidente de 100 pixels. De cette façon, vous pouvez contrôler la présence de cet effet en ajoutant un petit champ ou une bordure incolore, disons, 1 pixel d'épaisseur, désactivant ainsi l'effet de réduction.
À première vue, il peut sembler que l'effet ne fonctionne que lorsque la structure est formée, comme dans l'exemple ci-dessus, mais ce n'est pas le cas : l'effondrement fonctionnera également entre des éléments adjacents lorsqu'ils ont d'autres blocs imbriqués. Considérez une situation où il y a un bloc extérieur et deux blocs, dont l'un est imbriqué dans l'autre.

Extérieur (hauteur : 16px ; marge : 20px 0 0 40px ; bordure : 2px blanc uni ; arrière-plan : rgba (150, 0, 255, 0,7) ; marge en bas : 20px ; / * Cette marge s'est également effondrée * /) .parent (margin-top : 40px ; / * Ce rembourrage s'est effondré avec l'enfant * / margin-left : 40px ;) / * La boîte parent ne doit avoir ni marge ni bordure pour que l'effet se déclenche * / .daughter (margin-top : 60px ; / * Otop effondré réel * / bordure : 2px blanc uni ;)
* Code source de l'exemple

Il est à noter que la réduction dans l'exemple ci-dessus a fonctionné deux fois : d'abord, le remplissage de l'élément parent et enfant s'est réduit, puis le remplissage formé s'est effondré avec le remplissage inférieur de l'élément extérieur.

Sortir

Il est important pour un bon technicien de maîtriser tous les outils et attributs qui lui conviennent : un bon mécanicien ne se soucie pas seulement du nombre de soupapes dans le moteur, mais aussi de la disponibilité d'un bon système d'injection de carburant et de la qualité du carburant. lui-même. De même, un bon développeur Web doit contrôler chaque pixel et ne pas perdre de détails importants dans la structure du site.

Le diable est dans les petites choses, le diable est dans les pixels.

Balises : ajouter des balises

Quelle erreur a été commise dans l'extrait de code suivant : for (i = 0; i< 10; i++) {int sum;sum = sum + i;}System.out.println("Sum is: " + sum);В этом фрагменте кода имеются две существенные ошибки. Во-первых, переменная sum создается на каждом шаге цикла for, а следовательно, в промежутке междупоследовательными итерациями предыдущее значение подсчитываемой суммы небудет сохраняться в этой переменной. И во-вторых, переменная sum недоступна запределами кодового блока, в котором она объявлена. Поэтому ссылка на нее привызове метода println () недопустима.

Expliquez la différence entre les formes de préfixe et de suffixe de l'opérateur d'incrémentation. Si l'opérateur d'incrémentation précède l'opérande, le système d'exécution Java effectuera l'opération avant de récupérer la valeur de l'opérande et de l'utiliser dans le reste de l'expression. Si l'opérateur d'incrémentation suit l'opérande, le système d'exécution récupère d'abord la valeur de l'opérande et incrémente ensuite l'opérande.

Montrez comment un opérateur ET logique tronqué peut empêcher la division par zéro. Si ((b! = 0) && (val / b)) ... Annexe A. Réponses aux questions d'autotest 559.

Vers quel type byte et short sont promus lors de l'évaluation d'une expression ? Dans une expression, byte et short sont promus en int.

Lorsqu'un transtypage explicite est nécessaire ? Un transtypage explicite est requis lorsqu'il s'agit de types incompatibles ou si la conversion de type conduit à un rétrécissement de la plage de valeurs valides.

Écrire un programme qui trouve les nombres premiers entre 2 et 100. // Trouver les nombres premiers entre 2 et 100.class 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.");}}}

Les parenthèses inutiles affectent-elles l'efficacité de l'exécution du programme ?

Le bloc de code définit-il la portée des variables ? Oui, il le fait. Chapitre 3. Opérateurs de contrôle

Ecrivez un programme qui saisira des caractères à partir du clavier jusqu'à ce qu'un point soit rencontré. Prévoir un compteur d'espace dans le programme. Les informations sur le nombre d'espaces doivent être imprimées à la fin du programme. // Compter les espaces, la classe Spaces (public static void main (String args) lève java.io.IOException (char ch; int space = 0; System.out .println ("Entrez un point pour arrêter. "); do (ch = (char) System.in.read (); if (ch == 1") espaces ++;) while (ch! = System.out. println ("Espaces :" + espaces) ;))

Quelle est la forme générale de l'instruction if-else-if en plusieurs étapes ? instruction if (condition), instruction else if (condition), instruction else if (condition), instruction else ;

Supposons que vous ayez le code suivant : if (x< 10)if(у >100) (if (! Done) x = z; else y = z;) else System.out.println ("error"); // et si ? Quelle instruction if est la dernière instruction else associée ? La dernière instruction else correspond à l'instruction if la plus proche du même niveau, c'est-à-dire si (y> 100).

Ecrivez une boucle for qui itère sur les valeurs de 1000 à 0 par incréments de -2.for (int i = 1000; i> = 0; i - = 2) // ...

Le morceau de code suivant est-il correct ? Pour (int i = 0; i< num; i++)sum += i;count = i;Нет, не корректен. Переменная i недоступна за пределами цикла for, в которомона объявлена.

A quoi sert l'instruction break ? Décrivez les deux variantes de cette instruction. Une instruction break sans étiquette entraîne l'arrêt immédiat de la boucle ou de l'instruction switch en cours. Et l'instruction break avec une étiquette transfère le contrôle à la fin du bloc marqué.

Quel message sera affiché après l'exécution de l'instruction break dans l'extrait de code ci-dessous ? Pour (i = 0; i< 10; i++) {while(running) {if(x

Qu'est-ce qui sera affiché à la suite de l'exécution du code suivant ? Pour (int i = 0; i<10; i++) {System.out.print(i + " ");if((i%2) == 0) continue;System.out.println();}На экране появится следующий результат:о 12 34 56 78 9

Une expression itérative pour une boucle for n'a pas à modifier la variable de boucle d'un montant fixe. Cette variable peut prendre des valeurs arbitraires. Écrivez un programme qui utilise une boucle for pour imprimer des nombres dans une progression géométrique 1, 2, 4, 8, 16, 32, etc. / Utiliser une boucle for pour former une progression géométrique 1, 2, 4, 8, 16, 32, etc./ class Progress (public static void main (String args) (for (int i = 1; i< 100; i += i)System.out.print(i + " ");}}

Les caractères ASCII minuscules diffèrent des caractères majuscules correspondants de 32. Par conséquent, pour convertir une lettre minuscule en majuscule, vous devez diminuer son code de 32. Utilisez cette circonstance pour écrire un programme qui peut saisir des caractères à partir du clavier. Lors de la sortie des résultats, le programme doit convertir les lettres minuscules en majuscules et les majuscules en minuscules. Le reste des caractères ne doit pas être modifié.Le programme doit se terminer après que l'utilisateur ait entré un point à partir du clavier. Enfin, demandez au programme d'afficher le nombre de caractères pour lesquels la casse a été modifiée. // Changer la casse, la classe CaseChg (public static void main (String args) lève java.io.IOException (char ch; int changes = 0; System. out.println ("Entrez la période d'arrêt."); Do (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);}}

Qu'est-ce qu'une boucle infinie Une boucle infinie est une boucle qui ne se termine pas.

Une étiquette utilisée en conjonction avec une instruction break doit-elle être définie dans le bloc de code contenant cette instruction ? Chapitre 4. Introduction aux classes, objets et méthodes

Quelle est la différence entre une classe et un objet Une classe est une description logique abstraite de la forme et du comportement d'un objet. Et un objet est une instance réelle d'une classe.

Définition d'une classe Une classe est définie à l'aide du mot-clé class. L'instruction de classe spécifie le code et les données qui composent la classe.

Quelle copie chaque objet contient-il ? Chaque objet d'une classe contient sa propre copie des variables d'instance de cette classe.

Montrez comment déclarer l'objet compteur de la classe MyCounter à l'aide de deux instructions distinctes : MyCounter counter ; counter = new MyCounter ();

Comment déclarer la méthode myMeth, qui prend deux paramètres a et b de type int et renvoie une valeur de type double ?Double myMeth (int a, int b) (// ...

Comment l'exécution d'une méthode qui renvoie une valeur doit-elle se terminer ? Pour terminer une méthode, utilisez l'instruction return. Il transmet également la valeur de retour à la partie appelante du programme.

Quel doit être le nom du constructeur ?

Rôle de l'opérateur new L'opérateur new alloue de la mémoire à un objet et initialise l'objet à l'aide du constructeur de la classe appropriée.

Qu'est-ce que le ramassage des ordures et à quoi sert-il ? Pourquoi avons-nous besoin de la méthode finalize () ? La récupération de place est un mécanisme permettant de supprimer les objets inutilisés afin de réutiliser la mémoire libérée des objets. La méthode finalize () est appelée sur un objet juste avant qu'il ne soit supprimé de la mémoire.

Que signifie le mot-clé this ? Le mot-clé this désigne une référence à l'objet sur lequel la méthode est appelée. Il est automatiquement passé à la méthode.



Vous avez aimé l'article ? Partagez-le