今天的任务是完成平板和手机端的响应式布局。
1、利用media query媒体特性实现不同设备的响应式布局。
@media screen and (max-width: 1000px){}
@media screen and (max-width: 768px){}
@media screen and (max-width: 640px){}
@media screen and (max-width: 480px){}因为全局样式是基于宽屏显示器,所以从大往小设置。这样的好处是把不需要的可以隐藏,重定义要修改的样式,顺式思维比较方便。缺点是样式从宽屏的全局样式开始加载,导致运行的速度受影响。比如宽屏的时候设置了很大的背景图片,在手机端不需要,但是这样图片依然会被下载。
如果从小往大写,比如先写出手机端样式,再写平板端样式,再写宽屏显示器样式,则
@media screen and (min-width: 320px){}
@media screen and (min-width: 480px){}
@media screen and (min-width: 640px){}
@media screen and (min-width: 768px){}这样的好处是全局样式很少,加载很快,但是对于布局来说难度增加,需要更高的代码功底和对所有设备展现样式的宏观把控。
2、首先是修改导航,把默认的导航改成如下这种效果。
默认导航鼠标点击的时候会占据网页空间,影响下面的内容往下移动。
导航的html代码如下:
<nav id="nav-primary-mobile" class="clearfix">
<a class="menu-toggle" href="#"><i class="fa fa-bars"></i><span>Menu</span></a>
<ul id="mobile-menu" class="clearfix">
{module:navbar}
</ul>
</nav>修改css样式后,让导航不再占据网页的空间,实现层级的上浮,需要利用AP元素布局。
在分辨率最大为768px时效果如下:
CSS代码如下:
@media screen and (max-width: 768px){
/*自己添加的*/
#site-header #logo{
float:left;
height:91px;
width:80%;}
#nav-primary-mobile {
position:relative;/*相对定位,主要是为了产生z-index层级。*/
z-index:999;/*避免被返回到顶部的菜单压住。*/
display:block;
width:20%;
height:91px;/*logo的高度为91px,保证一致的高度。*/
margin:0;
float:right;
}
#header-bottom{
clear:both;}/*因为logo和nav浮动,导致该div被压住,所以清除浮动的影响*/
#nav-primary-mobile .menu-toggle{
padding:33px 20px;
height:91px;}
#nav-primary-mobile ul{
position:relative;/*让ul为相对定位,可以设置层级,避免被压住。*/
z-index:999;}
#nav-primary-mobile ul li a:hover{
color:#22BD11;}
/*自己添加的*/
}不同的分辨率还是有不同的设置,在最大为690px时效果如下,去掉了“Menu”:
CSS样式如下:
@media screen and (max-width:690px){
#nav-primary-mobile .menu-toggle span {
display:none;/*隐藏menu这个词*/}
#nav-primary-mobile .menu-toggle .fa{
font-size:1.5em;/*把三根横杠的字体变大*/
margin:0;}
#nav-primary-mobile .menu-toggle{
padding:29px 20px;/*为了三根横杠纵向居中,设置了上下的padding值。*/}
}在分辨率最大为480px时效果如下,去掉了头像,时间线等细节,并且让下拉菜单的宽度有固定值,否则文字会换行,如图所示:
CSS样式如下:
@media screen and (max-width:600px){
#nav-primary-mobile{
position:relative;}
#nav-primary-mobile ul{
position:absolute;
width:120px;/*防止ul宽度太小,导致文字换行。*/
top:91px;
right:0;/*让ul右边和浏览器保持零距离。*/}
}
@media screen and (max-width:480px) {
#header-bottom{
display:none;}
#timeline:before {
display:none;
}
.home #timeline > li:first-child{
padding-top:60px !important;
}
} 在分辨率最大为320px时,把头部的logo和导航的高度设置矮了点,为50px,效果如图:
CSS代码如下:
@media screen and (max-width: 320px) {
/* Post Formats */
#site-header #logo{
height:50px;
padding:0;
}
#site-header #logo img{
width:50%;
height:auto;}
#nav-primary-mobile .menu-toggle{
height:50px;
padding:10px 20px;}
#nav-primary-mobile .menu-toggle .fa{
font-size:0.8em;
}
#nav-primary-mobile ul{
top:50px;}
}作业:完成导航菜单的修改,页面其他布局都几乎是百分比布局,所以自适应很好。以后的布局,也尽量以百分比布局为主,少用固定宽度布局。







发表评论:
◎请发表你卖萌撒娇或一针见血的评论,严禁小广告。