Less学习笔记 -- Nested rules (嵌套规则)

Less嵌套规则模仿了HTML结构,这样写可以让代码更简洁、更具层次感,上一小段代码先了解下

Less代码:

#header{
  color:black;
  .navigation{
    font-size:12px;
  }
  .logo{
    width:300px;
  }
}

CSS编译代码:

#header {
  color: black;
}
#header .navigation {
  font-size: 12px;
}
#header .logo {
  width: 300px;
}

使用这种方法也可以在混合中包含伪类,常见的用法就是css reset里面的清除浮动

Less代码:

.clearfix{
  zoom:1;
  &:after{
    content:‘‘;
    display:block;
    clear:both;
  }
}

CSS编译代码:

.clearfix {
  zoom: 1;
}
.clearfix:after {
  content: ‘‘;
  display: block;
  clear: both;
}

其中,&运算符表示一个嵌套规则的父选择器,常用于修改一个类或者定义伪类选择器,比如:

Less代码:

a{
  color:blue;
  &:visited{
    color:red;
  }
  &:hover{
    color:yellow
  }
}

CSS编译代码:

a {
  color: blue;
}
a:visited {
  color: red;
}
a:hover {
  color: #ffff00;
}

在上面清除浮动的代码中,如果不加&,会是什么效果呢?

Less代码:

.clearfix{
  zoom:1;
  :after{
    content:‘‘;
    display:block;
    clear:both;
  }
}

CSS编译代码:

.clearfix {
  zoom: 1;
}
.clearfix :after {
  content: ‘‘;
  display: block;
  clear: both;
}

不难发现,这是一个典型的后代选择器,并不是我们想要的效果

&选择符的另一个非常重要的用途就是生产重复的类名,比如在写CSS公共样式的时候会有各种各样的button样式

Less代码:(在这里复习下less中引入路径的写法)

@images:‘../images‘;
.button{
  &-ok{
    background:url(‘../images/1.jpg‘)
  }
  &-cancel{
    background:url(‘@{images}/2.jpg‘)
  }
  &-custom{
    background:url(‘@{images}/3.jpg‘)
  }
}

CSS编译代码:

.button-ok {
  background: url(‘../images/1.jpg‘);
}
.button-cancel {
  background: url(‘../images/2.jpg‘);
}
.button-custom {
  background: url(‘../images/3.jpg‘);
}

&选择符可以在选择器中多次出现,反复引用父选择器,而不是重复父选择器的类名

Less代码:

.link{
  &+&{
    color:red;
  }
  & &{
    color:purple;
  }
  &&{
    color:silver;
  }
  &, &ish{
    color:pink;
  }
}

CSS编译代码:

.link + .link {
  color: red;
}
.link .link {
  color: purple;
}
.link.link {
  color: silver;
}
.link,
.linkish {
  color: pink;
}

&选择符表示所有的父选择器而不是特指最近的父选择器

Less代码:

.grand{
  .parent{
    &>&{
      color:red;
    }
    & &{
      color:green;
    }
    &&{
      color:blue;
    }
    &,&ish{
      color:black;
    }
  }
}

CSS编译代码:

.grand .parent > .grand .parent {
  color: red;
}
.grand .parent .grand .parent {
  color: green;
}
.grand .parent.grand .parent {
  color: blue;
}
.grand .parent,
.grand .parentish {
  color: black;
}

&选择符还可以用于生成一个逗号分割列表的所有可能的选择器排列

Less代码:

p, a, ul, li {
  border-top: 2px dotted #366;
  & + & {
    border-top: 0;
  }
}

CSS编译代码:

p,
a,
ul,
li {
  border-top: 2px dotted #366;
}
p + p,
p + a,
p + ul,
p + li,
a + p,
a + a,
a + ul,
a + li,
ul + p,
ul + a,
ul + ul,
ul + li,
li + p,
li + a,
li + ul,
li + li {
  border-top: 0;
}
时间: 2024-08-11 01:33:59

Less学习笔记 -- Nested rules (嵌套规则)的相关文章

学习笔记:ajax使用规则讲解

ajax: 局部数据更新:1.ajax 由 html css Dhtml  js xml json dom 的一种结合. ajax 是一种技术,它是一种解决方案.  具有一些互动性的不需要页面刷新,减少用户的心理等待时间,并能够及时响应数据的一种解决方案2.ajax 的特点:    ajax 是基于标准的html css xml的构造    使用dom对象动态的显示和交互数据     它的数据交互格式 文本格式 xml  json    使用基于浏览器的xmlHTTPRquest 对象进行数据同

Sharepoint2013搜索学习笔记之自定义查询规则(十)

自定义查询规则,可以根据搜索的关键字将指定的一个或一堆搜索结果提升到第一的位置,如我搜索周杰伦,可以指定搜索最靠前的结果是sharepoint网站内周杰伦的视频如下图: 第一步,进入管理中心,点击管理应用程序,点击search service应用程序,进入搜索管理页面,点击查询规则 第二步,选择一个结果源,如sharepoint本地结果,然后点击新建查询规则,填好相应值, 第三步,点添加结果块编辑查询语句,然后保存. Sharepoint2013搜索学习笔记之自定义查询规则(十)

ReactJS学习笔记(二)-组件嵌套与组件复用

我们终要远行,最终告别稚嫩的自己. 使用React来构建web应用,每个页面都将是多个组件组成,并且相互嵌套来构成的,接下来就学习下组件的嵌套. 一.组件嵌套: 背景交代: 1.创建一个html,包含引用的相关js.需要被渲染的div: 2.创建一个有label与input标签组成的简单组件 - IvanInput,并可以通过传入数组来渲染多组label与input标签,拥有不同的label名称.inputType.inputRef.inputName及input的onChange事件: 3.创

JMeter学习笔记--JMeter执行顺序规则

JMeter执行顺序规则: 配置元件 前置处理器 定时器 采样器 后置处理器(除非服务器响应为空) 断言 监听器 只有当作用域内存在采样器时,定时器.断言.前置/后置处理器才会被执行,逻辑控制器和采样器按照在测试树种出现的顺序执行.其他测试元件会依据自身的作用域来执行,另外与测试元件所属的类型有关(归属于同一类型的测试元件,会按照他们在测试树中出现的顺序来执行. 测试计划实例如下: Controller post-Processor1 Sampler1 Sampler2 Timer1 Asser

公益图书馆-学习笔记六 volist嵌套

volist嵌套使用 1.重要特性是如果volist的name对应一个数组,则它会把数组遍历一遍.例如 <volist name="comments" id="vo">XXX</volist>而 $comments[0]=$comment1; $comments[1]=$comment2;则上面代码会先把$comment1当成vo把代码XXX执行一遍:然后再把$comment2当成vo再把XXX执行一遍.所以画评论框时只要上面一段代码,它就会

MongoDB学习笔记~官方驱动嵌套数组对象的更新

回到目录 对于数组对象mongodb本身是支持的,不过对于数组的更新,mongodb的Csharp驱动目前只支持一级,即你的对象里包含数组,而数组又包括数组,这表示两层,这在更新子数组时,Csharp驱动是不支持的,今天要说的就是如何让它支持子数组的更新,下面是我给出的数据结构 在Mongodb的Csharp驱动里,一般的更新方法如下 update = new UpdateDocument {{ "$set", new BsonDocument("OrderList.$.Us

[转载]SharePoint 2013搜索学习笔记之自定义结果源

搜索中心新建好之后在搜索结果页上会默认有所有内容,人员,对话,视频这四个结果分类,每个分类会返回指定范围的搜索结果,这里我再添加了部门日志结果分类,搜索这个分类只会返回部门日志内容类型的搜索结果,要实现这个效果,步骤如下: 第一步,进入管理中心,进入管理应用程序,点击Search Service 应用程序,进入搜索管理页,再点击结果源如图: 第二步,新建结果源,填写名称,协议填写本地sharepoint,凭据信息选择默认, 第三步,点击启动查询生成器,生成查询语句,最后点保存,接着继续点新建内容

StyleCop学习笔记——自定义规则

本文将简单的一步一步的指导这可能有助于学习如何创建自己的规则 1.创建一个项目. Visual Studio创建一个新的类库项目.NET3.5 2.引用两个DLL,StyleCop.dll和StyleCop.Csharp.dll. 3.添加自定义的规则. MyCustomAnalyzer.cs代码如下: using StyleCop; using StyleCop.CSharp; namespace MyCustomRules { /// <summary> /// Custom analyz

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则

Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeplex.com/ 文档也写的很详细,自己在看它的文档和代码时写了一些demo和笔记,还有它实现的原理记录一下 学习Caliburn.Micro要有MEF和MVVM的基础 先说一下他的命名规则和引导类 以后我会把Caliburn.Micro的 Actions IResult,IHandle ICondu