项目初始化基础配置

343 阅读9分钟

vue3.0 vue.config.js基础配置

const path = require('path');
const resolve = dir => {
    return path.join(__dirname, dir)
}
module.exports = {
    // 如果你不需要使用eslint,把lintOnSave设为false即可
    lintOnSave: false,
    chainWebpack: config => {
        config.resolve.alias
            .set('@', resolve('src'))
            .set('styles', resolve('src/styles'))
            .set('_c', resolve('src/components'))
            .set('_v', resolve('src/views'))
    },
    // 打包时不生成.map文件
    productionSourceMap: false
    // 这里写你调用接口的基础路径,来解决跨域,如果设置了代理,那你本地开发环境的axios的baseUrl要写为 '' ,即空字符串
    // devServer: {
    //   proxy: 'localhost:3000'
    // }
}

移动端的自适应2vw的配置

重点:要把core-js 升级到 @3:npm i core-js@3 -S

插件的安装

npm i cssnano postcss-aspect-ratio-mini postcss-preset-env postcss-px-to-viewport postcss-viewport-units postcss-write-svg -S

npm i cssnano-preset-advanced -D

npm i postcss-import postcss-url autoprefixer -D

postcss.config.js里面的配置

 //https://github.com/michael-ciniawsky/postcss-load-config

// module.exports = {
//      plugins: {
//          autoprefixer: {}
//      }
// }

module.exports = {
  "plugins": {
    "postcss-import": {},
    "postcss-url": {},
    "postcss-aspect-ratio-mini": {}, 
      "postcss-write-svg": {
        utf8: false
      },
      "postcss-cssnext": {},
      "postcss-px-to-viewport": {
        viewportWidth: 750, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750 
        viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置 
        unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除) 
        viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw 
        selectorBlackList: ['.ignore', '.hairlines'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名 
        minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值 
        mediaQuery: false, // 允许在媒体查询中转换`px` 
        exclude: /(\/|\\)(node_modules)(\/|\\)/ //在node_modules文件里面的样式不转成vw
      }, 
      "postcss-viewport-units":{},
      "cssnano": {
        preset: "advanced",
        autoprefixer: false,
        "postcss-zindex": false
      },
  }
}

移动端css初始化样式

/* 移动端要加上<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,er-scalable=no"> */
@charset "utf-8";html{background-color:#fff;color:#000;font-size:12px}
body,ul,ol,dl,dd,h1,h2,h3,h4,h5,h6,figure,form,fieldset,legend,input,textarea,button,p,blockquote,th,td,pre,xmp{margin:0;padding:0}
body,input,textarea,button,select,pre,xmp,tt,code,kbd,samp{line-height:1.5;font-family:tahoma,arial,"Hiragino Sans GB",simsun,sans-serif}
h1,h2,h3,h4,h5,h6,small,big,input,textarea,button,select{font-size:100%}
h1,h2,h3,h4,h5,h6{font-family:tahoma,arial,"Hiragino Sans GB","微软雅黑",simsun,sans-serif}
h1,h2,h3,h4,h5,h6,b,strong{font-weight:normal}
address,cite,dfn,em,i,optgroup,var{font-style:normal}
table{border-collapse:collapse;border-spacing:0;text-align:left}
caption,th{text-align:inherit}
ul,ol,menu{list-style:none}
fieldset,img{border:0}
img,object,input,textarea,button,select{vertical-align:middle}
article,aside,footer,header,section,nav,figure,figcaption,hgroup,details,menu{display:block}
audio,canvas,video{display:inline-block;*display:inline;*zoom:1}
blockquote:before,blockquote:after,q:before,q:after{content:"\0020"}
textarea{overflow:auto;resize:vertical}
input,textarea,button,select,a{outline:0 none;border: none;}
button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}
mark{background-color:transparent}
a,ins,s,u,del{text-decoration:none}
sup,sub{vertical-align:baseline}
html {overflow-x: hidden;height: 100%;font-size: 50px;-webkit-tap-highlight-color: transparent;}
body {font-family: Arial, "Microsoft Yahei", "Helvetica Neue", Helvetica, sans-serif;color: #333;font-size: .28em;line-height: 1;-webkit-text-size-adjust: none;}
hr {height: .02rem;margin: .1rem 0;border: medium none;border-top: .02rem solid #cacaca;}
a {color: #25a4bb;text-decoration: none;}
* {box-sizing: border-box;}

css基础样式

// Variables
// --------------------------------------------------

@font-size-small        : 12px;
@font-size-base         : 14px;
@font-size-big          : 18px;
@font-size-title        : 16px;
@font-size-large        : 30px;

// Color

@main-color             : #1890FF ;
@auxiliary-color        : #243857;
@info-color             : #44B9C2;
@success-color          : #50D6DF;
@warning-color          : #ECA828;
@error-color            : #EE0F25;
@disable-color          : #E6E6E6;

@text-strong-color      : #000000;   // 一级标题
@text-primary-color     : #333333;   // 主要文字
@text-regular-color     : #666666;   // 常规文字
@text-secondary-color   : #999999 ;  // 次要文字
@text-light-color       : #cccccc ;  // 次要文字

@title-color            : #485465;
@text-color             : @text-regular-color;
@checkbox-color         : #30313E;
@online-color           : #BF8CF1;
@base-color             : #94A4CB;
@shadow-color           : rgba(0, 0, 0, 0.10);
@border-color           : fade(@disable-color, 60%);   // 设置颜色透明度
@link-color             : #2D8cF0;
@white-color            : #FFFFFF;

// Background color

@background-color-base  : #FAFAFA;
@background-color-active: #F3F3F3;
@background-color-body  : #F0F2F5;
@background-color-hover : @main-color;
@background-color       : #FEFEFF;
@background-error       : #FF5263 ;
@background-color-white : #FFFFFF;
@background-color-secondary : fade(@main-color, 10%); // 辅助背景颜色
@background-color-regular: #FFFFFF;



// Shadow

@shadow-common          : 0 0 4px 0 @shadow-color;
@shadow-base            : @shadow-down;
@shadow-card            : 0 0 5px 1px @border-color;
@shadow-up              : 0 -1px 6px @border-color;
@shadow-down            : 0 1px 6px @border-color;
@shadow-left            : -1px 0 6px @border-color;
@shadow-right           : 1px 0 6px @border-color;

// border

@border-radius          : 3px;

工具方法

/* 占位符 */
.zw10{height: .10px;}
.zw20{height: .20px;}

/*字体颜色*/
.font-white                         {color: white !important;}
.font-blue                          {color: @info-color !important;}
.font-black                         {color: @text-strong-color !important;}
.font-grey                          {color: @text-regular-color !important;}
.font-light-grey                    {color: @text-secondary-color !important;}
.font-light                         {color: @text-light-color !important;}
.font-base                          {color: @text-primary-color !important;}
.font-success                       {color: @success-color !important;}
.font-warning                       {color: @warning-color !important;}
.font-error                         {color: @error-color !important;}
.font-online                        {color: @online-color !important;}
.font-hover                         {color: @main-color !important;}
.font-disable                       {color: @disable-color;}
.font-purple                        {color: @main-color;}

/*背景颜色*/
.bg-white                           {background-color: white !important;}
.bg-grey                            {background-color: @text-regular-color !important;}
.bg-green                           {background-color: #99CC33;}
.bg-orange                          {background-color: #fd7c56;}
.bg-online                          {background-color: @online-color;}
.bg-light-purple                    {background-color: #EFF1F9;}
.bg-f8                              {background-color: #f8f8f8;}
.bg-e                               {background-color: #eee;}

/*鼠标颜色*/
.cursor-pointer                     {cursor: pointer;}
.cursor-normal                      {cursor: default}

/*边框*/
.bor1                               {border: .6px solid #eee !important;}
.bor0                               {border: 0 !important;}
.nobor:after                        {width: 0 !important;  height: 0 !important;}
.bl0                                {border-left:0 !important;}
.bl1                                {border-left:1px solid @border-color;;}
.br0                                {border-right:0 !important;}
.br1                                {border-right:1px solid @border-color;;}
.bt0                                {border-top:0 !important;}
.bt1                                {border-top:1px solid @border-color;;}
.bb0                                {border-bottom:0 !important;}
.bb1                                {border-bottom:1px solid @border-color;;}
.bordered                           {border: 1px solid @border-color;}
.bordered-top                       {border-top: 1px solid @border-color;}
.bordered-bottom                    {border-bottom: 1px solid @border-color;}
.last-no-border >div:last-of-type   {border: 0};
.bradius4                           {border-radius: 4px;}
.bradius50                          {border-radius: 50px;}
.b-color                            {border-color: #ddd;}

/*****文字排版******/
.f10                                {font-size: 10px;}
.f11                                {font-size: 11px;}
.f12                                {font-size: 12px;}
.f13                                {font-size: 13px;}
.f14                                {font-size: 14px !important;}
.f15                                {font-size: 15px;}
.f16                                {font-size: 16px;}
.f18                                {font-size: 18px;}
.f20                                {font-size: 20px !important;}
.f24                                {font-size: 24px !important;}
.fb                                 {font-weight: bold;}
.fn                                 {font-weight: normal;}
.t2                                 {text-indent: 2em;}
.lh150                              {line-height: 150%}
.lh180                              {line-height: 180%}
.lh200                              {line-height: 200%}
.unl                                {text-decoration: underline;}
.lth                                {text-decoration: line-through;}
.no_unl                             {text-decoration: none;}
.no_unl:hover                       {text-decoration: none;}
.wb                                 {word-break:break-all;}
.ws                                 {white-space:nowrap;}

/****定位****/
.tl                                 {text-align: left;}
.tc                                 {text-align: center;}
.tr                                 {text-align: right;}
.bc                                 {margin-left: auto; margin-right: auto;}
.fl                                 {float: left;}
.fr                                 {float: right;}
.cb                                 {clear: both;}
.cl                                 {clear: left;}
.cr                                 {clear: right;}
.clearfix:before                    {content:''; display:table;}
.clearfix:after                     {content:''; display:block; height:0; clear:both; visibility:hidden}
.pr                                 {position: relative;}
.pa                                 {position: absolute;}
.pf                                 {position: fixed;}
.abs-right                          {position: absolute; right: 0;}
.zoom                               {zoom: 1;}
.hidden                             {visibility: hidden;}
.overflow-hidden                    {overflow: hidden;}
.overflow-y                         {overflow-y: auto;}
.overflow-x                         {overflow-x: auto;}
.touch                              {-webkit-overflow-scrolling: touch;}
.none                               {display: none;}
.flex                               {display: flex;}
.flex1                              {flex: 1;}
.flex-align                         {align-items: center;}
.flex-justify                       {justify-content: center;}
.flex-justify-between               {justify-content: space-between;}
.flex-column                        {display: flex;height:100%;flex-direction: column;overflow: hidden;}

/******长度 高度*******/
.w10                                {width: 10px;}
.w20                                {width: 20px;}
.w30                                {width: 30px;}
.w40                                {width: 40px;}
.w50                                {width: 50px !important;}
.w60                                {width: 60px !important;}
.w70                                {width: 70px;}
.w80                                {width: 80px !important;}
.w90                                {width: 90px;}
.w95                                {width: 95px !important;}
.w100                               {width: 100px !important;}
.w150                               {width: 150px !important;}
.w200                               {width: 200px !important;}
.w300                               {width: 300px !important;}
.w400                               {width: 400px !important;}
.w500                               {width: 500px;}
.w600                               {width: 600px;}
.w700                               {width: 700px;}
.w800                               {width: 800px;}
.w                                  {width: 100%;}
.w_5                                {width: 5%;}
.w_20                               {width: 20%;}
.w_25                               {width: 25%}
.w_75                               {width: 75%;}
.h50                                {height: 50px;}
.h80                                {height: 80px;}
.h100                               {height: 100px;}
.h200                               {height: 200px;}
.h400                               {height: 400px;}
.h                                  {height: 100%}

/******限制行数*******/
.rows-1                             {overflow: hidden; text-overflow: ellipsis; white-space:nowrap;}
.rows-2                             {overflow: hidden; text-overflow: ellipsis;display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient:vertical; line-height: normal; line-height: normal; max-height: 3em; position: relative;}
// .rows-2::after {content: '...'; position: absolute; right: 0; bottom: 0}

/******边距*******/
.m10                                {margin: 10px;}
.m15                                {margin: 15px;}
.m30                                {margin: 30px;}
.mt0                                {margin-top: 0;}
.mt5                                {margin-top: 5px;}
.mt8                                {margin-top: 8px;}
.mt10                               {margin-top: 10px;}
.mt15                               {margin-top: 15px;}
.mt20                               {margin-top: 20px;}
.mt25                               {margin-top: 25px;}
.mt30                               {margin-top: 30px;}
.mt50                               {margin-top: 50px;}
.mt100                              {margin-top: 100px;}
.mt150                              {margin-top: 150px;}
.mb0                                {margin-bottom: 0 !important;}
.mb5                                {margin-bottom: 5px;}
.mb10                               {margin-bottom: 10px !important;}
.mb15                               {margin-bottom: 15px !important;}
.mb20                               {margin-bottom: 20px !important;}
.mb30                               {margin-bottom: 30px !important;}
.mb50                               {margin-bottom: 50px !important;}
.mb100                              {margin-bottom: 100px !important;}
.ml5                                {margin-left: 5px;}
.ml10                               {margin-left: 10px;}
.ml15                               {margin-left: 15px;}
.ml20                               {margin-left: 20px;}
.ml25                               {margin-left: 25px;}
.ml30                               {margin-left: 30px;}
.ml50                               {margin-left: 50px;}
.ml85                               {margin-left: 85px;}
.ml100                              {margin-left: 100px !important;}
.mr0                                {margin-right: 0 !important;}
.mr5                                {margin-right: 5px!important;}
.mr10                               {margin-right: 10px !important;}
.mr15                               {margin-right: 15px;}
.mr20                               {margin-right: 20px;}
.mr30                               {margin-right: 30px;}
.mr50                               {margin-right: 50px;}
.mr100                              {margin-right: 100px;}
.m0                                 {margin: 0!important;}
.p0                                 {padding: 0!important;}
.pl0                                {padding-left: 0;}
.pr0                                {padding-right: 0}
.p5                                 {padding: 5px;}
.p8                                 {padding: 8px;}
.p10                                {padding: 10px;}
.p15                                {padding: 15px;}
.p30                                {padding: 30px;}
.pt0                                {padding-top: 0px;}
.pt5                                {padding-top: 5px;}
.pt10                               {padding-top: 10px;}
.pt15                               {padding-top: 15px;}
.pt20                               {padding-top: 20px;}
.pt30                               {padding-top: 30px;}
.pt50                               {padding-top: 50px;}
.pt100                              {padding-top: 100px;}
.pb0                                {padding-bottom: 0 !important;}
.pb5                                {padding-bottom: 5px;}
.pb10                               {padding-bottom: 10px;}
.pb15                               {padding-bottom: 15px;}
.pb20                               {padding-bottom: 20px;}
.pb30                               {padding-bottom: 30px;}
.pb50                               {padding-bottom: 50px;}
.pb100                              {padding-bottom: 100px;}
.pb120                              {padding-bottom: 120px;}
.pl5                                {padding-left: 5px !important;}
.pl10                               {padding-left: 10px;}
.pl15                               {padding-left: 15px;}
.pl20                               {padding-left: 20px;}
.pl30                               {padding-left: 30px;}
.pl50                               {padding-left: 50px;}
.pl85                               {padding-left: 85px;}
.pl100                              {padding-left: 100px !important;}
.pr5                                {padding-right: 5px !important;}
.pr10                               {padding-right: 10px;}
.pr15                               {padding-right: 15px;}
.pr20                               {padding-right: 20px;}
.pr30                               {padding-right: 30px;}
.pr50                               {padding-right: 50px;}
.pr100                              {padding-right: 100px !important;}
.plr15                              {padding: 0 15px}
.ptb10                              {padding: 10px 0}

/*文本垂直对齐*/
.vt                                 {vertical-align: top;}
.vm                                 {vertical-align: middle;}
.vb                                 {vertical-align: bottom;}

/*没有padding*/
.npl                                {padding-left: 0 !important;}
.npr                                {padding-right: 0;}
.npt                                {padding-top: 0}
.npb                                {padding-bottom: 0;}

.font-two                           { text-overflow: -o-ellipsis-lastline;overflow: hidden;text-overflow: ellipsis;display:-webkit-box;-webkit-line-clamp: 2;line-clamp: 2;-webkit-box-orient: vertical;}
.font-one                           { white-space: nowrap;text-overflow: ellipsis;overflow: hidden;word-break: break-all;}

pc端css样式初始化

/* normalize.css */

html {
  line-height: 1.15;
  /* 1 */
  -ms-text-size-adjust: 100%;
  /* 2 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
}

article,
aside,
footer,
header,
nav,
section {
  display: block;
}



hr {
  box-sizing: content-box;
  /* 1 */
  height: 0;
  /* 1 */
  overflow: visible;
  /* 2 */
}

pre {
  font-family: monospace, monospace;
  /* 1 */
  font-size: 1em;
  /* 2 */
}

a {
  background-color: transparent;
  /* 1 */
  -webkit-text-decoration-skip: objects;
  /* 2 */
}

abbr[title] {
  border-bottom: none;
  /* 1 */
  text-decoration: underline;
  /* 2 */
  text-decoration: underline dotted;
  /* 2 */
}

b,
strong {
  font-weight: inherit;
}

b,
strong {
  font-weight: bolder;
}


audio,
video {
  display: inline-block;
}

audio:not([controls]) {
  display: none;
  height: 0;
}

img {
  border-style: none;
  display: block;
}

svg:not(:root) {
  overflow: hidden;
}

button,
input,
optgroup,
select,
textarea {
  font-family: sans-serif;
  /* 1 */
  font-size: 100%;
  /* 1 */
  line-height: 1.15;
  /* 1 */
  margin: 0;
  /* 2 */
}

button,
input {
  /* 1 */
  overflow: visible;
}

button,
select {
  /* 1 */
  text-transform: none;
}

button,
html [type="button"],

/* 1 */

[type="reset"],
[type="submit"] {
  -webkit-appearance: button;
  /* 2 */
}

button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
  border-style: none;
  padding: 0;
}

button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: 1px dotted ButtonText;
}


textarea {
  overflow: auto;
}

[type="checkbox"],
[type="radio"] {
  box-sizing: border-box;
  /* 1 */
  padding: 0;
  /* 2 */
}

[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
  height: auto;
}

[type="search"] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}

 ::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}



canvas {
  display: inline-block;
}

[hidden] {
  display: none;
}


/* reset */

html,
body,
h1,
h2,
h3,
h4,
h5,
h6,
div,
dl,
dt,
dd,
ul,
ol,
li,
p,
blockquote,
pre,
hr,
figure,
table,
caption,
th,
td,
form,
fieldset,
legend,
input,
button,
textarea,
menu {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  list-style: none;
}