Modernizr在初始化的时候会首先找寻class=“no-js”的元素:

<!DOCTYPE html>
<html class="no-js">
<head lang="en">
<title>ModernizrDemo</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="./stylesheets/base.css">
</head>
<body>
<script src="js/Modernizr.js"></script>
</body>
</html>

如果浏览器支持JavaScript,那么节点的class会被变成“js”,使用firebug或者谷歌控制台查看就是如下结果:

<!DOCTYPE html>
<html class="js fontface cssanimations
backgroundsize borderradius boxshadow csstransitions no-csscalc">
<head lang="en">
<title>ModernizrDemo</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="./stylesheets/base.css">
</head>
<body>
<script src="js/Modernizr.js"></script> </body></html>

我们可以看到,在html节点,附加了一些“未知”的样式名称,这正是Modernizr检测CSS支持情况的结果,如果附加的className是no-"",那么表明当前浏览器内核不支持改css属性,那么就为我们在开发中解决浏览器的差异上提供了很大的便利。

本文只阐述如题观点,如果你同时在使用sass作为css预处理器的话,实测可以告诉您一个技巧,来看一个例子:

.csscalc .mg-right{
margin-right:calc(100% - 900px);
}
.no-csscalc .mg-right{
margin-right: 3%;
}

上述样式说明了,在浏览器支持css运算函数calc的时候,右边距样式使用calc来计算,不支持的时候右边距样式为3%;

这就使得我们在使用sass的时候,如果我们很元素都在使用这个边距,

那么我们不能以一个函数(@mixin)来表示公共的右边距了,因为它不具备一个单独的样式木块(不具备一个具体名称mg-right),不能被命名空间.csscalc或者.no-csscalc所管理:

如下代码:

/**这种方式编译到样式中以后并不能被Modernizr所产成的命名空间所管理,bad**/
@mixin mixin_mg_right(){
margin-right: calc(100% - 900px);
margin-right: 3%;
}
body{
@include mixin_mg_right();
} /**使用继承的方式来管理。good**/
.csscalc .mg-right{
margin-right:calc(100% - 900px);
}
.no-csscalc .mg-right{
margin-right: 3%;
}
body{
@extend .mg-right;
}

如此,完结!

Sass结合Modernizr的使用方法的更多相关文章

  1. Sass 编译的几种方法

    常常有人会问,使用 Sass 进行开发,那么是不是直接通过“<link>”引用“.scss”或“.sass”文件呢? 那么这里告诉大家,在项目中还是引用“.css”文件,Sass 只不过是 ...

  2. sass学习笔记 -- sass的四种编译方法

    sass的四种编译方法:(.scss) (一)ruby下的命令行编译 首先需要安装ruby,注意需勾选Add Ruby executables to your PATH选项,以添加环境变量. ruby ...

  3. sass安装更新及卸载方法

    在 Windows 平台下安装 Ruby 需要先有 Ruby 安装包,大家可以到 Ruby 的官网(http://rubyinstaller.org/downloads)下载对应需要的 Ruby 版本 ...

  4. sass中文注释的解决方法和一些简单用法

    最近用sass来编写项目中的css,发现不能添加中文注释,报错如下 于是查阅了一下发现需要在scss文件顶部加上@charset "utf-8"即可解决. 在此顺便记录一些sass ...

  5. 2019最新create-react-app创建的react中使用sass/scss,以及在react中使用sass/scss公共变量的方法

    Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hampton Catlin设计并由Natalie Weizenbaum开发的层叠样式表语言.Sas ...

  6. Sass环境安装-Sass sublime 编辑器插件编译方法

    首先官网(http://www.ruby-lang.org/en/downloads/)下载 ruby (1)打开链接进入到下载页面,点击如下位置进行下载 (2)下载页面 (3)进入到各个版本的列表页 ...

  7. Sass基本数据类型和各类型的原生方法

    数据类型: 数字:1,2,3,11,10px (可以带单位) 字符串:"asd",'asd',asd (有引号和无引号都是字符串类型) 如 $name : zhang san ; ...

  8. sass初步认识2

    sass可以使用变量,采用 $ 来进行变量声明,格式为: $highlight-color:#f90;(声明方式和css属性声明类似.使用的变量名可以更加语义化) 与js分为全局变量和局部变量类似,s ...

  9. sass+require实现侧边栏

    一.效果图(如下)及使用的技术 实现用sass实现页面中右侧固定侧边栏的样式,用require.js实现返回顶部的功能 二.sass 具体的sass的介绍就不多说了,大家可以参考sass官网介绍,下面 ...

随机推荐

  1. 一次失败的面试——IBM电话面试

    前几天接到IBM的电话面试了,虽然被PASS了,还是发个博记录一下吧.这大概是我第一次比较正式的面试了,虽然只是通过电话,但是还是暴露出了自己的很多问题,总结下,前事不忘,后事之师嘛.:) 一号上午接 ...

  2. 剑指offer--面试题15--相关

    感受:清晰的思路是最重要的!!! 题目:求链表中间节点 ListNode* MidNodeInList(ListNode* pHead) { if(pHead == NULL) return NULL ...

  3. PHP之cookie相关实例教程与经典代码

    ·php 中cookie和session的用法比较 ·php会话控制cookie与Session会话处理 ·php中利用cookie实现购物车实例 ·php中cookie与session应用学习笔记 ...

  4. cf 363D

    贪心加二分 虽然比赛后才过 ........ /************************************************************************* &g ...

  5. Java学习第一篇:变量,数据类型,运算符,流程控制(简介)

    一.安装和配置jdk 1.jdk是什么? (1).jdk全称是Java Development Kit, Java开发工具包; (2).jdk是sun公司开发的; (3).jdk主要包括:jre(Ja ...

  6. jQuery1.9.1源码分析--Animation模块

    var fxNow, // 使用一个ID来执行动画setInterval timerId, rfxtypes = /^(?:toggle|show|hide)$/, // eg: +=30.5px / ...

  7. 【面试题021】包含min函数的栈

    [面试题021]包含min函数的栈  MinStack.cpp: 1234567891011121314151617181920212223242526272829303132333435363738 ...

  8. [LeetCode]Link List Cycle

    Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without using ex ...

  9. js正则函数match、exec、test、search、replace、split使用介绍

    match() 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) stringObj 必选项.对其进行查找的 String 对象或字符 ...

  10. redis、memcache、mongoDB有哪些区别(转载)

    转载: http://leandre.cn/database/64.html Memcached Memcached的优点: Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS ...