gpt4 book ai didi

css - html5shim、css3-mediaqueries.js 和 Modernizr 的区别

转载 作者:技术小花猫 更新时间:2023-10-29 11:06:07 30 4
gpt4 key购买 nike

我是响应式设计世界的新手。

我正在使用 http://www.responsivegridsystem.com/在我的设计中。它告诉添加以下标记

<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- All JavaScript at the bottom, except for Modernizr which enables HTML5 elements and feature detects -->
<script src="vendors/responsive/js/modernizr-2.5.3-min.js"></script>

由于媒体查询在 IE8 中不起作用,根据这个问题 IE7, IE8 support for css3 media query我也在使用以下标记
<!--[if lt IE 9]>
<script src="//css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->

这些都需要吗? html5shim、modernizr 和 css3mediaqueiries 之间有什么区别?

我需要使用modernizr吗?因为我没有在我的 js 文件中做任何事情,比如 jQuery。

最佳答案

它们服务于三个非常独立的目的,所有目的都非常重要,但并非所有(如果有)都总是需要的。

html5shiv aka html5shim

html5shiv 是一个脚本,允许您在本回答时在旧浏览器、Internet Explorer 6-9、Safari 4.x(和 iPhone 3.x)和 Firefox 3.x 中正确使用 html5 元素。

那么,这实际上意味着什么?它很简单。 html5 中有许多新元素(例如 <section><aside><header><footer> 等等),以及创建自己的自定义元素的能力。这意味着我们可以编写更多语义(和更清晰)的代码。所有伟大的事情,但不幸的是,较旧的浏览器不会将您的 css 应用于不属于它们支持的元素之一( <div><p><span> ,规范)。幸运的是@sjoerd-visscher dropped some knowledge并挽救了这一天。他发现如果你使用document.createElement要创建任何新元素,它都会将其注册为受支持的元素之一,并且 css 可以正常工作!
这意味着您实际上可以在生产中使用 html5 元素。这在当时是一件大事,幸运的是,随着那些旧浏览器的消亡,它变得越来越不重要。

除了注册元素之外,它已经扩展到为浏览器添加一些基本样式。

如果您不必支持 Internet Explorer 6-9、Safari 4.x(和 iPhone 3.x)或 Firefox 3.x.,那么您 不要需要使用 html5shiv。

css3-mediaqueries-js

css3-mediaqueries-js 添加了对名为 media queries 的 css 功能的支持在不支持它们的浏览器中。如果您不确定这意味着什么,请查看类似 The Boston Globe 的网站。 , Mitsubishi Australia , 或 techcrunch ,然后调整浏览器的大小。

媒体查询允许您根据浏览器的某些属性或属性组合(宽度、高度等)有条件地应用 css。它们非常强大,并为许多现代网页设计提供动力。

现在,问题是你是否真的需要像 css3-mediaqueries-js 这样的东西。这样做曾经很流行,但越来越多的人(包括我自己)推荐 mobile first design .这意味着基本样式应该是带有媒体查询的移动站点 添加 到基本设计,而不是隐藏/删除一些东西。因此,不支持媒体查询的浏览器(css​​3-mediaqueries-js 所针对的浏览器)将获得“移动”设计,而不是在每次调整大小时进行 polyfill,然后应用媒体查询。较旧的浏览器通常意味着较旧、较慢且较小的计算机。他们不仅缺乏对媒体查询的支持,而且他们的 javascript 引擎比支持当前 Chrome、Firefox 和 IE 的现代引擎慢数百(有时数千)倍。对于那些几乎没有那么强大的东西,所有额外的工作很容易导致那些旧浏览器的用户体验下降。

你是否应该使用它最终取决于你,但一定要问自己什么对用户最好,不一定是设计师:]

Modernizr

Modernizr 是一个功能检测库,它允许您以简单的方式检查新的 Web 功能。默认情况下,((您可以在此处构建自定义版本)[ http://modernizr.com/download/] ,更改您想要的任何内容)它会添加类 <html>页面上的元素,使得根据其结果修改设计变得非常容易。

.css-gradients .background {
background: linear-gradient(to bottom, black 0%, white 100%);
}
.no-css-gradients .background {
background: url(gradient.jpg);
}

(当然,这是一个非常简单的示例,您可以使用没有 Modernizr 的基本后备来完成同样的事情,但这只是作为一个易于遵循的示例)

它本身不会主动添加或删除任何内容,而是与 yepnope 之类的东西结合使用。 ,您可以测试某个功能,并有条件地为该功能添加一个 polyfill。

像这样的东西
yepnope({
test : Modernizr.mediaqueries,
nope : ['css3-mediaqueries.js']
});

将检查浏览器是否支持 mediaqueries,如果不支持,它将加载 css-mediaqueries-js 以填充对它的支持。

关于css - html5shim、css3-mediaqueries.js 和 Modernizr 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23368046/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com