关于Less里的css一些规则,了解入门less
2016-11-28 15:42
274 查看
1、.class1{&:hover{ //&表示当前标签、类、id的hover opacity: 0.9; }}2、只要修改Less的代码,CSS会自动生成/* Less */@color: #4D926F;//自定义color的颜色#header { color: @color;}h2 { color: @color;}/* 生成的 CSS */#header { color: #4D926F;}h2 { color: #4D926F;}3、在引入less.js前先要把样式文件引入 :<link rel="stylesheet/less" type="text/css" href="styles.less"><script src="less.js" type="text/javascript"></script>4、混合:混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。// LESS.rounded-corners (@radius: 5px) { border-radius: @radius; -webkit-border-radius: @radius; -moz-border-radius: @radius;}#header { .rounded-corners;}#footer { .rounded-corners(10px);}/* 生成的 CSS */#header { border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px;}#footer { border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px;}5、嵌套规则:我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。// LESS#header { h1 { font-size: 26px; font-weight: bold; } p { font-size: 12px; a { text-decoration: none; &:hover { border-width: 1px } } }}/* 生成的 CSS */#header h1 { font-size: 26px; font-weight: bold;}#header p { font-size: 12px;}#header p a { text-decoration: none;}#header p a:hover { border-width: 1px;}6、函数 & 运算运算提供了加,减,乘,除操作;可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。LESS中的函数一一映射了JavaScript代码,可以操作属性值。// LESS@the-border: 1px;@base-color: #111;@red: #842210;#header { color: @base-color * 3; border-left: @the-border; border-right: @the-border * 2;}#footer { color: @base-color + #003300; border-color: desaturate(@red, 10%);}/* 生成的 CSS */#header { color: #333; border-left: 1px; border-right: 2px;}#footer { color: #114411; border-color: #7d2717;}7.在客户端使用引入你的 .less 样式文件的时候要设置 rel 属性值为 “stylesheet/less”:<link rel="stylesheet/less" type="text/css" href="styles.less">然后点击页面顶部download按钮下载 less.js, 在<head> 中引入:<script src="less.js" type="text/javascript"></script>注意你的less样式文件一定要在引入less.js前先引入。备注:请在服务器环境下使用!本地直接打开可能会报错!监视模式监视模式是客户端的一个功能,这个功能允许你当你改变样式的时候,客户端将自动刷新。要使用它,只要在URL后面加上'#!watch',然后刷新页面就可以了。另外,也可以通过在终端运行less.watch()来启动监视模式。8、用变量名定义为变量@fnord: "I am fnord.";@var: 'fnord';content: @@var;输出: content: "I am fnord.";9 定义不带参数属性集合,如果你想隐藏这个属性集合,不让它暴露到CSS中去,但是你还想在其他的属性集合中引用,你会发现这个方法非常的好用:.wrap () { text-wrap: wrap; white-space: pre-wrap; white-space: -moz-pre-wrap; word-wrap: break-word;}pre { .wrap }输出:pre { text-wrap: wrap; white-space: pre-wrap; white-space: -moz-pre-wrap; word-wrap: break-word;}10 @arguments 变量包含了所有传递进来的参数. 如果你不想单独处理每一个参数的话就可以像这样写:.box-shadow (@x: 0, @y: 0, @blur: 1px, @color: #000) { box-shadow: @arguments; -moz-box-shadow: @arguments; -webkit-box-shadow: @arguments;}.box-shadow(2px, 5px);将会输出: box-shadow: 2px 5px 1px #000; -moz-box-shadow: 2px 5px 1px #000; -webkit-box-shadow: 2px 5px 1px #000;11 模式匹配和导引表达式有些情况下,我们想根据传入的参数来改变混合的默认呈现,比如下面这个例子:.mixin (@s, @color) { ... }.class { .mixin(@switch, #888);}如果想让.mixin根据不同的@switch值而表现各异,如下这般设置:.mixin (dark, @color) { color: darken(@color, 10%);}.mixin (light, @color) { color: lighten(@color, 10%);}.mixin (@_, @color) { display: block;}现在,如果运行:@switch: light;.class { .mixin(@switch, #888);}就会得到下列CSS:.class { color: #a2a2a2; display: block;}如上,.mixin就会得到传入颜色的浅色。如果@switch设为dark,就会得到深色。具体实现如下:第一个混合定义并未被匹配,因为它只接受dark做为首参第二个混合定义被成功匹配,因为它只接受light第三个混合定义被成功匹配,因为它接受任意值只有被匹配的混合才会被使用。变量可以匹配任意的传入值,而变量以外的固定值就仅仅匹配与其相等的传入值。我们也可以匹配多个参数:.mixin (@a) { color: @a;}.mixin (@a, @b) { color: fade(@a, @b);}Now if we call .mixin with a single argument, we will get the output of the first definition, but if we call it with two arguments, we will get the second definition, namely @a faded to @b.引导当我们想根据表达式进行匹配,而非根据值和参数匹配时,导引就显得非常有用。如果你对函数式编程非常熟悉,那么你很可能已经使用过导引。为了尽可能地保留CSS的可声明性,LESS通过导引混合而非if/else语句来实现条件判断,因为前者已在@media query特性中被定义。以此例做为开始:.mixin (@a) when (lightness(@a) >= 50%) { background-color: black;}.mixin (@a) when (lightness(@a) < 50%) { background-color: white;}.mixin (@a) { color: @a;}when关键字用以定义一个导引序列(此例只有一个导引)。接下来我们运行下列代码:.class1 { .mixin(#ddd) }.class2 { .mixin(#555) }就会得到:.class1 { background-color: black; color: #ddd;}.class2 { background-color: white; color: #555;}导引中可用的全部比较运算有: > >= = =< <。此外,关键字true只表示布尔真值,下面两个混合是相同的:.truth (@a) wh4000en (@a) { ... }.truth (@a) when (@a = true) { ... }除去关键字true以外的值都被视示布尔假:.class { .truth(40); // Will not match any of the above definitions.}导引序列使用逗号‘,’—分割,当且仅当所有条件都符合时,才会被视为匹配成功。.mixin (@a) when (@a > 10), (@a < -10) { ... }导引可以无参数,也可以对参数进行比较运算:@media: mobile;.mixin (@a) when (@media = mobile) { ... }.mixin (@a) when (@media = desktop) { ... }.max (@a, @b) when (@a > @b) { width: @a }.max (@a, @b) when (@a < @b) { width: @b }最后,如果想基于值的类型进行匹配,我们就可以使用is*函式:.mixin (@a, @b: 0) when (isnumber(@b)) { ... }.mixin (@a, @b: black) when (iscolor(@b)) { ... }下面就是常见的检测函式:iscolorisnumberisstringiskeywordisurl如果你想判断一个值是纯数字,还是某个单位量,可以使用下列函式:ispixelispercentageisem最后再补充一点,在导引序列中可以使用and关键字实现与条件:.mixin (@a) when (isnumber(@a)) and (@a > 0) { ... }使用not关键字实现或条件.mixin (@b) when not (@b > 0) { ... }
相关文章推荐
- RGB/YUV/YCbCr--关于显示,颜色你需要了解的一些 事 入门扫盲好文章
- 关于DIV+CSS的一些命名规则
- 关于css的一些技巧
- CSS入门1:关于css样式表
- 关于W3C CSS标准的一些经验
- 你需要了解的关于浮动的一些概念
- 关于it咨询公司的帖子――可以很好的了解一些大的国外it公司情况
- [J2EE]使用 EJB 组件你需要了解些什么呢?--是一些关于使用条件的判断标准
- 关于大型信息系统架构中js、css、images及用户上传图片、流媒体等等资源部署规则
- 关于css 的一些琐碎知识
- 一些关于vim的入门资料
- DIV+CSS网页布局常用的一些命名规则和书写
- CSS里关于鼠标样式的一些属性
- 关于CSS的一些注意事项
- DIV+CSS布局入门教程(六) -- 关于ID和CLASS
- 关于XHTML+CSS初步了解:div+css的叫法是错误滴……
- 关于Dreamweaver冲突的CSS规则
- 关于CSS+div的一些见解
- 关于CSS的一些基础应用
- 一些关于vim的入门资料