CSS5 | CSS滑动门左扇与右扇图片重叠问题解决
2023-12-25 22:51:20
本文中所使用的滑动门背景图片是自己用微软相册手工切的,没用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推拉门按钮的素材图片时也尽可能少的做颜色过渡,这样会使得整体性不好
文章来源:https://blog.csdn.net/weixin_45325204/article/details/135199708
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!