Ik heb een div die breedte is 100%.
Ik zou graag een knop erin willen centreren, hoe kan ik dit doen?
<div style="width:100%; height:100%; border: 1px solid">
<button type="button">hello</button>
</div>
Antwoord 1, Autoriteit 100%
Bijgewerkt antwoord
Updaten omdat ik merkte dat het een actief antwoord is, maar Flexbox zou nu de juiste aanpak zijn.
Verticale en horizontale uitlijning.
#wrapper {
display: flex;
align-items: center;
justify-content: center;
}
gewoon horizontaal (zolang de hoofd-flex-as horizontaal is die standaard is)
#wrapper {
display: flex;
justify-content: center;
}
origineel antwoord met behulp van een vaste breedte en geen flexbox
Als de originele poster verticale en centrale uitlijning is, probeert u vrij eenvoudig voor vaste breedte en hoogte van de knop, het volgende
CSS
button{
height:20px;
width:100px;
margin: -20px -50px;
position:relative;
top:50%;
left:50%;
}
Voor alleen horizontale uitlijning gebruikt u
button{
margin: 0 auto;
}
of
div{
text-align:center;
}
Antwoord 2, autoriteit 32%
Je zou gewoon kunnen maken:
<div style="text-align: center; border: 1px solid">
<input type="button" value="button">
</div>
Antwoord 3, autoriteit 8%
et voila:
button {
width: 100px; // whatever your button's width
margin: 0 auto; // auto left/right margins
display: block;
}
Update: als OP zoekt naar horizontaal en verticaal centrum, dan is dit antwoordvoldoende het voor een element met een vaste breedte/hoogte.
Antwoord 4, autoriteit 2%
Marge: 0 automatisch; is het juiste antwoord voor alleen horizontaal centreren.
Voor het centreren van beide kanten werkt zoiets als dit, met behulp van jQuery:
var cenBtn = function() {
var W = $(window).width();
var H = $(window).height();
var BtnW = insert button width;
var BtnH = insert button height;
var LeftOff = (W / 2) - (BtnW / 2);
var TopOff = (H / 2) - (BtnH /2);
$("#buttonID").css({left: LeftOff, top: TopOff});
};
$(window).bind("load, resize", cenBtn);
Update … vijf jaar laterzou men flexbox op het bovenliggende DIV-element kunnen gebruiken om de knop gemakkelijk zowel horizontaal als verticaal te centreren.
Inclusief alle browser-voorvoegsels, voor de beste ondersteuning
div {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align : center;
-moz-box-align : center;
-ms-flex-align : center;
-webkit-align-items : center;
align-items : center ;
justify-content : center;
-webkit-justify-content : center;
-webkit-box-pack : center;
-moz-box-pack : center;
-ms-flex-pack : center;
}
Antwoord 5, autoriteit 2%
Met de beperkte details die worden verstrekt, ga ik uit van de meest eenvoudige situatie en zeg ik dat je text-align: center
kunt gebruiken:
Antwoord 6, autoriteit 2%
Flexbox gebruiken
.Center {
display: flex;
align-items: center;
justify-content: center;
}
En dan de klas aan je knop toevoegen.
<button class="Center">Demo</button>
Antwoord 7, autoriteit 2%
Je moet het simpel houden:
eerst heb je de beginpositie van je tekst of knop :
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2> Simple Text </h2>
<div>
<button> Simple Button </button>
</div>
</div>
Door deze CSS-coderegel toe te voegen aan de h2-tag of aan de div-tag die de button-tag bevat
style:” text-align:center; ”
Eindelijk De resultaatcode zal zijn:
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2 style="text-align:center;"> Simple Text </h2> <!-- <<--- here the changes -->
<div style="text-align:center"> <!-- <<--- here the changes -->
<button> Simple Button </button>
</div>
</div>
Antwoord 8
Om een <button type = "button">
zowel verticaal als horizontaal te centreren binnen een <div>
waarvan de breedte dynamisch wordt berekend, zoals in uw geval, dit is wat je moet doen:
- Stel
text-align: center;
in op de terugloop<div>
: hierdoor wordt de knop gecentreerd wanneer u de grootte van de<div>
(of liever het venster) -
Voor de verticale uitlijning moet je
margin: valuepx;
instellen voor de knop. Dit is de regel voor het berekenen vanvaluepx
:valuepx = (wrappingDIVheight - buttonHeight)/2
Hier is een JS Bin-demo.
Antwoord 9
kwam dit over en dacht dat ik de oplossing die ik ook gebruikte, die het gebruik van line-height
en text-align: center
gebruikt om zowel verticaal als horizontaal te gebruiken Centreren:
klik hier voor werken jsfiddle
Antwoord 10
Super eenvoudig antwoord dat op de meeste gevallen van toepassing is, is om gewoon de marge in te stellen op 0 auto
en het display instellen op block
. Je kunt zien hoe ik mijn knop gecentreerd in mijn demo op Codepen
Antwoord 11
DIVPPOSING DIV IS #DIV EN KNOP IS #BUTTON:
#div {
display: table-cell;
width: 100%;
height: 100%;
text-align: center;
vertical-align: center;
}
#button {}
Nest vervolgens de knop in div zoals gewoonlijk.
Antwoord 12
Het gemakkelijkst is het invoeren als een “div” geven het een “marge: 0 auto”, maar als u wilt dat het gecentreerd is, moet u het een breedte geven
Div{
Margin: 0 auto ;
Width: 100px ;
}
Antwoord 13
Reagerende CSS-optie om een knop verticaal en horizontaal te centreren zonder zich bezig te houden met ouderelementgrootte (met behulp van gegevenskenmerkhaken voor duidelijkheid en scheidingsproblemen) :
HTML
<div data-element="card">
<div data-container="button"><button>CTA...</button></div>
</div>
CSS
[data-container="button"] {
position: absolute;
top: 50%;
text-align: center;
width: 100%;
}
Fiddle: https://jsfiddle.net/crrollyson/zebo1z8f/
Antwoord 14
responsieve manier om uw knop in een div te centreren:
<div
style="display: flex;
align-items: center;
justify-content: center;
margin-bottom: 2rem;">
<button type="button" style="height: 10%; width: 20%;">hello</button>
</div>
Antwoord 15
div {
text-align : center;
}
button {
width: 50%;
margin: 1rem auto;
}
<div style="width:100%; height:100%; border: 1px solid">
<button type="button">hello</button>
</div>