Capsule de forme à l'aide de border-radius sans un ensemble de largeur ou de la hauteur?
Est-il possible de faire une capsule de forme à l'aide de border-radius sans un ensemble de largeur ou de la hauteur?
Je veux les côtés gauche et droit pour être complètement arrondis tandis que la capsule resterait tout droit le long de sa longueur horizontale. Réglage d'un rayon de 50% ne semble pas donner l'effet souhaité.
- Vous pourriez faire l'souhaité mathématiques à l'aide d'un langage côté serveur ou de javascript et de générer de manière appropriée à partir de là.
- C'est une option. Juste semble exagéré quelque chose de tellement de présentation. Je suis à la recherche de l'utiliser pour les boutons, donc je pourrais être capable de faire progresser l'utilisation de ems.
- Cette question explique comment cela fonctionne : stackoverflow.com/questions/29966499/...
- A-t-elle à utiliser border-radius? Vous pourriez aussi le faire avec les 3 propriétés de l'arrière (2 radiale-pentes pour les extrémités)
Vous devez vous connecter pour publier un commentaire.
L'application d'un très grand rayon des frontières semble fonctionner sur la plupart des navigateurs (IE9+, FF, Chrome), comme ce mod de David violon http://jsfiddle.net/cthQW/1/
Oui, c'est possible (bien que je ne l'ai testé en Chrome 28/Ubuntu 12.10):
JS Fiddle démo.
L'information importante est, de toute évidence, la
20%/50%
de valeur de propriété; la20%
est "horizontal de la longueur du rayon, alors que la50%
est la "longueur verticale'; à l'aide de deux mesures donne une courbe elliptique à la frontière, au lieu d'une seule mesure, ce qui donne le plus d'circulaire de rayon. Cela nécessite évidemment une certaine quantité de l'ajustement de vos propres besoinsRéférences:
border-radius
(à Mozilla Developer Network).border-radius
(que le contenu n'est pas nécessairement "contenu" à l'intérieur de la frontière de la courbe. À l'aide depadding
peut aider, bien; Ou un élément enfant, avec unmargin
.C'est ce que j'ai trouvé de bien travailler:
border-radius: 50vh;
Prise en charge du navigateur semble bon pour que maintenant.
À expliquer, le
vh
est une "Fenêtre d'affichage de l'Unité" qui calcule la hauteur de la fenêtre en pixels. En disant50vh
de déclarer le rayon des frontières, il est50% * (Viewport Height)px
.1000vh
est plus susceptibles de travailler pour les plus grands éléments.50
.Si vous utiliser des pourcentages, il faut de l'élément de largeur pour calculer le rayon. Pour avoir la capsule en forme de l'élément, vous devez passer à la
border-radius
propriété des unités comme rem ou px (ni je sais la raison pour cela, mais il fonctionne). C'est pourquoi il fonctionne lors du passage de 500px. Vous pouvez utiliser la même valeur pourline-height
etborder-radius
propriétés si vous le souhaitez.Ici vous avez un exemple dans CodePen. Essayez de changer la variable
$label-height
pour voir comment la forme est maintenue tandis que la hauteur du bouton change.Dans cet exemple, vous n'avez pas besoin de définir la largeur ou la hauteur de l'élément. Vous avez juste besoin d'ajuster le contenu du
height
etpadding
.La propriété padding est utile d'établir une séparation entre le contenu et le composant de la frontière. Voir à quoi il ressemble si j'ai seulement mis le padding à gauche.
Si vous définissez la
line-height
propriété du conteneur, vous allez définir automatiquement la hauteur du conteneur, et de centrer le contenu à l'intérieur du conteneur dans le même temps.Si vous souhaitez définir la largeur du composant contenu de la largeur, vous pouvez définir la propriété d'affichage à
inline-block
, et l'utilisation FlexBox pour les organiser dans une colonne, par exemple. Et puis, définissez les marges gauche et droite pour auto, pour éviter l'élément de croître à son parent largeur.Et si vous voulez laisser un espace entre les composants, vous pouvez définir la
margin-top
de propriété entre deux composants.Espère que cela aide 🙂
Ceci peut être facilement réalisé à l'aide Span HTML. Vous avez juste à définir la couleur d'arrière-plan et border-radius.
CSS:
HTML: