【问题标题】:Bootstrap 3 - NavBar Cross-browser issueBootstrap 3 - 导航栏跨浏览器问题
【发布时间】:2015-02-07 13:48:37
【问题描述】:

我使用 Bootstrap 创建了一个页面。我制作了一个灵活的导航栏,它在 Mozilla 中看起来很棒。


而当我使用谷歌浏览器时,会发生这种情况

这是为什么?对此有什么解决办法?

/* bootstrap 3 helpers */

.navbar-form input,
.form-inline input {
  width: auto;
  position: absolute;
}
#nav.affix {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 10;
}
/* Create a medium height at 40px */

.navbar-md {
  min-height: 40px
}
.navbar-md .navbar-brand,
.navbar-md .navbar-nav>li>a {
  padding-top: 10px;
  padding-bottom: 10px
}
.navbar-md .navbar-brand {
  height: 40px
}
.navbar-md .navbar-toggle {
  margin: 6px 12px 6px 0px;
  padding: 6px 7px 6px 7px;
}
.navbar-md .navbar-toggle .icon-bar {
  width: 19px;
}
.container#slider {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
.container-full#headerC {
  padding: 15px;
  background-color: #8F1925;
  margin-top: 0px;
}
/* RESPONSIVE HEADER*/

.navbar-header {
  background-image: url("bootstraplogo.png", "bootstraplogoslice1.png") background-repeat: no-repeat, repeat-x;
  background-position: center;
}
@media only screen and (min-width: 479px) and (max-width: 991px) {
  
  .navbar-header {
    background-size: auto auto;
  }
  .navbar-header {
    height: 45px;
  }
}
@media only screen and (max-width: 479px) {
  .navbar-header {
    background-size: auto 50px, 1px 50px;
  }
  .navbar-md#header {
    height: 50px;
  }
}
/* RESPONSIVE HEADER*/

.container-header {
  margin-left: auto;
  margin-right: auto;
  padding-left: 15px;
  padding-right: 15px;
}
.text-center {
  
}

p#headerP {
  display: inherit;
  padding: 30px 0 10px;
  text-align: center;
  text-shadow: 1px 1px 2px #76141D;
  font-family: "Josefin Slab", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 5em;
  font-weight: 700;
  line-height: normal;
  color: #fff;
}
p#subheader {
  display: inherit;
  margin: 0;

  padding: 0 0 40px;
  text-align: center;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  text-transform: uppercase;
  font-size: 1.25em;
  font-weight: 400;
  letter-spacing: 3px;
  color: #E72635;
}

.p img {
  float: left;
  width: 100px;
  height: 100px;
  background: #555;
}

/*  */
/* Custom container */
.container-full {
  margin: 0 auto;
  width: 100%;
}
<head>
    <title>The University Digest</title>
    <!-- Bootstrap Core CSS -->
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet"/>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <!-- Custom CSS -->
    <link href="css/business-casual.css" rel="stylesheet">
	<link href="css/menu.css" rel="stylesheet">
    <!-- Fonts -->
    <link href="http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" rel="stylesheet" type="text/css">
    <link href="http://fonts.googleapis.com/css?family=Josefin+Slab:100,300,400,600,700,100italic,300italic,400italic,600italic,700italic" rel="stylesheet" type="text/css">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>

<body id="page-top" data-spy="scroll" data-target=".navbar-fixed-top">
	<div class="container-full" id="headerC">
		
			<header class="masthead">

	
			  <p id="headerP">The University Digest</p>
			  <p id="subheader">The Official Student Publication of Western Mindanao State University</p>
			</header>
		
	</div>

<!-- Navigation -->
	<div id="nav">
	  <div class=" navbar-custom navbar navbar-inverse navbar-md">
		<div class="navbar-header">
		  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-inverse-collapse">
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
			<span class="icon-bar"></span>
		  </button>
		  <a class="navbar-brand " href="#">Menu</a>
		</div>
		<div class="navbar-collapse collapse navbar-inverse-collapse navbar-md">
		  <ul class="nav navbar-nav ">
			<li><a href="#">Home</a>
			</li>
			<li class="dropdown">
			  <a href="#" data-toggle="dropdown" class="dropdown-toggle">Articles <b class="caret"></b></a>
			  <ul class="dropdown-menu">
				<li><a href="#">Article</a>
				</li>
				<li><a href="#">Comics</a>
				</li>
				<li><a href="#">Editorial Cartoon</a>
				</li>
				<li><a href="#">Uncensored</a>
				</li>
			  </ul>
			</li>
			<li class="dropdown">
			  <a href="#" data-toggle="dropdown" class="dropdown-toggle">Publications<b class="caret"></b></a>
			  <ul class="dropdown-menu">
				<li><a href="#">Newsletters</a>
				</li>
				<li><a href="#">Magazine</a>
				</li>
				<li><a href="#">Tejido</a>
				</li>
			  </ul>
			  <li><a href="#">Applications</a>
			</li>
			  <li class="dropdown">
				<a href="#" data-toggle="dropdown" class="dropdown-toggle">The Staff<b class="caret"></b></a>
				<ul class="dropdown-menu">
				  <li><a href="#">Editorial Board</a>
				  </li>
				  <li><a href="#">By-Laws</a>
				  </li>
				  <li><a href="#">Contacts</a>
				  </li>
				</ul>
				<li><a href="#">WMSU Portal</a>
				</li>
				<li><a href="#">Log In</a>
				</li>
			</li>
		 </ul>	
		</ul>
	   </div>
	  </div>
	</div>

我感觉它与 min-width 的东西有关,但我尝试过操纵它,但我无法弄清楚

【问题讨论】:

  • 我认为这就是 Chrome 呈现菜单字体的方式。您可以看到字母间距看起来更大。
  • 我注意到在代码 sn-p 中问题不存在并且您的菜单字体已更改为使用“Helvetica Neue”、Helvetica、Arial、sans-serif;而不是 CSS 代码中的自定义“Josefin Slab”。 @im1dermike 是正确的。
  • "Josefin Slab" 用于标题字体,虽然我尝试过操作它们但无济于事。

标签: html css twitter-bootstrap cross-browser


【解决方案1】:

在您的其他文件之前包含Nicholas Gallagher's normalize CSS 文件,它将有效地重置浏览器预设的填充/边距值,允许它们采用相同的起点。通过添加来做到这一点:

<link rel="stylesheet" type="text/css" href="http://cdnjs.cloudflare.com/ajax/libs/normalize/3.0.1/normalize.css"> 

在您的其他 CSS 文件之前的 &lt;head&gt;

另一种解决方案是改用YUI reset library。通过添加来做到这一点:

<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"> 

在您的其他 CSS 文件之前的 &lt;head&gt;

其中任何一个都可以在编写 CSS 时实现更轻松的跨浏览器兼容性。

编辑

正如投反对票所暗示的那样,应该包括 CSS 重置。为了排除故障并查看一个 CSS 重置是否会更好,我会尝试一个然后另一个。无论如何,您将更详细地了解每种方法的帮助。

话虽如此,我进行了更多研究,一个类似的案例已被记录为 Chrome 错误(请参阅此处:https://superuser.com/questions/803601/text-size-suddenly-got-bigger-on-all-sites-on-google-chrome/803650#803650)。是的,浏览器的渲染方式确实不同(不多,但足以让设计师失望)并且已经生成了重置 CSS,但也尝试在 Google Chrome Canary 中运行您的网站。它包含 Chrome 的最新功能。如果它在 Canary 中按预期运行,我会像您一样继续进行,因为这些更改最终应该会转移到 Chrome。

也可以将其添加到您的 CSS 中:

pre,
code,
kbd,
samp,
tt{
  font-family:monospace,monospace;
  font-size:1em;
}

这些元素在大多数浏览器中通常默认为等宽字体。这两个属性中的第一个专门针对基于 webkit 的浏览器。让我知道这是否有效。

编辑 2

将此添加到您的 css 中,并使用它们各自的字体大小重写您的类。这更像是一种hack,我不鼓励这样做,但它可能会有所帮助:

@media screen and (-webkit-min-device-pixel-ratio:0) { 
  Body or other target {
    font-size: some px;      
  }
}

看看在两个浏览器中使用像 arial 这样的网络安全字体是否会呈现不同的大小。有时自定义的会不一样。

【讨论】:

  • @cvrebert 更新了答案,先生。
  • 非常感谢您的回答!我已经尝试了你所说的一切,但不幸的是它们都没有奏效。你有什么其他的建议来做这件事吗?截止日期快到了,我快死了。哈哈
  • 它在 Canary 中仍然很混乱 :(
【解决方案2】:

我找到了! :)

.navbar-nav {
    text-transform: uppercase;
    font-weight: 400;
    letter-spacing: 0.8px;
}

字母间距是罪魁祸首。感谢@mijopabe 的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2013-12-17
    • 2014-06-21
    • 2016-04-16
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多