旺财记账项目-Money.vue组件实现(上)

2020-02-06  本文已影响0人  Ories

1. 小技巧:快速包裹每一行

2. input,label 的写法

<label for="xxx"></label>
<input id = 'xxx' type="text">
<label>
  <span>备注</span>
  <input type="text">
</label>

3. 文件行数规则

4. 开始写 CSS

// reset.scss
* {
  margin: 0; padding: 0;
  box-sizing: border-box;
}

a{
  text-decoration: none;
  color:inherit;
}

// app.vue
@import "~@/assets/style/reset.scss";
// helper.scss
$font-hei:  -apple-system, "Noto Sans", "Helvetica Neue", Helvetica, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", "ST Heiti", SimHei, "WenQuanYi Zen Hei Sharp", sans-serif;
// app.vue
body{
  line-height: 1.5;
  font-family: $font-hei;
}

4. 写css推荐顺序

5. scss的用法

.tags {
  > .current {

  }
}
.tags {
  &.current {

  }
}

6. 按钮字体样式不会继承

button, input{
  font: inherit;
}

7. 字体居中解决

8. 字的下划线比字长

border-bottom: 1px solid;
padding: 0 4px;

9. selected下划线的做法

&.selected::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: #333;
}

10. 处理没有的字体,在其后面加上一类字体。

// monospace就是等宽的编程字体类
font-family: Consolas, monospace;

11. 如果用了float

.clearfix::after{
  content:'';
  display: block;
  clear:both;
}
// helper.scss
// placeholder
%x{
  &::after{
    content: '';
    clear: both;
    display: block;
  }
}
// 如何用
// money.vue
.buttons {
  @extend %x;
}

12. 两层内阴影的写法

box-shadow: inset 0 -5px 5px -5px fade_out(black, 0.5),
inset 0 5px 5px -5px fade_out(black, 0.5);

13. 多个地方统一替换

14. 用前缀控制组件内css样式

// 这样写会有bug,要写deep

// Money.vue
<Layout class-prefix="layout">
</Layout>
<style lang="scss">
  .layout-content{
    border: 3px solid red;
  }
  .layout-wrapper{
    border: 3px solid blue;
  }
</style>

// Layout.vue
<template>
  <div class="layout-wrapper" :class="classPrefix && `${classPrefix}-wrapper`">
    <div class="content" :class="classPrefix && `${classPrefix}-content`">
      <slot />
    </div>
    <Nav/>
  </div>
</template>

<script lang="ts">
  export default {
    props: ['classPrefix'],
    name: "Layout"
  }
</script>

15. 如何模块化

上一篇 下一篇

猜你喜欢

热点阅读