html

先按结构写html,
每个模块用div包起来,给class名
再逐一细化每个模块
写html先不要管样式

CSS

reset.scss单独一个文件
@import要用分号结尾

font和全局变量

搜索 “font.css” 中文
https://zenozeng.github.io/fonts.css/
复制font-familiy的值
image.png
新建helper.scss文件,定义变量$font-hei的值为复制的值,在其他文件中引用,设置body的font-family为$font-hei,
楷体和宋体也引入,方便后面用到($font-kai, $font-song)
line-height一般是1.5
color一般用 #333, 不要用纯黑色

  1. @import "~@/assets/style/helper.scss";
  2. @import "~@/assets/style/reset.scss";
  3. body{
  4. -webkit-font-smoothing: antialiased;
  5. -moz-osx-font-smoothing: grayscale;
  6. line-height: 1.5;
  7. font-family: $font-hei;
  8. color: #333;
  9. }

helper.scss只放变量函数,不要放class的样式

**ctrl + shift + F**全局搜索

body和input不会继承body的字体

  1. button, input {
  2. font: inherit;
  3. }

让文字垂直居中

如果确定只有一行,则让height和line-height相等即可

button

image.png

  1. button {
  2. background: transparent; /* 默认样式很丑 */
  3. border: none;
  4. color: #999;
  5. border-bottom: 1px solid; /* border不给颜色则和color相同 */
  6. padding: 0 4px; /* 让border比文字长 */
  7. }

webstorm 直接另起一行的快捷键** shift + enter**

去除input选中时的边框

  1. :focus {
  2. outline: none;
  3. }

让文字水平居中

  1. text-align: center;

::before和::after不要忘了content

  1. &.selected{
  2. &::before{
  3. content: '';
  4. position: absolute;
  5. bottom: 0;
  6. left: 0;
  7. height: 4px;
  8. width: 100%;
  9. background: #333;
  10. }
  11. }

等宽字体

  1. font-family: Consolas, monospace;

当用flex布局行不通时,改用float

父元素要加clearfix

  1. .clearfix::after {
  2. content: '';
  3. display: block;
  4. clear: both
  5. }

SCSS使用继承@extend和选择器占位符%x

在helper.scss里写

  1. // place holder
  2. // %clearFix只是一个占位符,其他选择器会替换掉这里
  3. %clearFix {
  4. content: '';
  5. display: block;
  6. clear: both;
  7. }

使用继承

  1. .buttons {
  2. @extend %clearFix;
  3. }

使用颜色函数

  1. button {
  2. $bg: #f2f2f2; // 块级作用域
  3. &:nth-child(1) {
  4. background: $bg;
  5. }
  6. &:nth-child(2), &:nth-child(5) {
  7. background: darken($bg, 4%);
  8. }
  9. &:nth-child(3), &:nth-child(6), &:nth-child(9) {
  10. background: darken($bg, 4*2%);
  11. }
  12. &:nth-child(4), &:nth-child(7), &:nth-child(10) {
  13. background: darken($bg, 4*3%);
  14. }
  15. &:nth-child(8), &:nth-child(11), &:nth-child(13) {
  16. background: darken($bg, 4*4%);
  17. }
  18. &:nth-child(14) {
  19. background: darken($bg, 4*5%);
  20. }
  21. &:nth-child(12) {
  22. background: darken($bg, 4*6%);
  23. }
  24. }

内阴影

阴影可以添加多个,用逗号分隔
inset代表内阴影
fade_out函数改变颜色透明度

  1. box-shadow: inset 0 -3px 3px -3px fade_out(black, .75),
  2. inset 0 3px 3px -3px fade_out(black, .75);

使用classPrefix

当要用props给一个组件传class时,为避免参数过多,可以使用classPrefix方法

  1. <template>
  2. <div class="content-wrapper" :class="`${classPrefix}-wrapper`">
  3. <div class="content" :class="`${classPrefix}-content`">
  4. <slot></slot>
  5. </div>
  6. <Nav/>
  7. </div>
  8. </template>
  9. <script lang="ts">
  10. export default {
  11. name: 'Layout',
  12. props:['classPrefix']
  13. };
  14. </script>

在vue文件中可以有多个