28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous.

Je voudrais réaliser un bouton ayant le même aspect que ce que l'on obtient avec la fonction : Filtres/Décor, Ajouter un biseau, dans Gimp depuis un rectangle de fond #FFBE80.

http://img11.hostingpics.net/pics/467645action.png

L'intérêt est d'éviter de charger une image générique, et de pouvoir uniformiser les différentes dimensions et de faire varier facilement le texte qui sera contenu dedans.


<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<title>Bouton</title>
<style>
.bouton{
		background-color: #FFBE80; /* Vieux navigateur */
	/* IE9 SVG, ajouter une annulation de 'filter' avec 'none' */
	background-color: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+CiAgPHJhZGlhbEdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iNzUlIj4KICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNlYWI5MmQiIHN0b3Atb3BhY2l0eT0iMSIvPgogICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYzc5ODEwIiBzdG9wLW9wYWNpdHk9IjEiLz4KICA8L3JhZGlhbEdyYWRpZW50PgogIDxyZWN0IHg9Ii01MCIgeT0iLTUwIiB3aWR0aD0iMTAxIiBoZWlnaHQ9IjEwMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
	background-color: -moz-radial-gradient(center, ellipse cover,  #FFBE80 0%, #c79810 100%); /* FF3.6+ */
	background-color: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#FFBE80), color-stop(100%,#c79810)); /* Chrome,Safari4+ */
	background-color: -webkit-radial-gradient(center, ellipse cover,  #FFBE80 0%,#c79810 100%); /* Chrome10+,Safari5.1+ */
	background-color: -o-radial-gradient(center, ellipse cover,  #FFBE80 0%,#c79810 100%); /* Opera 12+ */
	background-color: -ms-radial-gradient(center, ellipse cover,  #FFBE80 0%,#c79810 100%); /* IE10+ */
	background-color: radial-gradient(ellipse at center,  #FFBE80 0%,#c79810 100%); /* W3C */
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFBE80', endColorstr='#c79810',GradientType=1 ); /* IE6-8 retourne un dégradé horizontal */
	width: 150px;
	outline: 5px outset #FFBE80;
}
.ridge{
	outline: 2px ridge green;
}
</style>
<!--[if gte IE 9]>
<style>
.gradient {
	filter: none;
}
</style>
<![endif]-->
</head>
<body>
	<h2 class="bouton ridge">Texte de la balise h2</h2>
	<p class="bouton gradient">Texte de la balise p</p>
</body>
</html>


Je n'arrive pas à réaliser le CSS. Merci pour votre aide.
Modifié par Pyanepsion (28 Jul 2012 - 15:34)
Salut, moi j'aime bien les choses simples Smiley smile

Le CSS3 n'en fesant toujours pas parti, je vais te conseiller d'oublier les effets gradient et de faire soit :
- quatre bordures de couleur différente d'autant de pixel que le biseau recherché (effet approchant mais code irréprochable)
- d'utiliser des png 24bit transparents pour tes biseaux (effet recherché, code un peu plus lourd)
- d'utiliser la propriété css3 inner-shadow (effet recherché, code légèrement plus lourd mais non cross browser)
le border-image en css3 est pas mal non plus : http://border-image.com/

:)

.btn-gimp {
border-width: 5px 5px 6px 6px;

-moz-border-image: url(http://img11.hostingpics.net/pics/467645action.png) 5 5 6 6 repeat;

-webkit-border-image: url(http://img11.hostingpics.net/pics/467645action.png) 5 5 6 6 repeat;

-o-border-image: url(http://img11.hostingpics.net/pics/467645action.png) 5 5 6 6 repeat;

border-image: url(http://img11.hostingpics.net/pics/467645action.png) 5 5 6 6 fill repeat;
}

Modifié par gc-nomade (30 Jul 2012 - 21:44)
Merci GC-Nomade. C'est exactement ce que je cherchais pour les bordures. Reste maintenant à réaliser un arrondi pour le reste du bouton.
Edit : border-image ne fonctionne pas sur Internet explorer 9.

@prophete en chef : contrairement aux apparences, l'image s'avère plus compliquée. Il faut en effet réaliser une image par bouton, et chaque image prend du temps de chargement. Un CSS va beaucoup plus vite.
Modifié par Pyanepsion (31 Jul 2012 - 09:07)
La solution border-image est pas mal, si elle te convient pas à cause d'ie 9, je ne peux que te reproposer ces idées qui sont cross-browser, sauf peut-être la dernière.


	<p class="borderway"><span>Texte de la balise p</span></p>
	<p class="pngway"><span><span><span><span><span><span><span>Texte de la balise p</span></span></span></span></span></span></span></p>
	<p class="innershadowway">Texte de la balise p</p>


.borderway {
	background-color: #febd7f;
	border: 2px solid #fff4a4;
	border-left-color: #ffcc89;
	border-right-color: #a67c53;
	border-bottom-color: #8c6846;
}
.borderway span {
	display:block;
	border: 2px solid #ffdf96;
	border-left-color: #ffd992;
	border-right-color: #eaae75;
	border-bottom-color: #e2a871;
}


.pngway {background:url(./topborder.png) repeat-x top center #febd7f;}
.pngway span {
	display:block;
	background:url(./topleftborder.png) no-repeat top left transparent;
}
.pngway span span {
	padding: 5px 0 0 0;
	background:url(./toprightborder.png) no-repeat top right;
}
.pngway span span span {
	padding:0;
	background:url(./leftborder.png) repeat-y top left;
}
.pngway span span span span {background:url(./rightborder.png) repeat-y top right;}
.pngway span span span span span {background:url(./bottomborder.png) repeat-x bottom center;}
.pngway span span span span span span {background:url(./bottomrightborder.png) no-repeat bottom right;}
.pngway span span span span span span span {
	padding:0 5px 5px 5px; /*pour centrer le texte*/
	background:url(./bottomleftborder.png) no-repeat bottom left;
}


.innershadowway {
	background-color: #febd7f;
	box-shadow: inset -2px -2px 2px 0px #be8e5f, inset 2px 2px 2px 2px #fff4a4;
	-moz-box-shadow:inset -2px -2px 2px 0px #be8e5f, inset 2px 2px 2px 2px #fff4a4;
	-webkit-box-shadow:inset -2px -2px 2px 0px #be8e5f, inset 2px 2px 2px 2px #fff4a4;
	padding:2px 5px;
}


Ca donne ça :
upload/45683-Capturedec.png

[EDIT]Oublie des version moz et webkit.[/EDIT]
Modifié par prophete en chef (31 Jul 2012 - 14:33)
Note que la version PNG (.pngway) est pensée pour être extensible en hauteur et en largeur, mais si tu ne veux qu'elle ne soit extensible qu'en largeur le code est beaucoup plus court, le bord gauche, le dégradé de fond en repeat-x et le bord droit, deux span suffisent.
Merci prophete en chef. Smiley biggrin

J'ai finalement utilisé la version borderway pour être compatible avec tous les navigateurs.
On peut voir le résultat sur corrigeur.fr.