【css】伪元素实现图片个悬停文字聚焦效果

news2024/11/22 17:55:15

请添加图片描述
实现重点:

  1. 文字覆盖在图片上
    通过使用 position: absolute 将 .box 文字盒子定位在图片上方。父容器 .img-wrap 使用了 position: relative 确保子元素的绝对定位在父容器的边界内生效。

  2. 创建悬停效果
    通过使用 &::before &::after 伪元素实现半透明黑色背景层,这些伪元素在正常状态下通过 opacity: 0transform: scaleY(2) 进行隐藏,并在悬停时使用 transform: scale(1) opacity: 1 进行展示。

  3. 过渡动画效果
    图片和文字盒子上的所有过渡效果都设置了 transition,使得在悬停时的动画效果平滑。这包括图片透明度的变化、伪元素的缩放,以及文字的显示

  4. 伪元素的使用
    通过 &::before&::after 创建两层边框效果,悬停时它们会从上下两端逐渐收缩,覆盖在图片上,形成一个视觉上的悬停突出效果。

代码实现:

<template>
  <div class="img-wrap">
    <img
      src="https://fastly.picsum.photos/id/29/4000/2670.jpg?hmac=rCbRAl24FzrSzwlR5tL-Aqzyu5tX_PA95VJtnUXegGU"
    />
    <div class="box">
      <div>some</div>
      <div>text</div>
    </div>
  </div>
</template>
<script setup lang="ts"></script>
<style scoped lang="scss">
.img-wrap {
  color: #fff;
  display: inline-block;
  margin: 16px;
  max-width: 320px;
  overflow: hidden;
  position: relative;
  text-align: center;
  width: 100%;
  img {
    // 将图片的垂直对齐方式设置为顶部对齐。
    vertical-align: top;
    max-width: 100%;
    // 隐藏图片背面的不可见部分,可以提高渲染性能,防止浏览器渲染背面的像素。
    backface-visibility: hidden;
  }
  // 文字box
  .box {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    font-weight: 600;
    opacity: 0;
    z-index: 2;
    transition-delay: 0.1s;
    font-size: 24px;
    letter-spacing: 1px;
    text-transform: uppercase;
  }
  // 伪元素实现两层边框效果半透明黑色背景层
  &::before,
  &::after {
    background-color: rgba(0, 0, 0, 0.5);
    border-top: 32px solid rgba(0, 0, 0, 0.5);
    border-bottom: 32px solid rgba(0, 0, 0, 0.5);
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    content: "";
    transition: all 0.3s ease;
    z-index: 1;
    opacity: 0;
    // 沿Y轴(垂直方向)放大2倍
    transform: scaleY(2);
  }
  &:hover::before,
  &:hover::after {
    // 悬停时恢复伪元素的正常比例,使它看起来是从放大的状态逐渐收缩到正常大小
    // 让用户感觉到伪元素从图片的上下两端收缩出现。
    transform: scale(1);
    opacity: 1;
  }
  &:hover {
    img {
      opacity: 0.7;
    }
  }
  &:hover .box {
    opacity: 1;
  }
}
// 图片和文字盒子上的所有元素都有过渡效果
.img-wrap * {
  box-sizing: border-box;
  transition: all 0.45s ease;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2059372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

滑块缺口研究实例(C#颜色滑块缺口计算)

缺口图图 测试网站 111https://www.591mf.top/duibi/hk.html using System; using System.Drawing;public class ColorGapCounter {public static int CountGaps(Color startColor, Color endColor, int threshold){int gaps 0;int startR startColor.R;int startG startC…

STM32按键控制小灯—HAL库

原理讲解&#xff1a; 以上是按键的原理图&#xff1a;&#xff08;忽略GPIO口&#xff0c;因为可以自行设置&#xff09; 需要注意的点有两个&#xff1a; ①100nF的电容&#xff1a;有效缓冲抖动的电平信号&#xff0c;有按键消抖的作用 什么是按键抖动呢&#xff1f;&am…

2024年蓝牙耳机哪个牌子最值得买?最建议入手的四个品牌型号推荐

随着科学技术的不断发展&#xff0c;蓝牙耳机已经逐渐成为市场上的智能配件选择&#xff0c;其市场份额也在不断增长。但是&#xff0c;在众多品牌中&#xff0c;很多的蓝牙耳机会出现音质不佳、连接不稳定的问题&#xff0c;甚至可能对消费者的听力造成潜在风险。那么&#xf…

openai api key automatically rotating when deployed

题意&#xff1a;部署时自动轮换 OpenAI API 密钥 问题背景&#xff1a; Im building a web page using openai gpt API in reactjs. I saved my API key on .env file then gitignored it. And I deployed my code with gh-pages, but openai detects it and rotate the key …

一文详解:线索分配的3种策略

针对企业经常投放的平台和渠道(如抖音、快手、公众号、官网等),纷享销客搭建了多平台接口与CRM互通&#xff0c;多渠道的线索可实时同步到CRM系统中。经过前面的线索分层处理&#xff0c;线索再根据不同线索池分配规则或者自定义分配规则设计&#xff0c;将线索下发给相关方处理…

银行总分支文件分发系统:在安全与效率之间找到平衡

银行的组织结构通常根据其规模、业务范围和地域分布而有所不同&#xff0c;但一般会包括以下几个层级&#xff1a;总行-区域总部或分行-分行-支行-业务中心或服务中心-国际分支机构-附属机构或子公司。 在日常中&#xff0c;存在总分支文件分发的业务场景&#xff0c;文件类型通…

盘点8大跨境电商平台发展前景及选品分析(Shopee、eBay篇)

跨境电商行业在全球范围内持续发展&#xff0c;各大平台各有特色&#xff0c;针对不同的市场和消费者群体提供多元化的服务。以下是亚马逊、Shopee、TikTok、TEMU、速卖通、eBay、Lazada、SHEIN这八大跨境电商平台的背景、主要针对群体、消费者购物偏好及选品建议的简要介绍&am…

RIPRO主题美化-首页底部纯标题文章展示模块+网站统计模块美化 WordPress主题美化

教程 1、找到wp-content/themes/ripro/assets/css/diy.css并将附件内的diy.css内容整体复制进去并保存 2、找到wp-content/themes/ripro/parts/home-mode/ulist.php并将附件内的ulist.php上传进去替换即可 3、找到wp-content/themes/ripro/functions.php并将附件内的functio…

解析京东JD商品详情API返回值

京东平台 API 返回值可以在多个方面进行实战应用&#xff0c;以下是一些常见的场景&#xff1a; 应用领域详细描述商品管理- 库存监控&#xff1a;通过返回的库存数据&#xff0c;及时掌握库存数量&#xff0c;设置预警并合理安排补货&#xff0c;同时分析库存变化趋势以优化库…

SAP PO平台的接口资产目录管理及协作案例(基于AIM平台)

一、客户背景 某客户现在的各个系统数量较多&#xff0c;系统接口已全部接入SAP PO中间件软件进行统一性管理。 但由于SAP PO系统的可视化和对多组织、多用户的协作能力较弱&#xff0c;遂使用AIM软件针对各个不同的系统接口做出API规范&#xff0c;并生成接口资产目录&…

存储管理功能

在这里插入图片描述

DevOps入门(下)

原文阅读&#xff1a;【巨人肩膀社区博客分享】DevOps入门 3&#xff1a; 创建项目 代码在本地修改----提交到远程gitee----触发jenkins整个自动化构建流程&#xff08;打包&#xff0c;测试&#xff0c;发布&#xff0c;部署&#xff09; 创建spring_boot项目 创建git仓库&…

便宜的电容笔推荐:2024返校季精选五款平价又好用的iPad电容笔!

近几年&#xff0c;随着无纸化学习的日益普及&#xff0c;电容笔的重要性也逐渐凸显。但是&#xff0c;原版电容笔的价格过高&#xff0c;对于很多学生党而言&#xff0c;寻找一款平价又好用的iPad电容笔就成了最优的选择。可是市面上的品牌很多&#xff0c;辨别优质产品的难度…

以简单的例子从头开始建spring boot web多模块项目(一)

目的&#xff1a;从头梳理&#xff0c;如何手工从头建立多模块项目。 步骤&#xff1a; 1、建立maven项目,类型&#xff1a;maven Archetype&#xff0c;Name:ParentDemo 选择JDK版本&#xff0c;Archetype&#xff1a;org.apache.maven.archetypes:maven-archetype-quickstart…

成都无人机飞手考证详解及前景分析

一、考证详解 1.1 考证背景与重要性 随着无人机技术的迅猛发展&#xff0c;无人机在航拍、农业、救援、物流等多个领域展现出广泛应用价值。为了规范无人机行业&#xff0c;保障公共安全和空域秩序&#xff0c;国家对无人机操作员实施了严格的资格认证制度。考取无人机飞手证…

公司员工电脑桌面太乱如何解决?桌面管理软件一招解决!

“工欲善其事&#xff0c;必先利其器。” 在数字化管理的时代背景下&#xff0c;选择合适的桌面管理软件就如同为企业网络管理装上了一双慧眼。 员工的电脑桌面往往因为长时间的使用而变得杂乱无章&#xff0c;这不仅影响了工作效率&#xff0c;还可能给企业信息安全带来隐患。…

Kali Linux 三种网络攻击方法总结(DDoS、CC 和 ARP 欺骗)

一、引言 在当今数字化的时代&#xff0c;网络安全成为了至关重要的议题。了解网络攻击的方法和原理不仅有助于我们增强防范意识&#xff0c;更是网络安全领域专业人员必备的知识。Kali Linux 作为一款专为网络安全专业人员和爱好者设计的操作系统&#xff0c;提供了丰富的工具…

DevOps入门(上)

1: DevOps概念 &#xfeff;&#xfeff;DevOps: Development 和 Operations 的组合 DevOps 看作开发&#xff08;软件工程&#xff09;、技术运营和质量保障&#xff08;QA&#xff09;三者的交集。 突出重视软件开发人员和运维人员的沟通合作&#xff0c;通过自动化流程来使…

【AI绘画】Midjourney前置指令/settings设置详解

文章目录 &#x1f4af;Midjourney前置指令/settings设置详解&#x1f4af;Use the default model&#xff08;AI绘画所使用的大模型&#xff09;Midjourney Model&#xff08;Midjourney 模型&#xff09;Niji Model&#xff08;Niji模型&#xff09; &#x1f4af;Midjourney…

NLP实战三:Pytorch实现FastText文本分类

NLP实战一&#xff1a;Pytorch实现TextCNN文本分类 NLP实战二&#xff1a;Pytorch实现TextRNN 、TextRNNAttention文本分类 中文数据集 我从THUCNews中抽取了20万条新闻标题&#xff0c;已上传至github&#xff0c;文本长度在20到30之间。一共10个类别&#xff0c;每类2万条…