Vertically align elements to match the adjacent elements middle line [duplicate] - html

This question already has answers here:
How do I vertically center text with CSS? [duplicate]
(37 answers)
How can I vertically align elements in a div?
(28 answers)
How to align a <div> to the middle (horizontally/width) of the page [duplicate]
(27 answers)
How to vertical align an inline-block in a line of text?
(2 answers)
Closed 4 years ago.
I have a button a div and a span adjacent to each other in a line
I need all of them to appear vertically aligned to the center like this
below is my code
button{
height: 50px;
}
div{
display: inline-block;
height: 70px;
border: 2px solid black;
padding: 10px;
}
h1{
display: inline-block;
}
<div></div>
<button>Button</button>
<span>Span</span>
<div>div</div>

I would suggest using flex for in this instance.
If you wrap a container around your elements, you can align the child elements to the center. See the snippet for an example.
button{
height: 50px;
}
.container div{
display: inline-block;
height: 70px;
border: 2px solid black;
padding: 10px;
}
h1{
display: inline-block;
}
.container {
display:flex;
align-items:center;
}
<div class="container"><div></div>
<button>Button</button>
<span>Span</span>
<div>div</div>
</div>
I hope this helps.

If you introduce a parent element you can use flexbox:
.wrapper {
display: flex;
align-items: center; /* vertical center */
justify-content: center; /* horizontal center */
border: 1px solid red;
}
button {
height: 50px;
}
.wrapper>div {
display: inline-block;
height: 70px;
border: 2px solid black;
padding: 10px;
}
h1 {
display: inline-block;
}
<div class="wrapper">
<div></div>
<button>Button</button>
<span>Span</span>
<div>div</div>
</div>

Related

Centring an element above another element [duplicate]

This question already has answers here:
Flexbox: center horizontally and vertically
(14 answers)
How can I horizontally center an element?
(133 answers)
How to align text below an image in CSS?
(7 answers)
Closed last year.
struggling to centre my icon above the text, the height of the icon is fine but it should sit like so:
tried using flex but couldn't find the correct solution.
.container {
display: block;
width: 400px;
height: 100px;
border: 2px solid black;
}
.icon {
width: 30px;
height: 30px;
background-color: red;
}
.text {
text-align: center;
}
<div class="container">
<div class="icon"></div>
<p class="text">We couldn't find any matches to your search. <br></br>Please try again.</p>
</div>
You can use CSS flexbox: but remember that the default direction is row. If you switch it to flex-direction: column, then you will achieve what you want:
.container {
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
width: 400px;
height: 100px;
border: 2px solid black;
}
.icon {
width: 30px;
height: 30px;
background-color: red;
}
.text {
text-align: center;
}
<div class="container">
<div class="icon"></div>
<p class="text">We couldn't find any matches to your search. <br />Please try again.</p>
</div>

Text in div not going to middle of div [duplicate]

This question already has answers here:
How to center an element horizontally and vertically
(27 answers)
How do I vertically center text with CSS? [duplicate]
(37 answers)
Flexbox: center horizontally and vertically
(14 answers)
Closed 3 years ago.
I am looking for some direction or best practice with working with text. I am trying to build a bubble that holds a image and then a name in a small area. I would like the text to be centered. what strategy would you use? I seem to always have issues when working with text
body {
background: black;
}
.oval {
width: 150px;
height: 50px;
border: 2px solid white;
border-radius: 500px;
color: white;
margin-top: 200px;
display: flex;
align-items: center;
}
.oval>#us_flag {
background: url('https://res.cloudinary.com/mikebeers/image/upload/v1552151059/us_zsvoel.png');
background-size: cover;
background-position: center center;
height: 100%;
width: 100%;
overflow: hidden;
border-top-left-radius: 500px;
border-bottom-left-radius: 500px;
/* border: 2px solid red; */
max-height: 50px;
}
.oval>#text {
border: 2px solid red;
font-size: .9em;
line-height: 2em;
padding: 0;
display: flex;
align-content: center;
height: 100%;
}
#text>p {
/* border: 1px solid green; */
word-break: keep-all;
padding: 0;
}
<div class="container-fluid">
<div class="row oval">
<div class="col-4" id="us_flag">
</div>
<div class="col-8" id='text'>
<p>United States</p>
</div>
</div>
</div>
If you want to center your text vertically and horizontally in a box, you can use flexbox. Add these styles to your box
display: flex;
justify-content: center;
align-items: center;
If you want to learn more about flexbox, there is a good guide for it: https://css-tricks.com/snippets/css/a-guide-to-flexbox/

HTML/CSS: Center content both horizontally and vertically [duplicate]

This question already has answers here:
How to center an element horizontally and vertically
(27 answers)
How can I horizontally center an element?
(133 answers)
How can I vertically center a div element for all browsers using CSS?
(48 answers)
Flexbox: center horizontally and vertically
(14 answers)
Closed 4 years ago.
I want to center my content both vertically and horizontally in the page. I couldn't seem to get it working. Anyone here can help?
Thanks.
<style type = "text/css">
#loginMenu {
border:5px solid green;
padding:10px 10px 10px 10px;
background-color:#FF9;
display: table;
position: absolute;
text-align:center;
height: 200px;
width: 400px;
}
.centrediv
{
margin: auto;
vertical-align:middle;
}
</style>
<div id="loginMenu"></div>
Flexbox does this the best. Example:
<div class="Aligner">
<div class="Aligner-item">…</div>
</div>
.Aligner {
display: flex;
align-items: center;
justify-content: center;
}
.Aligner-item {
max-width:50%;
}
You should use flexbox as it serves your need with ease. Have a look of the snippet:
<!-- HTML -->
<body>
<div></div>
</body>
<!-- CSS -->
body{
display: flex;
vertical-align: middle;
height: 100vh;
width: 100%;
justify-content: center;
align-items: center;
box-sizing: border-box;
margin: 0px;
}
div{
height: 100px;
width: 100px;
background-color: #f00;
margin-top: -50px;
}
Based on a page from W3Schools
.centrediv
{
padding: 100px 0;
text-align: center;
}

How do I align a div to the top when flex-direction is column? [duplicate]

This question already has answers here:
Center and bottom-align flex items
(3 answers)
Closed 4 years ago.
I have two div tags in a container. I want to use flex box and align the first div tag to the top and the other be centered relative to the container. How can I do this?
Using align-items: flex-start only moves it to the left when flex-direction is column. What is the equivalent css to move it to the top?
codepen: https://codepen.io/GMSg68/pen/aGpOpG
.box {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 500px;
border: 1px solid blue;
}
.box div {
width: 100px;
height: 100px;
border: 1px solid darkgray;
}
.box div:nth-child(1) {
/* How do I push the first div tag to the top? */
background-color: lightgray;
}
.box div:nth-child(2) {
background-color: lightblue;
}
<div class="box">
<div>One</div>
<div>Two</div>
</div>
Add margin top and bottom auto to the nth-child(2) div. Then add a Y transform of -50% to align it to the centre. This assumes the two divs are the same height.
.box div:nth-child(2){
background-color: lightblue;
margin-top: auto;
margin-bottom: auto;
transform: translateY(-50%);
}

Trying to vertically align <img> and <p>, however, margin and padding do nothing when applied [duplicate]

This question already has answers here:
Vertically align text next to an image?
(26 answers)
How can I vertically align elements in a div?
(28 answers)
How to vertically align text inside a flexbox?
(13 answers)
Closed 4 years ago.
I'm just trying to vertically align the image and the text so that the text is between the top and bottom side of the image ( the image's height is bigger than the text's ) but applying margin/padding to the <p> class does nothing.
.navUsernameP {
display: inline;
color: #fff;
text-align: center;
text-decoration: none;
white-space: nowrap;
margin-bottom: 10px;
}
.navUsernameLi {
float: right;
margin-top: 10px;
}
.navProfilePicture {
display: inline;
border-radius: 50px;
vertical-align: inherit;
height: 24px;
width: 24px;
}
<li class='navUsernameLi'>
<img class='navProfilePicture' src='image.jpg'>
<p class='navUsernameP'>Username</p>
</li>
Ah, vertical alignment. Bane of the web developer. I would suggest using Flexbox to align the items like so:
.container {
display: flex;
flex-flow: row nowrap;
justify-content: flex-start;
align-items: center;
align-content: center;
}
.image {
flex: 0 1 auto;
width: 50px;
height: 50px;
background: red;
}
.username {
flex: 0 1 auto;
}
<div class="container">
<img class="image" src="image.png"/>
<p class="username">Username</p>
</div>