来自博主的一则消息:
最近一直在学习Bootstrap框架,下面介绍下我今天的学习成果
轮播图效果:
1、指示器 即下方的小圆点(现成)
2、左右的控制(现成)
3、滑块(重点改造)
(1)img和background的区别
img标签是写在html中的,background是写在css中的,虽然我们通常在head中引入css文件,但是css文件是在html加载完才执行的;因此重要的图片建议用img(例如:logo),若仅仅是浏览大量的图片建议用background (例如:轮播滑块图片) ;
在该项目中,为了保持图片缩放过程中始终保持居中状态,我们并没有直接添加背景,而是在div盒子里添加了data-image-lg="image/001.jpg",然后在js中添加设为背景。
(2)自适应问题
当屏幕宽度大于768,使用大图,高度固定,宽度随窗口的缩放而缩放
当屏幕宽度小于768(手机),大图换成小图,在div里生成img标签,宽高都随窗口的缩放而缩放
html:
<!--轮播图-->
<section id="main_ad" class="carousel slide" data-ride="carousel">
<!-- 指示器 下方的小圆点 -->
<ol class="carousel-indicators">
<li data-target="#main_ad" data-slide-to="0" class="active"></li>
<li data-target="#main_ad" data-slide-to="1"></li>
<li data-target="#main_ad" data-slide-to="2"></li>
<li data-target="#main_ad" data-slide-to="3"></li>
</ol>
<!-- 滑块 -->
<div class="carousel-inner" role="listbox">
<div class="item active" data-image-lg="img/slide_01_2000x410.jpg" data-image-xs="img/slide_01_640x340.jpg">
</div>
<div class="item" data-image-lg="img/slide_02_2000x410.jpg" data-image-xs="img/slide_02_640x340.jpg">
</div>
<div class="item" data-image-lg="img/slide_03_2000x410.jpg" data-image-xs="img/slide_03_640x340.jpg">
</div>
<div class="item" data-image-lg="img/slide_04_2000x410.jpg" data-image-xs="img/slide_04_640x340.jpg">
</div>
<!--<div class="item" style="background-image: url(img/slide_02_2000x410.jpg) "></div>-->
<!--<div class="item" style="background-image: url(img/slide_03_2000x410.jpg)"></div>-->
<!--<div class="item" style="background-image: url(img/slide_04_2000x410.jpg)"></div>-->
</div>
<!-- 左右的控制 -->
<a class="left carousel-control" href="#main_ad" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#main_ad" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</section>
css:
/*
广告轮播部分
*/
#main_ad > .carousel-inner > .item {
/*height: 410px;*/
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
}
/*什么时候不能用410px高度*/
/*可以通过媒体查询的方式控制*/
@media (min-width: 768px) {
/*当屏幕宽度大于768的时候,才执行*/
#main_ad > .carousel-inner > .item {
height: 410px;
}
}
#main_ad > .carousel-inner > .item img {
width: 100%;
}
js:
// 当文档加载完成才会执行
$(function () {
// 当屏幕大小发生改变,决定展示大图还是小图
function resize() {
// 获取屏幕的宽度
var windowwidth = $(window).width();
// 判断屏幕是大还是小
var isSmallScreen = windowwidth < 768;
// 根据屏幕大小为每一张轮播图设置背景
// 获取到轮播图对象
// $('#main_ad > .carousel-inner > .item') 获取到的是DOM数组(多个元素)
$('#main_ad > .carousel-inner > .item').each(function (i,item) {
// 因为拿到的是DOM对象 需要转换
var $item = $(item);
// $element.data() 是一个函数,专门用于取元素上的自定义属性(data-abc)
// 函数的参数就是我们要取得属性名称(abc)
var imgSrc =
isSmallScreen ? $item.data('image-xs') : $item.data('image-lg');
// 设置背景图片
$item.css('backgroundImage','url("' + imgSrc +'")');
// 用img能够实现图片大小的缩放
if(isSmallScreen) {
$item.html('<img src="'+ imgSrc +'"/>');
}else {
// 当由小图再次变成大图时,清空img
$item.empty();
}
})
}
// $(window).on('resize', resize);
// 让window对象立即触发一下resize
// $(window).trigger('resize');
$(window).on('resize', resize).trigger('resize');
})