[100天挑战100个前端效果]第十九天---人物介绍卡片效果(猜猜是哪三个大佬?)

本文展示了如何使用HTML和CSS创建人物介绍卡片,包括图片渐变遮罩、鼠标悬停时的图片缩小及文字移动效果。通过复习margin、padding、flex布局等CSS属性,实现卡片的样式和交互。同时,文章强调了复习和巩固基础知识的重要性。
摘要由CSDN通过智能技术生成

让我们先来看看实现的效果

在这里插入图片描述

html代码

<!DOCTYPE html>
<html lang="zh-Hans">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第十九天</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <!-- 开始 -->
    <div class="card">
        <div class="photo">
            <img src="1.jpg">
        </div>
        <h1>马云 Jack Ma</h1>
        <h2>阿里巴巴 alibaba.com</h2>
        <p>马云,男,汉族,中共党员,1964年9月10日生于浙江省杭州市,祖籍浙江省嵊州市谷来镇。</p>
        <a href="#">了解更多</a>
    </div>
    <div class="card">
        <div class="photo">
            <img src="2.jpg">
        </div>
        <h1>马化腾 Pony</h1>
        <h2>腾讯 tencent.com</h2>
        <p>马化腾,汉族,1971年10月29日生于广东省东方县八所港,广东省汕头市潮南区人。</p>
        <a href="#">了解更多</a>
    </div>
    <div class="card">
        <div class="photo">
            <img src="3.jpg">
        </div>
        <h1>刘强东 Richard Liu</h1>
        <h2>京东 jd.com</h2>
        <p>刘强东,男,汉族,1973年3月10日生(另一说法:1974年2月14日),江苏宿迁人,祖籍湖南湘潭。</p>
        <a href="#">了解更多</a>
    </div>
</body>

</html>

css代码

:root {
    --background-color: #2c3e50;
    --border-color: #7591AD;
    --text-color: #34495e;
    --color1: #EC3E27;
    --color2: #fd79a8;
    --color3: #0984e3;
    --color4: #00b894;
    --color5: #fdcb6e;
    --color6: #e056fd;
    --color7: #F97F51;
    --color8: #BDC581;
    --a_border_color: #86a3b3;
    --h2_border_color: #8ea2b8;
    --a_hover_background_color: #86a3b3;
    --font_color: #e8f6fd;
}

* {
    margin: 0;
    padding: 0;
}

html {
    font-size: 14px;
}

body {
    width: 100vw;
    height: 100vh;
    background-color: var(--background-color);
    display: flex;
    justify-content: center;
    align-items: center;
    font-family: 'Montserrat', sans-serif, Arial, 'Microsoft Yahei';
}

.card {
    /* flex布局下元素不安比例缩放 */
    flex-shrink: 0;
    flex-grow: 0;
    position: relative;
    width: 300px;
    height: 450px;
    overflow: hidden;
    margin: 20px;
    background-color: var(--border-color);
    border-radius: 20px;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    /* flex子元素纵向排列 */
    flex-direction: column;
    /* 增加一个阴影 */
    box-shadow: 0 0 30px #2c2c2c;
    /* 给字体一个颜色 */
    color: var(--font_color);
}

.photo{
    position: absolute;
    /* 默认为放大 */
    width: 100%;
    height: 100%;
    overflow: hidden;
    transition: 0.5s;
}
.photo::before{
    /* 通过before增加渐变背景实现遮罩,看起来清晰一些 */
    position: absolute;
    content: '';
    width: 100%;
    height: 100%;
    background-image: linear-gradient(to top,#333,transparent);
}
.card:hover .photo::before{
    /* 缩小时隐藏 */
    display: none;
}
.photo img{
    /* 图片高宽均为100% */
    /* 然后按照cover缩放,裁切长边 */
    width: 100%;
    height: 100%;
    object-fit: cover;

}
/* 鼠标移动到上面变小 */
.card:hover .photo{
    width: 120px;
    height: 120px;
    top: 30px;
    border-radius: 50%;
    box-shadow: 0 0 20px #111;
}
h1{
    position: absolute;
    top: 380px;
    transition: 0.5s;
}
.card:hover h1{
    position: absolute;
    top: 170px;
}
h2{
    margin-top: 220px;
    font-weight: normal;
    text-align: center;
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--h2_border_color);
}
p{
    width: 90%;
    /* 段落缩进2个字符大小 */
    text-indent: 2em;
    font-size: 16px;
    margin-bottom: 10px;
    line-height: 30px;
}
a{
    color: var(--font_color);
    text-decoration: none;
    padding: 12px;
    border: 1px solid var(--a_border_color);
    border-radius: 8px;
}

a:hover{
    color: #fff;
    background-color: var(--a_hover_background_color);
}

今日份知识总结

今天用到了很多前面的知识,有的不是新知识,但是我们复习一下

标签作用
margin设置四个方向的外边距
padding设置四个方向的内边距(负值无效)
flex-shrinkflex-shrink 属性指定了 flex 元素的收缩规则。flex 元素仅在默认宽度之和大于容器的时候才会发生收缩,其收缩的大小是依据 flex-shrink 的值。注意:如果元素不是弹性盒对象的元素,则 flex-shrink 属性不起作用。
flex-growflex-grow 属性用于设置或检索弹性盒子的扩展比率。。注意:如果元素不是弹性盒对象的元素,则 flex-grow 属性不起作用。
flex-start靠左
object-fitobject-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。
text-indenttext-indent 属性规定文本块中首行文本的缩进。
em字符单位
text-decorationtext-decoration 属性规定添加到文本的修饰。
borderborder 简写属性在一个声明设置所有的边框属性。

简单说一下设计思路:
html部分:
这个部分就很简单了,就是收集资料,然后用标签写出来就好了,没啥好说的吧

css部分:
这里东西比较多,说几个重点:

  • 缩放用到的主要是一个w,h100%的变化,我们给一个transition 0.5s,让变化看起来很平滑(注意还有一个名字的top值改变,名字从底部到上面)
  • 在没有变化的时候,为了让名字看起来清晰一些,我们用到了一个图片的渐变色(设置为absolute)这样,可以让白色的名字显得更明显(缩小后取消)
  • box-shadow是用来锦上添花的,然后注意小块有个border的小横线,用border-bottom来调整
  • object-fit控制裁剪

基本就是这些啦,第十九天啦,加油啊!
有什么问题,我们评论区见呀!T.T!!!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值