In this beginner level HTML and CSS, we will create user profile card.
I think this is a good tutorial to practice CSS positioning and Flexbox.
Let’s look at the intended layout of profile card.

Here we have circular image. It is horizontally centered and vertically positioned about 1/4 of the height of the card.
[ We will use CSS position property to position circular image. ]
Then we have main text underneath the image. And 3 more texts in 3 column layout below the main text.
[ We will use Flebox for 3 column layout ]
HTML
<div class="profile">
<img src="simpson.jpg" alt="">
<div class="profile-content">
<h1>Homer Simpson</h1>
<p class="content-p">Springfield</p>
<div class="divider"></div>
<div class="profile-stats">
<div class="follower">
<h3>890k</h3>
<p>Followers</p>
</div>
<div class="likes">
<h3>2.3m</h3>
<p>Likes</p>
</div>
<div class="post">
<h3>3k</h3>
<p>Posts</p>
</div>
</div><!-- End of Profile Stats-->
</div><!-- End of Profile Content-->
</div><!-- End of Profile DIV-->CSS
html{
box-sizing: border-box;
}
*, *::before, *::after{
box-sizing: inherit;
}
body{
margin: 0;
padding: 0;
background: rgb(238, 235, 235);
font-family: Arial, Helvetica, sans-serif;
}Now let’s give width and height to profile card and position it horizontally.
I got box-shadow property value from https://box-shadow.dev/
.profile{
width: 400px;
height: 400px;
margin: 200px auto;
border-radius: 15px;
background: #F9C555;
box-shadow: 0px 10px 15px -3px rgba(0,0,0,0.1);
position: relative;
}Now let’s style and position the image as discussed above.
.profile img{
width: 125px;
height: 125px;
border-radius: 50%;
border: 2px solid #fff;
position: absolute;
top: 25%;
left: 50%;
transform: translate(-50%, -25%);
z-index: 1;
}Next let’s position and style profile-content.
.profile-content{
width: 100%;
height: 65%;
background: #fff;
padding: 15px;
position: absolute;
bottom: 0;
border-bottom-left-radius: 15px;
border-bottom-right-radius: 15px;
}Also let’s style profile-content text and divider.
.profile h1{
text-align: center;
margin-top: 60px;
margin-bottom: 0;
}
.content-p{
text-align: center;
color: #ccc;
}
.divider{
border:1px solid #ccc;
}Finally let’s place bottom texts in 3 column layout with Flexbox. And also style those texts.
.profile-stats{
width: 80%;
margin: 0 auto;
display: flex;
justify-content: space-between;
}
.profile-stats h3{
margin-bottom: 0;
}
.profile-stats p{
color: #ccc;
}Complete CSS Code
html{
box-sizing: border-box;
}
*, *::before, *::after{
box-sizing: inherit;
}
body{
margin: 0;
padding: 0;
background: rgb(238, 235, 235);
font-family: Arial, Helvetica, sans-serif;
}
.profile{
width: 400px;
height: 400px;
margin: 200px auto;
border-radius: 15px;
background: #F9C555;
box-shadow: 0px 10px 15px -3px rgba(0,0,0,0.1);
position: relative;
}
.profile img{
width: 125px;
height: 125px;
border-radius: 50%;
border: 2px solid #fff;
position: absolute;
top: 25%;
left: 50%;
transform: translate(-50%, -25%);
z-index: 1;
}
.profile-content{
width: 100%;
height: 65%;
background: #fff;
padding: 15px;
position: absolute;
bottom: 0;
border-bottom-left-radius: 15px;
border-bottom-right-radius: 15px;
}
.profile h1{
text-align: center;
margin-top: 60px;
margin-bottom: 0;
}
.content-p{
text-align: center;
color: #ccc;
}
.divider{
border:1px solid #ccc;
}
.profile-stats{
width: 80%;
margin: 0 auto;
display: flex;
justify-content: space-between;
}
.profile-stats h3{
margin-bottom: 0;
}
.profile-stats p{
color: #ccc;
} Final Output

