Solution 1 :
nothing much need to change. Only need to add few bootstrap classes.
I have added three class as below mention –
d-flex – for flexbox
align-items-center – for vertical center
justify-content-center – for horizontal center
<div class="col-4 col-sm-4 col-md-2 col-lg-1 col-xl-4 mb-1 mainDiv
d-flex align-items-center justify-content-center">
also remove mt-5
class from child div
Solution 2 :
Working Example,
.mainDiv {
background-color: lightgreen !important;
height: 300px
}
.testclass {
border: 4px solid #727272 !important;
border-radius: 50% !important;
box-sizing: border-box;
background-color: red;
}
.mt1-5{
margin-top: 100px;
text-align: center;
}
<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<style>
</style>
</head>
<body>
<div class="row">
<div class="col-4 col-sm-4 col-md-2 col-lg-1 col-xl-4 mb-1 mainDiv">
<div class="mt1-5">
<button class="btn testclass">
<div class="showDot">top</div>
<div class="someText">Middle</div>
</button>
</div>
</div>
</div>
</body>
Add this ,
.mt-5{
margin-top: 100px;
text-align: center;
}
Remove margin-top: 3rem !important in .mt-5 class or make a new class.
Solution 3 :
I assume that you want to align a button to be in center of a div
If Yes,
Then, you just need to add this in .testclass
.testclass {
border: 4px solid #727272 !important;
border-radius: 50% !important;
box-sizing: border-box;
background-color: red;
position: absolute;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
Working example:
https://codepen.io/fasid/pen/bGwKvdy
What i want to do is to align that circular button at the bottom center of that container, which will be in center for every size (responsive)
try changing above top: 40%
to top: 90%
Solution 4 :
You have to do two things:
First:
class="d-flex justify-content-center"
You should place this in the class where is the mainDiv
.
This should move your element to the center of the page.
Second:
class="d-flex align-items-end"
You should place this in the class where is the mainDiv
.
This should move your element to the bottom of the page.
Remember, d-flex
is only needed one time in each element class.
So in the end you should write in the element called mainDiv
class="d-flex justify-content-center align-items-end"
Solution 5 :
Try to do this next thing in your html.
On the parent element insert this.
<div class="col-4 col-sm-4 col-md-2 col-lg-1 col-xl-4 mb-1 mainDiv" style="display: table;text-align: center;">
and on the child element insert this.
<div class="" style=" display: table-cell;vertical-align: bottom;">
I have tried with the snippet you provided and it works like a charm.
Problem :
I have a div inside which I am trying to put a button, which should be responsive.
placing button inside is working fine but the issue is it is not responsive as the div changes its size accordingly.
<div className="mainDiv row">
<div className="col-12 col-sm-12 col-md-3 col-lg-4 col-xl-4 mb-4">
<div className="mt-5">
<button className="btn testclass">
<div className="showDot">top</div>
<div className="someText">Middle</div>
</button>
</div>
</div>
</div>
My Css
.testclass {
border: 4px solid #727272 !important;
border-radius: 50% !important;
box-sizing: border-box;
background-color: red;
}
Working example
.mainDiv {
background-color: lightgreen !important;
height: 300px
}
.testclass {
border: 4px solid #727272 !important;
border-radius: 50% !important;
box-sizing: border-box;
background-color: red;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<div class="row">
<div class="col-4 col-sm-4 col-md-2 col-lg-1 col-xl-4 mb-1 mainDiv">
<div class="mt-5">
<button class="btn testclass">
<div class="showDot">top</div>
<div class="someText">Middle</div>
</button>
</div>
</div>
</div>
What i want to do is to align that circular button at the bottom center of that container, which will be in center for every size (responsive)
Comments
Comment posted by vivek singh
could you help me with small snippet ? for both
Comment posted by Santiago Torrabadella
It works for me, make sure you have called bootstrap-4 correctly
Comment posted by Santiago Torrabadella
The element doesn’t move at all or ir does crazy things?
Comment posted by vivek singh
It dosen’t move, a small snippet can help
Comment posted by Santiago Torrabadella
Substitute className=”mainDiv row” for className=”mainDiv row d-flex justify-content-center align-items-end”