首页 前端知识 用HTML和CSS实现华为新闻效果——鼠标悬停时图片缩放并且文字上升

用HTML和CSS实现华为新闻效果——鼠标悬停时图片缩放并且文字上升

2024-03-21 15:03:18 前端知识 前端哥 725 468 我要收藏

用HTML和CSS实现华为新闻效果——鼠标悬停时图片缩放并且文字上升

  • 用HTML和CSS实现华为新闻效果——鼠标悬停时图片缩放并且文字上升
    • 一、效果
    • 二、、整体分析
      • 1. 图片缩放
      • 2. 文字上浮
      • 3. 图片伴有透明遮罩
      • 4. 注意事项
    • 三、完整代码
      • 1. HTML代码
      • 2. CSS样式

用HTML和CSS实现华为新闻效果——鼠标悬停时图片缩放并且文字上升

一、效果

在这里插入图片描述
当鼠标悬停时,有三个效果:
1. 图片缩放;
2. 文字上浮;
3. 图片伴有透明遮罩

二、、整体分析

1. 图片缩放

使用伪类选择器hover(使用格式:选择器:hover { CSS 属性 }
),在鼠标悬停时设置图片样式

.dec:hover img {
        transform: scale(1.2);
      }

这里是使用scale使图片达到放大的效果,括号中的参数即为图片的放大倍数,也可以在img上添加过渡效果,让缩放更为柔和

2. 文字上浮

同样使用伪类选择器hover,在鼠标悬停时设置文字样式

.dec .txt {
        position: absolute;
        bottom: -70px;
        padding: 25px 30px;
        z-index: 2;
        font-size: 18px;
        color: #fff;
        transition: all 0.8s;
      }
      .dec:hover .txt {
        transform: translateY(-40px);
      }
      .dec .txt h5 {
        font-size: 22px;
        margin: 5px 0;
      }
      .dec .txt .more {
        margin-top: 20px;
        font-size: 15px;
      }
      .dec .txt .more i {
        color: red;
      }

先用定位(父相子绝),将bottom设置为负值,让最后一排文字超出盒子的范围,并在盒子的父级(即:.dec)添加overflow: hidden将文字进行隐藏

3. 图片伴有透明遮罩

应用伪元素和父相子绝让遮罩覆盖dec盒子

.dec::after {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-image: linear-gradient(transparent, rgba(94, 89, 89, 0.5));
        opacity: 0;
      }
      .dec:hover::after {
        opacity: 1;
      }

这里的opacity 属性指定了一个元素的不透明度。即:元素背景的被覆盖程度。

opacity: 1完全不透明
opacity: 0.5半透明
opacity: 0完全透明

4. 注意事项

因为遮罩用了after伪元素,所以会压住txt和img,所以想让txt压在遮罩上面,需要设置z-index值(默认值为0,取值越大,层级越高)

三、完整代码

1. HTML代码

<body>
    <div class="news">
      <div class="dec">
        <img src="./images/product.jpeg" alt="" />
        <div class="txt">
          <p>产品</p>
          <h5>OceanStor Pacific 海量存储斩获2021 Interop金奖</h5>
          <p class="more">了解更多<i class="iconfont icon-arrow-right"></i></p>
        </div>
      </div>
      <div class="dec">
        <img src="./images/huawei1.jpeg" alt="" />
        <div class="txt">
          <p>行业洞察</p>
          <h5>迈向智能世界2030</h5>
          <p class="more">了解更多<i class="iconfont icon-arrow-right"></i></p>
        </div>
      </div>
      <div class="dec">
        <img src="./images/huawei2.jpeg" alt="" />
        <div class="txt">
          <p>《ICT新视界》刊首语</p>
          <h5>笃行致远,共建具有获得感、幸福感、安全感的智慧城市</h5>
          <p class="more">了解更多<i class="iconfont icon-arrow-right"></i></p>
        </div>
      </div>
    </div>
  </body>

2. CSS样式

<style>
      .news {
        margin: 50px;
      }
      .dec {
        position: relative;
        float: left;
        margin-right: 10px;
        width: 400px;
        height: 280px;
        overflow: hidden;
      }
      .dec img {
        width: 100%;
        height: 100%;
        transition: all 0.8s;
      }
      .dec:hover img {
        transform: scale(1.2);
      }
      .dec .txt {
        position: absolute;
        bottom: -70px;
        padding: 25px 30px;
        z-index: 2;
        font-size: 18px;
        color: #fff;
        transition: all 0.8s;
      }
      .dec:hover .txt {
        transform: translateY(-40px);
      }
      .dec .txt h5 {
        font-size: 22px;
        margin: 5px 0;
      }
      .dec .txt .more {
        margin-top: 20px;
        font-size: 15px;
      }
      .dec .txt .more i {
        color: red;
      }
      /* 遮罩 */
      .dec::after {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        width: 100%;
        height: 100%;
        background-image: linear-gradient(transparent, rgba(94, 89, 89, 0.5));
        opacity: 0;
      }
      .dec:hover::after {
        opacity: 1;
      }
    </style>
转载请注明出处或者链接地址:https://www.qianduange.cn//article/4011.html
标签
评论
发布的文章

jQuery和CSS选择器的使用

2024-04-15 09:04:55

HTML前端表单校验的方法

2024-04-15 09:04:46

使用jQuery写一个注册界面

2024-04-15 09:04:46

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!