「青训营 X 码上掘金」制作一个自适应屏幕的个人名片

96 阅读5分钟

「青训营 X 码上掘金」制作一个自适应屏幕的个人名片

当青训营遇上码上掘金

此文章参加青训营码上掘金活动

简介

在日常生活中,名片通常作为人际交往中让对方迅速了解我们的一种手段,作为一名前端开发人员,自然使用代码制作名片向对方介绍自己更为妥当。

名片成品展示(图片引入其他在线图片,可能加载需要一定时间):

那么一个名片,起码要符合以下几个条件

1.美观性

前端开发中,还原设计图是每个前端从业人员的基本技能,做出的前端界面简洁美观与否也是评判一名前端工程师的重要标准,往往一个较为美观的名片会更吸引其他人的注意。

2.简洁性

一个名片应该尽可能的简介,只需要突出你想让对方了解到的信息。

3.自适应

代码名片有一个问题,那就是对方可能使用pc,手机,平板等各种设备查看你的名片,所以我们的代码应该能够适应不同尺寸的屏幕,使得无论对面屏幕什么尺寸,都能够正常查看我们的名片,这个时候就需要用到媒体查询了。

具体思路

HTML

之前说到,我们的名片要尽可能的简介,因此名片的html结构不应该包含太多内容,这里我的HTML结构仅仅包含一张图片,名片的日期,标题,和介绍自己的文本,以及一个链接,以便对方查看你的主页。

<div class="card-box">
        <div class="card-box-inner">
            <div class="inner-img">
                <img src="https://source.unsplash.com/LJ9KY8pIH3E" alt="">
            </div>
            <div class="card-content">
                <span class="card-content-data">
                    14 February 2023
                </span>
                <div class="card-content-title">
                    Introduce Myself
                </div>
                <div class="card-content-text">
                    My name is Chang Feng. At present, I am studying and hope to be engaged in the position of front-end
                    development engineer. I participated in the ByteDance Youth Training Camp this holiday, which
                    enriched and consolidated my front-end knowledge and benefited me greatly.
                </div>
                <a href="#" class="card-button">Read Me</a>
            </div>
        </div>
    </div>

美观性---css

我们的名片要尽可能的美观,因此我们的css代码要尽可能使用色调相同的颜色,给body添加适合的背景颜色,并且给dom添加合适的圆角,以增添美观性。 同时,我们的代码也应该具有简介优雅的特性,因此在布局中我们会使用到flex布局,因为一张名片很显然是一个二维结构,这种布局可以使我们相对容易的定义名片的布局。

body {
    background-color: #7e71f3;
    background-image: linear-gradient(147deg, #7e71f3 0%, #8bb5f3 74%);
    min-height: 100vh;
    font-family: "Fira Sans", sans-serif;
    display: flex;
}

.card-box {
    width: 95%;
    position: relative;
    max-width: 800px;
    margin: auto;
    background: #fff;
    box-shadow: 0px 14px 80px rgba(34, 35, 58, 0.2);
    padding: 25px;
    border-radius: 25px;
    height: 400px;
    transition: all 0.3s;
}

.card-box-inner {
    position: relative;
    width: 100%;
    height: 100%;
    z-index: 1;
    display: flex;
    transition-property: transform;
    box-sizing: content-box;
    display: flex;
    align-items: center;
}

.inner-img {
    width: 300px;
    flex-shrink: 0;
    height: 300px;
    background-image: linear-gradient(147deg, #7e71f3 0%, #8bb5f3 74%);
    box-shadow: 4px 13px 30px 1px rgba(11, 39, 100, 0.2);
    border-radius: 20px;
    transform: translateX(-80px);
    overflow: hidden;
}

.inner-img>img {
    width: 100%;
    height: 100%;
}

.card-content-data {
    color: #7b7992;
    margin-bottom: 15px;
    display: block;
    font-weight: 500;
}

.card-content-title {
    font-size: 24px;
    font-weight: 700;
    color: #0d0925;
    margin-bottom: 20px;
}

.card-content-text {
    color: #4e4a67;
    margin-bottom: 30px;
    line-height: 1.5em;
}

.card-button {
    display: inline-flex;
    background-image: linear-gradient(147deg, #7e71f3 0%, #8bb5f3 74%);
    padding: 15px 35px;
    border-radius: 50px;
    color: #fff;
    box-shadow: 0px 14px 80px rgba(11, 39, 100, 0.2);
    text-decoration: none;
    font-weight: 500;
    justify-content: center;
    text-align: center;
    letter-spacing: 1px;
}

适配屏幕——————媒体查询

为了让对方在任何尺寸的屏幕上都能够查看我们的名片,我们需要使用媒体查询这一技术,根据不同的屏幕尺寸,来修改我们的css样式。 CSS3中的媒体查询,它可以根据用户设备的尺寸不同而调用不同的样式。它是一种向不同设备提供不同内容的简单而有效的方式,最常用的查询是处理视口高度和宽度的查询。

代码中,我们主要干了两件事情:

  1. 若对面的屏幕宽度或者高度较小,则适当的减小我们的dom元素的宽高
  2. 若独眠的屏幕宽度小到一定程度,则此时的名片已经不适合横向展示,这个时候调整flex布局的轴,改为纵向排列,同时对样式做出细微的调整

@media screen and (max-width: 992px) {
    .card-box {
        max-width: 680px;
        height: 400px;
    }
}

@media screen and (max-width: 768px) {
    .card-box {
        min-height: 500px;
        height: auto;
        margin: 180px auto;
    }
}

@media screen and (max-height: 500px) and (min-width: 992px) {
    .card-box {
        height: 350px;
    }
}


@media screen and (max-width: 768px) {
    .card-box-inner {
        flex-direction: column;
    }
}

@media screen and (max-width: 768px) {
    .inner-img {
        transform: translateY(-50%);
        width: 90%;
    }
}

@media screen and (max-width: 576px) {
    .inner-img {
        width: 95%;
    }
}

@media screen and (max-height: 500px) and (min-width: 992px) {
    .inner-img {
        height: 270px;
    }
}


@media screen and (max-width: 768px) {
    .card-content {
        margin-top: -80px;
        text-align: center;
        padding: 0 30px;
    }
}

@media screen and (max-width: 576px) {
    .card-content {
        padding: 0;
    }
}

到这里,名片制作就结束啦,完整代码可以到码上掘金平台查看