161 votes

Bordure CSS inférieure à 1px

Duplicata possible :
HTML : Bordure sous-pixel

La valeur par défaut border:1px est trop grande. Cependant, border: 0.5px solid; ne fonctionne pas. Existe-t-il une solution CSS qui permettrait de réduire la taille de la bordure de moitié ?

27 votes

Je pense que vous ne comprenez pas comment les pixels fonctionnent. C'est comme vouloir une taille de valeur inférieure à un bit.

5 votes

Ok, je comprends maintenant que ça ne peut pas être moins de 1 px.

9 votes

Techniquement, c'est possible, car les pixels sont une unité de mesure relative. Mais cela va probablement bouleverser votre vision du monde.

229voto

Yanick Rochon Points 18537

Un pixel est la plus petite valeur unitaire avec laquelle on peut rendre quelque chose, mais on peut tromper l'épaisseur avec des illusions d'optique en modifiant les couleurs (l'œil ne peut voir que jusqu'à un pixel). certaine résolution aussi).

Voici un test pour prouver ce point :

div { border-color: blue; border-style: solid; margin: 2px; }

div.b1 { border-width: 1px; }
div.b2 { border-width: 0.1em; }
div.b3 { border-width: 0.01em; }
div.b4 { border-width: 1px; border-color: rgb(160,160,255); }

<div class="b1">Some text</div>
<div class="b2">Some text</div>
<div class="b3">Some text</div>
<div class="b4">Some text</div>

Sortie

enter image description here

Ce qui donne l'illusion que le dernier DIV a une largeur de bordure plus petite, car la bordure bleue se fond davantage dans le fond blanc.


Edit : Solution alternative

Les valeurs alpha peuvent également être utilisées pour simuler le même effet, sans devoir calculer et manipuler les valeurs RVB.

.container {
  border-style: solid;
  border-width: 1px;

  margin-bottom: 10px;
}

.border-100 { border-color: rgba(0,0,255,1); }
.border-75 { border-color: rgba(0,0,255,0.75); }
.border-50 { border-color: rgba(0,0,255,0.5); }
.border-25 { border-color: rgba(0,0,255,0.25); }

<div class="container border-100">Container 1 (alpha = 1)</div>
<div class="container border-75">Container 2 (alpha = 0.75)</div>
<div class="container border-50">Container 3 (alpha = 0.5)</div>
<div class="container border-25">Container 4 (alpha = 0.25)</div>

19 votes

Pour tous ceux qui tentent de le faire, mais qui ne savent pas comment mélanger leurs couleurs, j'ai trouvé cette page très utile : meyerweb.com/eric/outils/mélange de couleurs Assurez-vous simplement de choisir plus d'un point médian, et choisissez votre préféré.

1 votes

Dans les navigateurs modernes, sur les écrans UHD, les largeurs inférieures au pixel sont désormais possibles.

0 votes

@verism s'il vous plaît, développez.

6voto

Il est impossible de dessiner à l'écran une ligne plus fine qu'un pixel. Essayez plutôt d'utiliser une couleur plus subtile pour la bordure.

7 votes

L'utilisation d'une bordure plus contrastée donnera une impression de plus grande épaisseur, tandis qu'une couleur plus fondue par rapport au fond donnera une impression de légèreté (plus fine).

1 votes

Ce n'est plus vrai. 0,5px est valable et fonctionne.

0 votes

@Vincent Browser-dependent. Chrome 70 traite les valeurs des sous-pixels comme 1px, par exemple, même sur les écrans hidpi.

2voto

Gagan Deep Points 180

Essayez de donner la limite en % par exemple 0.1% selon votre besoin.

3 votes

Ne fonctionne pas, Chromium 49

2voto

Sharpless512 Points 364

La largeur minimale que votre écran peut afficher est de 1 pixel. Il est donc impossible d'afficher moins de 1 pixel. Un pixel ne peut avoir qu'une seule couleur et ne peut être divisé.

9 votes

Mais mais, sur la rétine...

3 votes

Mon navigateur affiche un champ de saisie dont la bordure est plus fine que les bordures HTML de 1 pixel (affichage rétina). Pour autant que je sache, les bordures HTML de 1 pixel sont en fait mises à l'échelle de deux pixels rétina, mais la spécification CSS ne comporte pas d'options permettant de contrôler ce comportement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X