IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

Dessiner en CSS un triangle en coin de block pour indiquer une case cliquable


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Electron libre since 80's
    Inscrit en
    Juillet 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Electron libre since 80's
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 92
    Par défaut Dessiner en CSS un triangle en coin de block pour indiquer une case cliquable
    Bonjour,

    Dans une grille d'affichage, je cherche à obtenir cela pour indiquer une case cliquable :

    Nom : 1.png
Affichages : 201
Taille : 242 octets

    C'est plus discret et efficace que ce que je peux faire actuellement :

    Nom : 2.png
Affichages : 209
Taille : 1,1 Ko

    C'est moche (j'injecte le caractère).

    Code HTML (extrait) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="$taskList10Task" title="Voir l'historique de la tâche 10" style="height:3vh; width:8vw; float:left; box-sizing:border-box; overflow-x:hidden;" onclick="_$planning.history(10);" class="taskCanLaunch borderRight borderTop isLink">
    	<div id="taskList10Task" class="smartFit" style="width: 100%; height: 100%; font-size: 24px; line-height: 24px;">10▸
    	</div>
    </div>

    CSS (extrait) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    .taskCanLaunch {
        color: red;
        font-weight: 600;
    }
    .isLink {
        cursor: pointer;
    }
    .borderRight
    {	border-right: 1px solid black;
    }
     
    .borderLeft
    {	border-left: 1px solid black;
    }
     
    .borderTop
    {	border-top: 1px solid black;
    }
     
    .borderBottom
    {	border-bottom: 1px solid black;
    }
    Les tag <style> sont utilisés (je sais, ce n'est pas académique) car je génère à la volée les caractéristiques de la div selon des données variables (fichier définissant les divers écrans, taille du texte à afficher...).

    Je cherche le plus simple possible et le moins gourmand en ressources. Je ne peux pas utiliser les couleurs de fond ou de texte car elles servent à indiquer des statuts/sources.

    Merci de vos (éventuelles) réponses.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    c'est typiquement le genre de chose que l'on peut résoudre avec un pseudo-élément :before et la propriété CSS clip-path.

    Avec le HTML suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="cadre"></div>
    il suffit d'applique le CSS, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .cadre {
      width: 10em;
      height: 5em;
      border: 1px solid #888;
    }
    .cadre:before {
      content: "";
      display: block;
      width: 1em;
      height: 1em;
      background: #080;
      clip-path: polygon(0 0,100% 0,0 100%);
    }
    pour obtenir ce que tu cherches.

    Ressources :

  3. #3
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    autre solution :

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    .cadre:before {
      content: "";
      display: block;
      width: 0; height: 0;
      border-style: solid;
      border-width: 1em 1em 0 0;
      border-color: #080 transparent transparent transparent;
    }

  4. #4
    Membre éclairé
    Homme Profil pro
    Electron libre since 80's
    Inscrit en
    Juillet 2016
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Electron libre since 80's
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 92
    Par défaut Merci, solution intermédiaire
    Bonjour,

    Merci de ces réponses rapides.

    J'ai testé ces 2 solutions qui fonctionnent mais comme cela passe par un border, l'inconvénient est que la surface utile du bloc diminue d'autant pour le contenu texte.

    J'adopte donc pour l'instant une version intermédiaire qui a cela comme rendu :

    Nom : 3.png
Affichages : 163
Taille : 2,3 Ko

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .cadre::before
    {	content:"■";
    	display:block;
    	width:0;
    	height:0;
    	position:relative;
    	top:-9px;
    	left:-4px;
    }

    Le petit + : le caractère prend la couleur de texte de la div.

    Merci de vos contributions qui m'ont beaucoup aidé.

  5. #5
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Citation Envoyé par xor AX AX Voir le message
    ...l'inconvénient est que la surface utile du bloc diminue d'autant pour le contenu texte...
    Il faut le passer en absolu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    .cadre {
      position:relative; /* le conteneur doit être positionné */
      width: 10em;
      height: 5em;
      border: 1px solid #888;
    }
     
    .cadre:before {
      position:absolute; top:0; left:0; /* positionnement absolu */
     
      content: "";
      display: block;
      width: 0; height: 0;
      border-style: solid;
      border-width: 1em 1em 0 0;
      border-color: #080 transparent transparent transparent;
     
      z-index:-1; /* sous le texte */
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Badge en triangle avec un bord arrondi pour un texte dans un coin
    Par merou19 dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 21/02/2021, 15h53
  2. [CSS] Savoir dans quel menu on est pour mon site
    Par Aspic dans le forum Mise en page CSS
    Réponses: 24
    Dernier message: 17/04/2007, 22h58
  3. [CSS] Modifier la taille de mon image pour mon bouton
    Par bouchette63 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 11/08/2006, 10h15
  4. [css] clignotement d'une case
    Par sissi25 dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 03/07/2006, 17h20
  5. [html+css] problème menu avec liens display:block
    Par Cypselos dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 28/08/2005, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo