Banner图片居中及Swiper图片轮播插件中图片居中的实现
网站种的banner轮播图是一个非常高频的模块,在以前我们都是用css+html+js的方式直接写,但是自从有了像Swiper这种非常好用的轮播图插件问世后,基本上大家写轮播效果都不在动手写了,这就导致了很多人其实对轮播的实现原理并不清晰。今天我们暂不讨论js实现动画效果的部分,仅说说如何在轮播图种实现图片居中。
一般而言,我们的浏览器尺寸是不定的,为了照顾到绝大多数主流屏幕,我们会选用稍大一些的图片,常用的宽度比如:1920像素宽等等。有时图片比较宽,在小屏幕下看是没有问题的,但是如果动态的拖动改变浏览器的宽度,发现Banner图片仅向一边溢出,进而失去焦点。
常见的解决思路如下:
html代码:
<div class="banner">
<img src="image/banner.jpg" />
</div>
css样式代码:
.banner{
width: 100%; height: 450px; position: relative;
img{ width: 1920px; height: 100%; display: block; position: absolute; left: 50%;
margin-left:calc(-1920px/2); }
}
即将父容器设置相对定位,再将图片本身先绝对定位,并向左偏移50%,再使用margin-left为负值的方式向右偏移图片自身宽度的一半,以达到绝对居中的效果。这样实现的效果,当逐渐缩小浏览器视图宽度时,图片的核心焦点区始终是在核心位置的。
在Swiper中,默认官方提供的实例代码中,几乎都没有考虑到这一点,这就导致了很多拿来即用的前端开发人员,写的代码,在其本地环境下运行是没问题的,但是经不起测试。
其实,在swiper中,实现图片居中的思路,与上述的基础demo思路是完全一致的。唯一需要注意的问题是,当存在多张图片时,后面的图片会遮住当前轮播图片,此时需要加overflow:hidden来进行隐藏。代码如下:
.banner{
width: 100%; height: 46rem; float: left; overflow: hidden; position: relative;
.swiper-slide{ position: relative; overflow: hidden;}
.swiper-slide img{ width: 1920px; display: inline-block; position: relative;
left: 50%; margin-left: -960px;}
}
- CSS选择器:nth-child()的灵活用法及常见场景示例
CSS选择器中的nth-child()相信大家都比较熟悉,nth-child()和nth-of-type()的区别是:nth-child()不区分类型。大家经常
- 为什么你的logo图模糊不清,移动端图片虚化的解决方案
在传统pc时代的时候,几乎99%的网站都在使用图片格式作为logo,而大部分网站都使用了png透明底的图片来做网站的logo。但是进入移动时代之后,这种习惯还是
- 响应式网站布局的优缺点分析
响应式网站,通俗的讲就是使用CSS媒体查询技术,写一套代码,可以在多个终端上使用。在此之前,前端切图工作者是需要分别针对电脑端、移动端和平板等常见设备专门去写一
- 切图和前端什么关系?为什么前端又被称为切图仔?
很多初从事前端切图这个行业的新人,大多都有一个疑问?为什么要把前端开发人员称为切图仔呢?提起这个问题,我们还要从前端切图行业的发展历程来说起,当然,这个问题对与
- 目前主流的前端框架有哪些?
基本上每种语言都有对应的一些快速框架用于提升开发人员的效率,所谓框架更像是工具箱或者脚手架,在开发时如果能很好的利用框架可以起到事半功倍的效果。简单形象的说,如
- 移动端background-attachment: fixed失效解决方法
在做web前端切图时,我们经常需要做背景图片不跟随内容滚动的效果,这个时候就需要使用到background-attachment: fixed 属性,这个属性及