Sass的嵌套

前边大概说了sass的集成和使用方法,现在开始说Sass的功能

1,sass的标签嵌套

先写一个列表sass.html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="style/common.css" type="text/css">
</head>
<body>

   <ul class="list">
        <li>
            <a href="#">dsadasdasdsadsad</a>
            <span>2017-01-01</span>
        </li>
       <li>
           <a href="#">dsadasdasdsadsad</a>
           <span>2017-01-01</span>
       </li>
       <li>
           <a href="#">dsadasdasdsadsad</a>
           <span>2017-01-01</span>
       </li>
       <li>
           <a href="#">dsadasdasdsadsad</a>
           <span>2017-01-01</span>
       </li>
       <li>
           <a href="#">dsadasdasdsadsad</a>
           <span>2017-01-01</span>
       </li>
       <li>
           <a href="#">dsadasdasdsadsad</a>
           <span>2017-01-01</span>
       </li>
   </ul>

</body>
</html>

常规的.css样式写法

.list{

}

.list li{

}

.list li a{

}

.list li span{

}

sass写法-嵌套式,相比纵深式的写法省去了很多重复书写,将重复的.list写在外层

.list{

  li{

  }

  a{

  }

  span{

  }

}

我们加入一些样式,如下:
经典的列表布局,使用sass变量自动计算,实现纵向居中

li {
  list-style: none; }

body, ol, ul, h1, h2, h3, h4, h5, h6, p, th, td, dl, dd, form, fieldset, legend, input, textarea, select {
  margin: 0;
  padding: 0; }

.list{

  $li_h:30px;

  li{
    height: $li_h;
    line-height: $li_h;

  }

  a{
    float: left;
  }

  //sass处理字体居中显示的计算逻辑
  span{

    font-size: small;
    float: right;
    width: 100px;
    height: 12px;
    background-color: yellow;
    margin-top: ($li_h - 12px) / 2; //CSS3规则 前后必须有空格
  }
}

sass编译成.css文件后输出:

li {
  list-style: none; }

body, ol, ul, h1, h2, h3, h4, h5, h6, p, th, td, dl, dd, form, fieldset, legend, input, textarea, select {
  margin: 0;
  padding: 0; }

.list li {
  height: 30px;
  line-height: 30px; }
.list a {
  float: left; }
.list span {
  font-size: small;
  float: right;
  width: 100px;
  height: 12px;
  background-color: yellow;
  margin-top: 9px; }

运行查看

sass

当li发生变化时,只需要修改sass变量值即可,无需重新计算间距


2,sass的属性嵌套

1,复合属性的嵌套

例如:font-style,font-weight,font-size,font-family

$ms: "Arial","Microsoft YaHei","黑体","宋体",sans-serif;

.box{
  //复合样式
  font:{
    style: normal;
    weight: bold;
    size: 14px;
    family: $ms;
  }
}

编译后

.box {
  font-style: normal;
  font-weight: bold;
  font-size: 14px;
  font-family: "Arial", "Microsoft YaHei", "黑体", "宋体", sans-serif; }

2,对于更多更复杂的情况,如忽略根命名的嵌套,合并嵌套,组合嵌套的实现如下

.news{

  //忽略root嵌套
  @at-root
    .news_title{
      width: 10px;
    }

  // 合并嵌套
  .news_content{
    width: 20px;
  }

  //组合嵌套
  &_content1{
    width: 20px;
    &_content2{
      width: 20px;
    }
  }

}

编译结果:

.news_title {                   // 忽略了根标签 .news
  width: 10px; }
.news .news_content {           // 在根节点.news下
  width: 20px; }
.news_content1 {                // 组合了根节点.news成为当前标签的一部分
  width: 20px; }
  .news_content1_content2 {     // 多层组合&值为上一层的标签名称
    width: 20px; }

这样通过sass的语法,使用更少的代码实现了可配置的css样式,接下来我们还要谈一下sass的混合和继承

修改记录

20170125:
对于忽略根命名,合并,组合的嵌套,编译结果添加sass语法的注释
20170427:
修改错别字 : 自合->组合

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BraveWangDev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值