bootstrap响应式布局
一、导航栏
1,
<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse"> <span class="sr-only">切换导航</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="#" class="navbar-brand" style="padding: 0;"> <img src="img/1.jpg" alt="logo" style="height: 50px"> </a> </div> <div class="collapse navbar-collapse" id="navbar-collapse"> <ul class="nav navbar-nav navbar-right"> <li class="active"><a href="#"><span class="glyphicon glyphicon-home"></span> 首页</a></li> <li><a href="#"><span class="glyphicon glyphicon-list"></span> 资讯</a></li> <li><a href="#"><span class="glyphicon glyphicon-fire"></span> 案例</a></li> <li><a href="#"><span class="glyphicon glyphicon-question-sign"></span> 关于</a></li> </ul> </div> </div> </nav>
给nav标签设置navbar,navbar-default的类,navbar-fixed-top将导航栏固定在窗口上方,随着窗口移动,将ul的类设置为nav和navbar-nav;响应式导航栏需要设置可折叠区域,即给一个div加collapse和navbar-collapse的类,同时将折叠按钮的data-toggle事件设置为collapse,目标data-target指向可折叠的div,一般用id属性来连接,其中按钮中的span标签是为了显示按钮的样式,即三条横线
二、图片轮播
图片轮播需要用到图片轮播插件carousel
<div id="myCarousel" class="carousel slide"> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data-target="#myCarousel" data-slide-to="1"></li> <li data-target="#myCarousel" data-slide-to="2"></li> </ol> <div class="carousel-inner"> <div class="item active" style="background: #1D1311;"> <img src="img/ad2.jpg" alt="second"> </div> <div class="item" style="background: #170E0F;"> <img src="img/ad3.jpg" alt="third"> </div> <div class="item" style="background: #22110A;"> <img src="img/ad4.jpg" alt="forth"> </div> </div> <a href="#myCarousel" data-slide="prev" class="carousel-control left">‹</a> <a href="#myCarousel" data-slide="next" class="carousel-control right">›</a> </div>
用一个有序列表来实现图片的导向,设置类为carousel-indicators,同时将li的目标指向当前轮播的div块,data-slide-to为每个li指向的图片,将包裹图片的整个div设为.carousel-inner,每张图片的div设置为item
最后设置两个a标签来链接到轮播块,data-slide设为前一个和后一个,“prev”和“next”,类为carousel-control,,,,
此时的a标签位于图片的顶部位置,为了让其居中,可将a标签的行高设置为图片的高度,但当浏览器窗口改变时图片高度会自适应变化,因此要在js中完成设置,但是每次改变浏览器窗口需要刷新才能完成,因此在js中添加window.resize()事件,实现每次改变窗口的时候自适应居中
$(".carousel-control").css('line-height', $(".carousel-inner img").height()+'px'); $(window).resize(function(){ $(".carousel-control").css('line-height', $(".carousel-inner img").height()+'px'); })
但此时会出现问题:若当前是第二张或第三张图片时改变窗口大小,此时获取到的图片高度为0,因为
$(".carousel-inner img").height()
获取的是第一张图片的高度,当显示第二张图片时,此时第一张图片高度为0,因此对其进行设置
$(window).resize(function(){
var $height=$(".carousel-inner img").eq(0).height()||
$(".carousel-inner img").eq(1).height()||
$(".carousel-inner img").eq(2).height();
$(".carousel-control").css('line-height', $height+'px');
})
$height的作用为获取当前图片的高度,即如果第一张图片有高度的话其他两张图片值均为0,以此类推,即可获得显示出的图片的高度。