28182 sujets

CSS et mise en forme, CSS3

Pages :
Modérateur
(reprise du message précédent)

Bonjour,

Ça donnerait un code du genre <a ...><i ...></i></a>.

Mais apparemment, dans le code final de https://www.citedusilence.fr/ il y a une deuxième balise <i> à l'intérieur du <a>. Ça doit être ajouté par du js. Et ça complique donc pas mal les choses. Ceci étant, ce n'est pas une surprise. Quand on regarde le code d'une page générée avec Wordpress, on a mal aux yeux pour au moins une semaine après ! Smiley lol Smiley lol Smiley lol

Le grand bandeau grisé qu'il y aura au final, c'est un conteneur de la balise <a> ? Ou bien c'est la balise <a> elle-même ? Et si c'est un conteneur, ça sera quoi ? Une <div> avec un id ?

Amicalement,
Je reconnais qu'il y a des thème beaucoup plus basque qui rendent WP plus light mais les thèmes plus complet en fonctionnalités sont nécessaires pour faciliter la prise en main des sites par les clients, mais en contrepartie, génèrent un volume de code qui peut effectivement donner le tournis et pour un pseudo-codeur comme moi, c'est la cécité totale garantie Smiley biggol

Pour le conteneur de l'image, bonne question !! Maintenant qu'on sait que seul le CSS ne permettra pas cette prouesse technologique, j'imagine que ce sera une div ajoutée dans le fichier "footer.php", celui qu'il faudra dupliquer dans le thème enfant.

Mais ce serait trop simple acar dans le thème, c'est footer.php qui appelle back-to-top.php et je ne pense pas que le thème enfant accepte les sous fichiers...

La petite lumière : le thème permet de désactiver le back to top, ce qui permettrait peut-être de greffer ensuite une solution complète...

Il y a toujours la solution de charger la bourrique avec un plugin dédié ce ce type https://fr.wordpress.org/plugins/to-top/ mais pas sûr qu'il prennent en charge l'animation de ma flèche.

Bref, je pense que je vais renoncer, j'ai un peu de scrupule à mobiliser autant de temps et d'énergie pour une petit caprice graphique Smiley rolleyes
Modérateur
goudurisc a écrit :
Bref, je pense que je vais renoncer, j'ai un peu de scrupule à mobiliser autant de temps et d'énergie pour une petit caprice graphique Smiley rolleyes


Sauf si c'est pour apprendre quelque chose d'utile pour tes futurs projets Smiley cligne
Note que c'est déjà en partie fait
Indiscutablement, cela pourrait me resservir mais à ce stade, je n'en vois tout à fait le bout, je ne sais toujours pas réaliser mon animation (qui est si simple à réaliser dans After Effects) et j'ai conscience que la config Wordpress+thème ne facilite pas le travail.

J'apprécie à sa juste valeur la patience de tous les contributeurs et notamment de parsimonhi pour réaliser un si petit grigri (merci à toi !) mais je ne veux pas trop vous faire perdre de temps.

Ok donc pour creuser un peu plus de mon côté mais ne ratez pas la préparation du sapin pour ça ; Smiley rolleyes
Bonjour,

Après réflexion, j'ai revu mes ambitions à la baisse et il ne s'agirait donc plus que de remplacer l'image back to top du thème (ex : page https://www.citedusilence.fr/) par ces deux images.

La première :
upload/1733407415-16785-back-to-top-link.png

Et en survol (même s'il n' y a pas de transition :
upload/1733407450-16785-back-to-top-hover.png

L'idée serait donc de remplacer les images du thème tout en exploitant sa fonctionnalité, je ne sais pas si c'est possible.

J'ai testé mais le résultat pas... top (comment supprimer le cercle...) :
    #to-top > i:first-of-type {
      color: #0000;
      background: url(https://www.citedusilence.fr/wp-content/uploads/2024/12/back-to-top-link.png);
    }
    #to-top > i:last-of-type {
      color: #0000;
      background: url(https://www.citedusilence.fr/wp-content/uploads/2024/12/back-to-top-hover.png);
    }
Modérateur
Bonjour,

Alors comme la maison ne recule devant aucun sacrifice, tu peux essayer de :
1) retirer les modifications que j'avais indiquées précédemment

2) ajouter les modifications ci-dessous :
body[data-button-style*="rounded"] #to-top i {
    display: none !important;
}
body[data-button-style*="rounded"] #to-top {
    box-shadow: none !important;
    background-color: transparent !important;
}
body[data-button-style*="rounded"] #to-top::before,
body[data-button-style*="rounded"] #to-top::after,
body[data-button-style*="rounded"] #to-top:hover::before,
body[data-button-style*="rounded"] #to-top:hover::after {
    opacity: 1 !important;
    width: 50% !important;
    height: 10% !important;
    background-color: #559cd2 !important;
    top: 45% !important;
    border-radius: 0 !important;
}
body[data-button-style*="rounded"] #to-top::after {
    left: 50% !important;
}
body[data-button-style*="rounded"] #to-top::before,
body[data-button-style*="rounded"] #to-top::after {
    transform: rotate(0deg) !important;
}
body[data-button-style*="rounded"] #to-top:hover::before {
    transform: translateX(20%) rotate(-45deg) !important;
}
body[data-button-style*="rounded"] #to-top:hover::after {
    transform: translateX(-20%) rotate(45deg) !important;
}

Les !important ne sont pas nécessaires partout, mais c'est assez difficile de tester quand on a juste que la page finale à disposition. Tu peux tester en en retirant certains.

Si je n'ai pas fait d'étourderies de copier-coller, ça devrait fonctionner sur la page https://www.citedusilence.fr/

EDIT: il faudrait aussi ajouter les lignes suivantes (pour être sûr que les transitions soient identiques sur les deux barres de la flèche) :
body[data-button-style*="rounded"] #to-top::before,
body[data-button-style*="rounded"] #to-top::after {
    transition: all 0.3s cubic-bezier(.55,0,.1,1) !important;
}


Amicalement,
Modifié par parsimonhi (06 Dec 2024 - 20:00)
Alors là, je suis sincèrement scotché, ça fonctionne parfaitement, c'est top ! Merci beaucoup ! J'avoue que je n'y croyais plus beaucoup Smiley lol

Sans trop abuser et pour se rapprocher du modèle original (https://preview.themeforest.net/item/arnold-lightweight-portfolio-photography-wp-theme/full_screen_preview/18935251),
je préfèrerais :
- bordure la plus fine possible soit 1px
- sans ombre
- augmenter la largeur
- la pointe qui monte plus haut

J'ai tenté de bricoler un peu mais pas de résultat convaincant, ... c'est là que je prends conscience de mon vrai niveau en CSS Smiley biggol
Modérateur
Bonjour,

goudurisc a écrit :
Alors là, je suis sincèrement scotché, ça fonctionne parfaitement, c'est top ! Merci beaucoup ! J'avoue que je n'y croyais plus beaucoup Smiley lol

Tu es de peu de foi ! Smiley lol

goudurisc a écrit :
Sans trop abuser et pour se rapprocher du modèle original (https://preview.themeforest.net/item/arnold-lightweight-portfolio-photography-wp-theme/full_screen_preview/18935251),
je préfèrerais :
- bordure la plus fine possible soit 1px
L'épaisseur du trait est donné par "height: 10%". Tu remplaces ça par "height: 1px" et tu auras un trait de 1px d'épaisseur.
goudurisc a écrit :
- sans ombre
Je ne vois pas d'ombre dans mon navigateur. Elle est où, cette ombre ?
goudurisc a écrit :
- augmenter la largeur
Là, c'est un peu plus "touchy". Il faut d'une part retirer le overflow: hidden qu'il y a sur le #to-top (on peut simplement ajouter overflow : visible). Il faut ensuite augmenter la largeur des traits (mettre par exemple width: 75% au lieu de width: 50%). Il faut enfin décaler le début du trait de gauche (si on a mis width: 75%, on peut le décaler de 25% avec un left: -25%).
goudurisc a écrit :
- la pointe qui monte plus haut
L'angle de la pointe est donné par les rotate(-45deg) et rotate(45deg). Au lieu d'un angle de 45 degrès, on peut par exemple mettre 60 degrès. Et dans ce cas, il faut aussi modifier la valeur de translateX pour que les deux côtés de la flèche se rejoignent au sommet de la flèche (mettre 25% au lieu de 20%).

Le code complet à ajouter devient (il remplace mes propositions précédentes) :
body[data-button-style*="rounded"] #to-top i {
	display: none !important;
}
body[data-button-style*="rounded"] #to-top {
	box-shadow: none !important;
	background-color: transparent !important;
	overflow: visible !important;
}
body[data-button-style*="rounded"] #to-top::before,
body[data-button-style*="rounded"] #to-top::after,
body[data-button-style*="rounded"] #to-top:hover::before,
body[data-button-style*="rounded"] #to-top:hover::after {
    opacity: 1 !important;
    width: 75% !important;
    height: 1px !important;
    background-color: #559cd2 !important;
    top: 45% !important;
    border-radius: 0 !important;
    transform: rotate(0deg) !important;
}
body[data-button-style*="rounded"] #to-top::before {
	left: -25% !important;
}
body[data-button-style*="rounded"] #to-top::after {
	left: 50% !important;
}
body[data-button-style*="rounded"] #to-top:hover::before {
	transform: translateX(25%) rotate(-60deg) !important;
}
body[data-button-style*="rounded"] #to-top:hover::after {
	transform: translateX(-25%) rotate(60deg) !important;
}
body[data-button-style*="rounded"] #to-top::before,
body[data-button-style*="rounded"] #to-top::after {
    transition: all 0.3s cubic-bezier(.55,0,.1,1) !important;
}

Amicalement,
upload/1733581554-16785-back-to-top-center.jpg Que dire ? C'est parfait !!!!!! A nouveau merci !!

Et pardonne-moi, je ne souhaite pas mettre tes nerfs à l'épreuve mais comme je me dis que cette formule fonctionne nickel et donc, que la partie la plus complexe est en place, peut-on pousser le curseur un peu plus loin avec une solution inédite à ma connaissance) soit :
- positionner le bouton au centre
- comme le bouton ne s'affichera pas en marge blanche mais sur du contenu, ajouter un rectangle de fond avec un forte opacité (Cf. réf de ma capture)
- et pour l'animation (ouille Smiley eek ) il faudrait qu le trait démarre au centre et que la flèche se crée en descendant, soit une transformation depuis le centre.

Bon après, à ce stade, je peux déjà cocher la demande comme "résolue" voire "super résolue" s'il y avait l"'option ! Ce que je ferai si la cerise sur le back to top devient trop complexe. upload/1733581610-16785-back-to-top-center.jpg
Modifié par goudurisc (07 Dec 2024 - 15:26)
Modérateur
Bonjour,
goudurisc a écrit :
- positionner le bouton au centre
OK
goudurisc a écrit :
- comme le bouton ne s'affichera pas en marge blanche mais sur du contenu, ajouter un rectangle de fond avec un forte opacité (Cf. réf de ma capture)
OK. Mais comme ton thème a une certaine complexité pour ce qui est de ce rectangle de fond (j'ai par exemple aperçu une classe #to-top.dark dans le css dont je n'ai pas trop cherché à savoir quand elle était en action), ce que j'ai proposé peut mal fonctionner dans certains cas. La couleur de ce rectangle est modifiable via la ligne background-color: #0001 !important; dans le code en bas de mon poste.

Sur fond blanc, ça donne un gris #eee et non pas #f6f6f6 comme tu le souhaitais. Je n'ai pas compris ce que voulait dire exactement ton "forte opacité". J'ai donc mis un noir avec une transparence qui conduit à ce #eee sur fond blanc. C'est modifiable facilement.
goudurisc a écrit :
- et pour l'animation (ouille Smiley eek ) il faudrait que le trait démarre au centre et que la flèche se crée en descendant, soit une transformation depuis le centre.
C'était déjà plus ou moins le cas il me semble. Mais effectivement, la flèche n'était pas tout à fait centrée verticalement car pour faire un centrage pile poil, il faut tenir compte de l'épaisseur des traits de la flèche qu'on a modifié en cours de route. La ligne qui modifie ça est top: calc(50% - var(--to-top-thickness) / 2) !important; dans le code en bas de mon poste. Le var(--to-top-thickness) / 2 correspond à la moitié de l'épaisseur des traits de la flèche. Si on modifie l'épaisseur de ces traits qui est actuellement de 2px, il faut aussi penser à modifier cette valeur de 1px. J'ai en conséquence mis la valeur de l'épaisseur des traits dans une variable css. C'est la ligne --to-top-thickness: 2px;. Et j'ai remplacé height: 2px !important; par height: var(--to-top-thickness) !important;. Comme ça, si on modifie l'épaisseur des traits, on n'a à le faire qu'en modifiant cette ligne.

J'ai par ailleurs agrandi un peu la longueur des traits de la flèche pour que celle-ci fasse à peu près la hauteur du rectangle de fond lorsqu'on fait hover dessus (précédemment, elle était sensiblement moins haute sur le rectangle de fond).

Nouveau code (remplace le précédent) :
body[data-button-style*="rounded"] #to-top i {
	display: none !important;
}
body[data-button-style*="rounded"] #to-top {
	box-shadow: none !important;
	overflow: visible !important;
	border-radius: 0 !important;
	border-left: 2rem solid #0000 !important;
	border-right: 2rem solid #0000 !important;
	left: 50% !important;
	transform: translate(-50%, -50%) !important;
	box-sizing: content-box !important;
}
body[data-button-style*="rounded"] #to-top,
body[data-button-style*="rounded"] #to-top.dark,
body[data-button-style*="rounded"] #to-top:hover,
body[data-button-style*="rounded"] #to-top.dark:hover {
	background-color: #0001 !important;
}
body[data-button-style*="rounded"] #to-top::before,
body[data-button-style*="rounded"] #to-top::after,
body[data-button-style*="rounded"] #to-top:hover::before,
body[data-button-style*="rounded"] #to-top:hover::after {
	--to-top-thickness: 2px;
	opacity: 1 !important;
	width: 100% !important;
	height: var(--to-top-thickness) !important;
	background-color: #009cff !important;
	top: calc(50% - var(--to-top-thickness) / 2) !important;
	border-radius: 0 !important;
	transform: rotate(0deg) !important;
}
body[data-button-style*="rounded"] #to-top::before {
	left: -49% !important;
}
body[data-button-style*="rounded"] #to-top::after {
	left: 49% !important;
}
body[data-button-style*="rounded"] #to-top:hover::before {
	transform: translateX(25%) rotate(-60deg) !important;
}
body[data-button-style*="rounded"] #to-top:hover::after {
	transform: translateX(-25%) rotate(60deg) !important;
}
body[data-button-style*="rounded"] #to-top::before,
body[data-button-style*="rounded"] #to-top::after {
	transition: all 0.3s cubic-bezier(.55,0,.1,1) !important;
}

Amicalement,
Ben là, toujours royal !! ça fonctionne magnifiquement bien aussi ! Du coup, je ne sais plus quelle complexité ajouter ! Smiley lol

J'ai quand même trouvé un tout petit truc, mon éditeur de code (Dreamweaver...) et à la ligne 30 (sur ma feuille), il signale un pb (en rouge)soit
--to-top-thickness: 2px;

Qui définit l'épaisseur de mon tiret a priori...
Dreamweaver n'aime pas le double tiret de départ mais sans lui, plus de flèche... ce n'est donc pas une erreur de saisie.
Cela dit, j'ai ouvert ce code dans Visual studio Code et tout à l'air ok, on peut donc imaginer que ça n'affectera pas le code qui suivra au moment du développement.

Pour le background, je suis passé en rgba pour peaufiner ma transparence et nickel aussi !!
background-color: rgba(0,0,0,0.15) !important;

Là on n'est pas loin d'avoir révolutionné le back to top ! Smiley biggol

upload/1733669032-16785-alerte-code.jpg
Modérateur
Bonjour,
goudurisc a écrit :
J'ai quand même trouvé un tout petit truc, mon éditeur de code (Dreamweaver...) et à la ligne 30 (sur ma feuille), il signale un pb (en rouge)soit
--to-top-thickness: 2px;

Qui définit l'épaisseur de mon tiret a priori...
Dreamweaver n'aime pas le double tiret de départ mais sans lui, plus de flèche... ce n'est donc pas une erreur de saisie.
Cela dit, j'ai ouvert ce code dans Visual studio Code et tout à l'air ok, on peut donc imaginer que ça n'affectera pas le code qui suivra au moment du développement.

What ??? tu as testé la validité de mon code avec Dreamweaver ??? Au moyen-âge, on t'aurait envoyé au bûcher direct !

Dreamweaver te met du rouge parce qu'il ne sait pas ce que c'est qu'une variable css. Et il a évidemment tort de mettre du rouge sur cette ligne.

Amicalement,
Oui, il est probable que Dreamweaver ait un lien de parenté pas si éloigné avec Lucifer mais j'avoue que je l'utilise depuis... toujours, peut-être pour avoir l'impression d'amortir ma suite Adobe Smiley rolleyes . Je crois surtout que mon niveau de code (je suis surtout graphiste) ne justifie pas que je paye en plus pour un outil de développement pro (et tout en un : code + client ftp) supplémentaire et je prends donc le risque de rencontrer ce type d'erreurs en toute connaissance de cause.
Et comme j'ai bien remarqué qu'Adobe tardait énormément à mettre à jour la partie code. de dreamweaver, ce qui est un peu aberrant, je me suis rassuré avec Visual Studio Code qui est quand même un tout petit peu plus fiable et qui n'a rien trouvé à redire à ton code.

Conclusion, le meilleur arbitre reste le résultat final et pour le coup, mille mercis pour ton incroyable aide, j'insiste, je n'imaginais pas repartir avec deux solutions back to top qui fonctionnent aussi bien !! Smiley biggrin

Amicalement, sans aucun doute Smiley cligne