CSS5 | CSS滑动门左扇与右扇图片重叠问题解决

2023-12-25 22:52

本文主要是介绍CSS5 | CSS滑动门左扇与右扇图片重叠问题解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文中所使用的滑动门背景图片是自己用微软相册手工切的,没用ps,所以凑乎看吧

首先放出一张目标效果也是最终完成图

下面说问题

CSS推拉门原理

按原理来说,就是两个行内块前后站一行,然后前面的a标签和span标签分别是推拉门素材的左扇部分和右扇部分,然后跟随span的文字内容长度自动加长span背景,看起来就像是在加长,实则只是多放出隐藏的素材图片的剩余部分。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>test</title><style>* {margin: 0;padding: 0;}a {margin: 100px;height: 49px;display: inline-block;background-color: pink;padding-left: 15px;}a span {height: 49px;display: inline-block;background-color: purple;padding-right: 15px;}</style>
</head>
<body>
<a href="#"><span></span></a>
</body>
</html>

然后实际操作的时候问题就出在素材图片上了,我一开始使用的是没有白色背景的纯png抠图图标

yuanjiao-bgimg.png

代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>css滑动门原理</title><style>* {margin: 0;padding: 0;}a {margin: 100px;height: 133px;display: inline-block;/*千万不能写死宽度,我们要推拉门*/background: url("../../img/yuanjiao-bgimg.png") no-repeat;/*background: pink no-repeat;*/padding-left: 35px;}a span {height: 133px;display: inline-block;background: url("../../img/yuanjiao-bgimg.png") no-repeat;/*background: purple no-repeat;*/padding-right: 55px;}</style>
</head>
<body>
<a href="#"><span></span>
</a>
</body>
</html>

出来的效果就是这样的

这样就出现素材图片重叠的问题

即使我们将span的素材图片定位到右侧

a span {height: 133px;display: inline-block;background: url("../../img/yuanjiao-bgimg.png") no-repeat right;/*background: purple no-repeat;*/padding-right: 55px;}

也是会多出a标签的右侧角出来的

 

针对这个问题有两种方法

1.给素材图片加上与背景一样的颜色,从素材图片上入手

new-yuanjiao-bgimg.png

这个是修改后的图

从黑色背景上可以看出与原图的区别

因为我们演示背景是纯白的,所以我们图片的边缘背景也是rgb(225,225,225) -> white

重新修改代码

a {margin: 100px;height: 133px;display: inline-block;/*千万不能写死宽度,我们要推拉门*/background: url("../../img/new-yuanjiao-bgimg.png") no-repeat;padding-left: 35px;
}a span {height: 133px;display: inline-block;background: url("../../img/new-yuanjiao-bgimg.png") no-repeat;padding-right: 55px;
}

这样就是想要的效果了

再把右扇的素材图片定位一下右边,再完善一下代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>css滑动门原理</title><style>* {margin: 0;padding: 0;}a {margin: 100px;height: 133px;display: inline-block;/*千万不能写死宽度,我们要推拉门*/background: url("../../img/new-yuanjiao-bgimg.png") no-repeat;padding-left: 65px;text-decoration: none;line-height: 133px;color: white;}a span {height: 132px;display: inline-block;background: url("../../img/new-yuanjiao-bgimg.png") no-repeat right;padding-right: 65px;}</style>
</head>
<body>
<a href="#"><span>CSS滑动门</span>
</a>
</body>
</html>

刷新浏览器,得到想要的效果 

但实际上培训机构的这种做法其实普适性并不强,我要是改了背景颜色我还要改素材图的背景颜色,岂不是很麻烦,所以我想到第二种方案

2.使用原先的png抠图素材,配合border-radius直接把a标签的右边两个多余的角切掉

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>test</title><style>* {margin: 0;padding: 0;}a {margin: 100px;height: 133px;display: inline-block;/*千万不能写死宽度,我们要推拉门*/background: url("../../img/yuanjiao-bgimg.png") no-repeat;padding-left: 65px;text-decoration: none;line-height: 133px;color: white;border-radius: 0 50% 50% 0; /*给a标签的右上和右下两个角直接切角*/}a span {height: 133px;display: inline-block;background: url("../../img/yuanjiao-bgimg.png") no-repeat right;padding-right: 65px;}</style>
</head>
<body>
<a href="#"><span>CSS滑动门</span>
</a>
</body>
</html>

也可以得到同样的效果 

 

 

随着span内的文字增加也会自适应背景图,教程的素材图片左扇其实可以再把padding-left的像素多给一些就会让图片的过渡更自然一些

所以,在选取或者制作css推拉门按钮的素材图片时也尽可能少的做颜色过渡,这样会使得整体性不好

这篇关于CSS5 | CSS滑动门左扇与右扇图片重叠问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537253

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Java实现文件图片的预览和下载功能

《Java实现文件图片的预览和下载功能》这篇文章主要为大家详细介绍了如何使用Java实现文件图片的预览和下载功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... Java实现文件(图片)的预览和下载 @ApiOperation("访问文件") @GetMapping("

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法

《mysql出现ERROR2003(HY000):Can‘tconnecttoMySQLserveron‘localhost‘(10061)的解决方法》本文主要介绍了mysql出现... 目录前言:第一步:第二步:第三步:总结:前言:当你想通过命令窗口想打开mysql时候发现提http://www.cpp

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

springboot报错Invalid bound statement (not found)的解决

《springboot报错Invalidboundstatement(notfound)的解决》本文主要介绍了springboot报错Invalidboundstatement(not... 目录一. 问题描述二.解决问题三. 添加配置项 四.其他的解决方案4.1 Mapper 接口与 XML 文件不匹配

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

Vue中组件之间传值的六种方式(完整版)

《Vue中组件之间传值的六种方式(完整版)》组件是vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用,针对不同的使用场景,如何选择行之有效的通信方式... 目录前言方法一、props/$emit1.父组件向子组件传值2.子组件向父组件传值(通过事件形式)方