scss实战经验

摘要:
可以利用这个特点实现“换肤”功能。$color-primary:#3ecacb;$color-success:#4fc48d;$color-warning:#f3d93f;$color-danger:#f6588e;$color-info:#27c6fa;图片的使用$common-path:'./primary/assets/img/';$icon-see:$common-path+'icon-see.png';$icon-play:$common-path+'icon-play.png';$icon-comment:$common-path+'icon-comment.png';$icon-checkbox:$common-path+'icon-checkbox.png';2、@import导入scss文件@import"./base.scss";@import"./webupload.scss";@import"./message-hint.scss";3、局部文件命名的使用scss局部文件的文件名以下划线开头。这样,scss就不会再编译时单独编译这个文件输出css,而只把这个文件用作导入。

1、变量 $ 使用

可以通过变量来复用属性值,比如颜色、边框大小、图片路径等。可以利用这个特点实现“换肤”功能。

$color-primary: #3ecacb;
$color-success: #4fc48d;
$color-warning: #f3d93f;
$color-danger: #f6588e;
$color-info: #27c6fa;

图片的使用(该方法只会在使用相应图片时进行加载,不会导致额外性能问题)

$common-path: './primary/assets/img/';
$icon-see: $common-path+'icon-see.png';
$icon-play: $common-path+'icon-play.png';
$icon-comment: $common-path+'icon-comment.png';
$icon-checkbox: $common-path+'icon-checkbox.png';

2、@import导入scss文件

@import "./base.scss";
@import "./webupload.scss";
@import "./message-hint.scss";

3、局部文件命名的使用

scss局部文件的文件名以下划线开头。这样,scss就不会再编译时单独编译这个文件输出css,而只把这个文件用作导入。再使用scss时,混合器mixins是最适合的使用场景,因为混合器不需要单独编译输出css文件

scss实战经验第1张

4、scss的嵌套功能和父选择器标识符

嵌套功能和父选择器标识符&解决BEM长的问题:

.tea-assignhw {&__top {
margin:0;
}&__content {padding-left:45px;
}&__gradeselect {width:158px;
}}

嵌套中使用子选择器、兄弟选择器和伪类选择器

/*子选择器*/&__hint {margin:20px;font-size:14px;> p:first-child {
     font-weight: bold;
 }}
/*兄弟选择器*/&__input {width:220px;& + span {
margin-left:10px;
}}
/*伪类选择器*/&__browse {background:url($btn-search) no-repeat;&:hover {
  background: url($btn-search) -80px 0 no-repeat;
}&:visited {background:url($btn-search) -160px 0 no-repeat;
 }}

5、@mixin混合器和@extend指令的使用

@mixin混合器的使用

@mixin paneactive($image, $level, $vertical) {background:url($image) no-repeat $level $vertical;height:100px;width:30px;position:relative;top:50%;
}&--left-active {@include paneactive($btn-flip, 0, 0);
}&--right-active {@include paneactive($btn-flip, 0, -105px);
}

@extend继承的使用

.common-mod {height:250px;width:50%;background-color:#fff;text-align:center;
}&-mod {@extend .common-mod;
  float:right;
}&-mod2 {@extend .common-mod;
}

@mixin混合器默认参数值的使用

@mixin pane($dir: left) {width:35px;display:block;float:$dir;background-color:#f1f1f1;
}&__paneleft {@include pane;
}&__paneright {@include pane(right);
}

6、#{}插值的使用

通过#{}插值语句可以在选择器或属性名中使用变量。

页面级混合器中的类名利用#{}插值进行动态设置

@mixin home-content($class) {.#{$class} {position:relative;background-color:#fff;overflow-x:hidden;overflow-y:hidden;&--left {
    margin-left:160px;
 }&--noleft {margin-left:0;
 }}
}

7、运算的使用

SassScript支持数字的加减乘除、取整等运算 (+, -, *, /, %)

input组件根据输入框的高度设置左右内边距

.ps-input {display:block;&__inner {
    -webkit-appearance:none;padding-left:#{$--input-height + 10
   };
     padding-right: #{$--input-height + 10
   };
  }
}

8、相关scss自带函数的应用

scss自带一些函数,例如hsl、mix函数等

button组件的点击后颜色是将几种颜色根据一定的比例混合在一起,生成另一种颜色

&:focus {color:mix($--color-white, $--color-primary, $--button-hover-tint-percent);border-color:transparent;background-color:transparent;
}&:active {color:mix($--color-black, $--color-primary, $--button-active-shade-percent);border-color:transparent;
background-color
:transparent; }

@for指令可以在限制得范围内重复输出样式,每次按变量的值对输出结果进行变动

设置hwicon类底下第2到8个div子节点需设置样式

@for $i from 2 through 8 {.com-hwicon {
 > div:nth-child(#{$i}) {position:relative;float:right;
  }}
}

9、each遍历、map数据类型、@mixin/@include混合器、#{}插值结合使用

生成不同的选择器类,并且每个选择器类中的背景图片不同

$img-list: (
 (accessimg, $papers-access),
 (folderimg, $papers-folder),
 (bmpimg, $papers-bmp),
 (xlsimg, $papers-excel),
 (xlsximg, $papers-excel),
 (gifimg, $papers-gif),
 (jpgimg, $papers-jpg),
 (unknownimg, $papers-unknown)
);

@each $label, $value in $img-list {.com-hwicon__#{$label} {@include commonImg($value);
 }}

10、样式代码检查校验--stylelint插件

(1)需要安装gulp、stylelint、gulp-postscss 、 postcss-reporter、stylelint-config-standard,安装命令为:

npm install gulp stylelint gulp-postscss  postcss-reporter
stylelint-config-standard--save-dev

(2)安装完成后会在项目根目录下创建gulpfile.js文件,文件gulpfile.js配置为:

var reporter = require('postcss-reporter');
var stylelint = require('stylelint');
var stylelintConfig ={
'extends': 'stylelint-config-standard',
'rules': {
'at-rule-no-unknown': [
true, {
'ignoreAtRules': [
'extend',
'include',
'mixin',
'for']
    }
   ]
  }
};
gulp.task('scss-lint', function() {
var processors =[
   stylelint(stylelintConfig),
   reporter({
clearMessages: true,
throwError: true})
   ];
returngulp.src(
   ['src/style/*.scss']//需要工具检查的scss文件
).pipe(postcss(processors));});
 gulp.task('default', ['scss-lint']);

(3) stylelint-config-standard 检验规则

11、样式自动修复插件--stylefmt插件

stylefmt 是一个基于 stylelint 的代码修正工具,它可以基于stylelint的代码规范约定配置,对可修正的地方作格式化输出。

(1)gulp.js配置文件如下:

var stylefmt = require('gulp-stylefmt'); //css格式自动调整工具
gulp.task('stylefmt', function() {
returngulp.src(
  ['src/style/student/index.scss' //需要工具检查的scss文件
]).pipe(stylefmt(stylelintConfig))
    .pipe(gulp.dest('src/style/dest/student'));});
 gulp.task('fix', ['stylefmt']);

(2)运行命令进行样式修复,如下图:

scss实战经验第2张

12、将scss语法编译成css语法--koala工具

免责声明:文章转载自《scss实战经验》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python接口自动化-接口基础(一)解决mysql中只能通过localhost访问不能通过ip访问的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

1-1 sacc(scss)入门

定义: CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。 通俗的说,“CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。CSS 预处理器为 CSS 增加一些编程的特...

css学习_写法规范、选择器

1、css(层叠样式表)样式主要目的(让页面更好看些) css尽量不要写内联样式,保证结构和样式分离原则; html专门负责结构,css专门负责样式。 2、css写法规范 选择器  { 属性 :值 ; } 内联样式  写在标签里   style=“”属性:值“” 内部样式  写在head标签里的style标签里   外部样式   通过链接导入样式表  li...

[CSS]为什么不推荐在CSS中使用ID选择器

最近我在对 CSS 的样式进行一些性能测试,然后我的一些好友问我:为什么你不使用 IDs 来作为页面上一些特定的内容部分呢? 这个问题很难回答,有下面几个理由: 页面中的该元素无法重用 螺旋式下降导致的特异性 通过 IDs 用来标识一些非常特殊的内容,但牺牲了抽象性 性能方面可通过其他方式来解决 下面我们针对这四点进行深入探讨。 无法重用页面的元素 I...

CSS样式选择器

CSS样式选择器 一.基本选择器 类选择器 .name{} ID选择器 #name{} 元素选择器 name{} 通配符选择器(编译不通过) *{} 包含选择器 p c{}:parent下所有的同一名字的child 子元素选择器 p>c{}:parent下一层所有的同一名字的child 邻近兄弟元素选择器 c1+c2{}:同一层级中与child1相邻...

mui ——picker(选择器)

效果展示: 1.头部引入css:mui.picker和mui.poppicker 两个css文件  2.HTML: <div id='showUserPicker' class="search-item"> <span class="search-area">区</span> <span id='use...

# CSS常用selector选择器列举总结

CSS常用selector选择器列举总结 1.id选择器 2.class选择器 3.通配符选择器*,匹配所有元素。 4.tag标签选择器 5.空格 指的是子节点选择(也是后代选择器) 例如.class1 .class2指的是具有类名为class1 的元素下有着类名为class2的子元素。 6.无空格并写指的是同时满足条件的元素 例如.class1....