解决bootstrap导航栏navbar在IE8上存在缺陷的方法


Posted in Javascript onJuly 01, 2016

在Bootstrap的官网上,提供了一种导航栏的组件:
只要在站点文件夹放好JQ与Bootstrap输入如下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>navbar</title>
 <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
 <link href="css/bootstrap.css" rel="stylesheet" media="screen">
 <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
 <script type="text/javascript" src="js/bootstrap.js"></script>
 </head>

 <body>
 <div class="container">
 <nav class="navbar navbar-default" role="navigation">
 <div class="container-fluid">
 <div class="navbar-header">
  <button type="button" class="navbar-toggle collapsed"
  data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
  <span class="sr-only">Toggle navigation</span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  </button>
  <a class="navbar-brand" href="#">Brand</a>
 </div>
 <div class="collapse navbar-collapse"
  id="bs-example-navbar-collapse-1">
  <ul class="nav navbar-nav">
  <li class="active">
  <a href="#">Link</a>
  </li>
  <li>
  <a href="#">Link</a>
  </li>
  <li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown
  <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu">
  <li>
   <a href="#">Action</a>
  </li>
  <li>
   <a href="#">Another action</a>
  </li>
  <li>
   <a href="#">Something else here</a>
  </li>
  <li class="divider"></li>
  <li>
   <a href="#">Separated link</a>
  </li>
  <li class="divider"></li>
  <li>
   <a href="#">One more separated link</a>
  </li>
  </ul>
  </li>
  </ul>
  <form class="navbar-form navbar-left" role="search">
  <div class="form-group">
  <input type="text" class="form-control" placeholder="Search">
  </div>
  <button type="submit" class="btn btn-default">
  Submit
  </button>
  </form>
  <ul class="nav navbar-nav navbar-right">
  <li>
  <a href="#">Link</a>
  </li>
  <li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown
  <span class="caret"></span>
  </a>
  <ul class="dropdown-menu" role="menu">
  <li>
   <a href="#">Action</a>
  </li>
  <li>
   <a href="#">Another action</a>
  </li>
  <li>
   <a href="#">Something else here</a>
  </li>
  <li class="divider"></li>
  <li>
   <a href="#">Separated link</a>
  </li>
  </ul>
  </li>
  </ul>
 </div>
 </div>
 </nav>
 asdddddddddddddddddddddddddddddddddddddddddddddddd
 </div>
 </body>
</html>

 则可以得到一个可以随窗口大小变化的导航栏:

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

还可以把<nav class="navbar navbar-default" role="navigation">中的class值改成<nav class="navbar navbar-default navbar-fixed-top" role="navigation">则导航条,就一直悬挂在网页顶部。无论窗口怎么拖动,如果把class值改成<nav class="navbar navbar-inverse" role="navigation">,则可以得到一条黑色的导航条。

看起来很好用的样子,但是缺点是相当致命的。且不论此导航条提供的颜色就只有白色与黑色,两种色调,最可怕的是在IE8中直接以手机方式显示这个导航条,然而是在1440x900的屏幕分辨率之下。要知道IE8并不是IE6,是WIN7系统默认的浏览器。 

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

这导致用户的要选择导航条的项目需要点击右方的按钮,之后下拉菜单则变成: 

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

让网页内容直接被下拉正整整一大截。值得注意的是,IE8是现在WIN7默认的浏览器。姑且不论IE6在中国的绝对核心地位,即使在越来越多的用户选用WIN7的情况的大背景下,IE8的兼容性还是一个值得考虑的问题。 

所以,仅能不选择这种导航条作为网站的导航,可作为替代品的bootstrap的元素有两种,风格各异,一种是标签页,另一种则是按钮组,所谓的面包屑导航栏也并不是一种很好的解决方式,因为下拉菜单在bootstrap必须以按钮的方式呈现,写成文本的话,在IE8同样是吃力不讨好,当然,你完全可以选择抛开bootstrap,大神们的css都是自己手写,看不起框架。 

一、标签页

标签的基本样式如下,存在着下拉菜单需要bootstrap.js,bootstrap.css,jq的支持

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

标签页不随浏览器的尺寸的变化而变化

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

可以在一个网页内切换,也可以跳到其他页面,强力建议导航的标签页上的链接,都跳到其他与此页同样布局的网页。也就是同样存在此标签页,且位置一模一样的页面。
 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Togglabletabs</title>
 <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
 <link href="css/bootstrap.css" rel="stylesheet" media="screen">
 <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
 <script type="text/javascript" src="js/bootstrap.js"></script>
 </head>

 <body>
 <div class="container">
 <ul class="nav nav-tabs" role="tablist">
   <!--一个标签页组仅能有一个标签是active状态-->
 <li role="presentation" class="active">
    <!--以为跳到本页的home图层,不建议这样做,因为如果都写到一页的话,一页会占用很多代码-->
  <a href="#home" role="tab" data-toggle="tab">Home</a>
 </li>
 <li role="presentation">
  <a href="#profile" role="tab" data-toggle="tab">Profile</a>
 </li>
 <li role="presentation">
  <a href="#messages" role="tab" data-toggle="tab">Messages</a>
 </li>
 <li role="presentation">
  <a href="#settings" role="tab" data-toggle="tab">Settings</a>
 </li>
    <!--蕴含着下拉菜单的写法-->
 <li role="presentation" class="dropdown">
  <a class="dropdown-toggle" data-toggle="dropdown" href="#">
     <!--这是下拉菜单的那个小三角形-->
  Dropdown <span class="caret"></span> </a>
  <ul class="dropdown-menu" role="menu">
  <li role="presentation">
  <a href="#home" role="tab" data-toggle="tab">Home</a>
  </li>
  <li role="presentation">
  <a href="#profile" role="tab" data-toggle="tab">Profile</a>
  </li>
  <li role="presentation">
  <a href="#messages" role="tab" data-toggle="tab">Messages</a>
  </li>
  <li role="presentation">
  <a href="#settings" role="tab" data-toggle="tab">Settings</a>
  </li>
  </ul>
     <!--最后都跳到其他样式都相同的页,让浏览者感到没有跳转就对了,这样分开代码,以免一个网页的代码都集中在一个页面-->
  <li role="presentation">
  <a href="back.html" role="tab">The other pages</a>
  </li>
 </li>
 </ul>

 <!--如果标签页是跳到本页图层的,就在这里写图层的内容。-->
 <div class="tab-content">
 <div role="tabpanel" class="tab-pane active" id="home">
  Home
 </div>
 <div role="tabpanel" class="tab-pane" id="profile">
  Profile
 </div>
 <div role="tabpanel" class="tab-pane" id="messages">
  Messages
 </div>
 <div role="tabpanel" class="tab-pane" id="settings">
  Settings
 </div>
 </div>
   
 </div>
 </body>
</html>

 二、选择按钮组

这段笔者改了又改,主要是笔者对于此组件的理解不够透彻。
 一个铺满页面的选择按钮组基本样式如下, 

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

会随着浏览器的尺寸改变而改变,当然,当被压缩到极致时,不会像bootstrap自带的导航条navbar那样收起来,静静地躺在一个按钮中,

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

这种选择按钮组是可以毫无疑问地兼容IE8的,只是没有下拉菜单的按钮组其实是一个超级链接,用<a>标签,而不是<button>标签,但对比于一般的<a>标签,此<a>标签的class上button的代码,具体见代码。此按钮组的代码实在是太特殊了。
具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>按钮组buttongroup</title>
 <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
 <link href="css/bootstrap.css" rel="stylesheet" media="screen">
 <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
 <script type="text/javascript" src="js/bootstrap.js"></script>
 </head>

 <body>
 <!--要求按钮组铺满整个页面-->
 <div class="btn-group btn-group-justified">
 <div class="btn-group">
 <!--不存在下拉菜单的按钮这样写,为按钮定义链接比较少见,请注意-->
 <a href="#" class="btn btn-success"> Left </a>
 </div>
 <div class="btn-group">
 <button type="button" class="btn btn-success">
  Middle
 </button>
 </div>
 <div class="btn-group">
 <button type="button" class="btn btn-success">
  Right
 </button>
 </div>
 <!--存在下拉菜单的按钮这样写-->
 <div class="btn-group">
 <button type="button" class="btn btn-success dropdown-toggle"
  data-toggle="dropdown">
  Dropdown
  <span class="caret"></span>
 </button>
 <ul class="dropdown-menu" role="menu">
  <li>
  <a href="#">Dropdown link</a>
  </li>
  <li>
  <a href="#">Dropdown link</a>
  </li>
 </ul>
 </div>
 </div>
 </body>
</html>

三、面板加表格,内嵌普通超链接文字 

解决bootstrap导航栏navbar在IE8上存在缺陷的方法

最普通的、最简单的事情往往是最实用的事情,不过这里使用表格来布局,而不是把页面划分成12份的栅格系统。因为12份遇到一些如5份的栏目并不好平均分配。
此面板使用了bootstrap提供的面板元素,同样可以根据窗口大小来自动调整。
代码比上面的两种解决方案简单的多,但同时也没有这么炫。不过朴素实用确实真的。

<!--这个节点可以不要,放在一个容器container里面只是为了好截图,不会充满整个窗口-->
 <div class="container">
   <!--只有body的panel,改变样式仅改变边框颜色-->
 <div class="panel panel-default">
 <div class="panel-body" style="text-align: center">
  <table border="0" width="100%">
  <tr>
      <!--如果是六项则可以用bootstrap的栅格系统,每列为2格,如果是7项,那么一个单元格则占100/7=14%的大小。-->
  <td width="20%">
  <a href="#">项目一</a>
  </td>
  <td width="20%">
  <a href="#">项目二</a>
  </td>
  <td width="20%">
  <a href="#">项目三</a>
  </td>
  <td width="20%">
  <a href="#">项目四</a>
  </td>
  <td width="20%">
  <a href="#">项目五</a>
  </td>
  </tr>
  </table>
 </div>
 </div>
 </div>

以上三种为解决bootstrap导航栏navbar在IE8上存在缺陷的方案。个人认为第一种有点少见与另类,第二种是笔者最推荐的,第三种觉得需要运用到表格,能避免则尽量避免吧。可以把选择按钮组放到一个面板里面,取代第三种上面的文字、表格内容也是可以。

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
深入理解JavaScript系列(35):设计模式之迭代器模式详解
Mar 03 Javascript
javascript与Python快速排序实例对比
Aug 10 Javascript
ANGULARJS中使用JQUERY分页控件
Sep 16 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
jQuery 调用WebService 实例讲解
Jun 28 Javascript
js和jquery中获取非行间样式
May 05 jQuery
vue实现验证码按钮倒计时功能
Apr 10 Javascript
微信小程序如何获取手机验证码
Nov 04 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
浅谈Vue项目骨架屏注入实践
Aug 05 Javascript
解决Layui中templet中a的onclick参数传递的问题
Sep 20 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
Feb 23 Javascript
jQuery mobile的header和footer在点击屏幕的时候消失的解决办法
Jul 01 #Javascript
全面了解JavaScript的数据类型转换
Jul 01 #Javascript
全面解析JS字符串和正则表达式中的match、replace、exec等函数
Jul 01 #Javascript
浅谈JavaScript中的分支结构
Jul 01 #Javascript
Bootstrap下拉菜单效果实例代码分享
Jun 30 #Javascript
Bootstrap图片轮播组件使用实例解析
Jun 30 #Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
Jun 30 #Javascript
You might like
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
2019/04/03 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
Javascript图像处理思路及实现代码
2012/12/25 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
Angular路由简单学习
2016/12/26 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
vue实现某元素吸顶或固定位置显示(监听滚动事件)
2017/12/13 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
在Vue 中实现循环渲染多个相同echarts图表
2020/07/20 Javascript
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
Python 正则表达式操作指南
2009/05/04 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
通过shell+python实现企业微信预警
2019/03/07 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
python3注册全局热键的实现
2020/03/22 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
演讲稿开场白
2014/01/13 职场文书
母亲节感恩寄语
2014/02/21 职场文书
招商引资工作汇报
2014/10/28 职场文书
志愿者事迹材料
2014/12/26 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
Python jiaba库的使用详解
2021/11/23 Python