zoukankan      html  css  js  c++  java
  • Vue 自定义字体

    • 首先引入字体文件

    • 引入字体到项目

    @font-face {
      font-family: "UnidreamLED";
      src: url('./1.ttf');
    }
    
    • 添加webpack解析
        rules:[
             {
                test: /.(woff2?|eot|ttf|otf)(?.*)?$/,
                loader: 'url-loader',
                options: {
                  limit: 10000,
                  name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
                }
              }
          ]
    
    • 使用
      .button-time {
        font-size: 36px;
        letter-spacing: 4px;
        font-family: UnidreamLED;
        position: absolute;
        margin-top: 50px;
      }
    
    • 到这里都没啥问题,只是在打包的时候会出现找不到字体的问题。

    • 接下来需要修改项目配置

    • webpack.base.config或者utils.js中 找到ExtractTextPlugin

    • 更改前

     ExtractTextPlugin.extract({
            use: loaders,     
            fallback: 'vue-style-loader'
          })
    
    • 更改后,意思是从static路径开始往下找css
    ExtractTextPlugin.extract({
            use: loaders,
            publicPath:'../../',
            fallback: 'vue-style-loader'
          })
    
    • 再次打包就可以正常加载字体文件了

    • build/utils.js文件参考,不止这一种写法

    'use strict'
    const path = require('path')
    const config = require('../config')
    const ExtractTextPlugin = require('extract-text-webpack-plugin')
    const pkg = require('../package.json')
    
    exports.assetsPath = function (_path) {
      const assetsSubDirectory = process.env.NODE_ENV === 'production'
        ? config.build.assetsSubDirectory
        : config.dev.assetsSubDirectory
      return path.posix.join(assetsSubDirectory, _path)
    }
    
    exports.cssLoaders = function (options) {
      options = options || {}
    
      const cssLoader = {
        loader: 'css-loader',
        options: {
          sourceMap: options.sourceMap
        }
      }
    
      var postcssLoader = {
        loader: 'postcss-loader',
        options: {
          sourceMap: options.sourceMap
        }
      }
    
      // generate loader string to be used with extract text plugin
      function generateLoaders (loader, loaderOptions) {
        const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
        if (loader) {
          loaders.push({
            loader: loader + '-loader',
            options: Object.assign({}, loaderOptions, {
              sourceMap: options.sourceMap
            })
          })
        }
    
        // Extract CSS when that option is specified
        // (which is the case during production build)
        if (options.extract) {
          return ExtractTextPlugin.extract({
            use: loaders,
            publicPath:'../../',
            fallback: 'vue-style-loader'
          })
        } else {
          return ['vue-style-loader'].concat(loaders)
        }
      }
    
      // https://vue-loader.vuejs.org/en/configurations/extract-css.html
      return {
        css: generateLoaders(),
        postcss: generateLoaders(),
        less: generateLoaders('less'),
        sass: generateLoaders('sass', { indentedSyntax: true }),
        scss: generateLoaders('sass'),
        stylus: generateLoaders('stylus'),
        styl: generateLoaders('stylus')
      }
    }
    
    // Generate loaders for standalone style files (outside of .vue)
    exports.styleLoaders = function (options) {
      const output = []
      const loaders = exports.cssLoaders(options)
      for (const extension in loaders) {
        const loader = loaders[extension]
        output.push({
          test: new RegExp('\.' + extension + '$'),
          use: loader
        })
      }
      return output
    }
    
    exports.createNotifierCallback = function () {
      const notifier = require('node-notifier')
    
      return (severity, errors) => {
        if (severity !== 'error') {
          return
        }
        const error = errors[0]
    
        const filename = error.file && error.file.split('!').pop()
        notifier.notify({
          title: pkg.name,
          message: severity + ': ' + error.name,
          subtitle: filename || '',
          icon: path.join(__dirname, 'logo.png')
        })
      }
    }
    
  • 相关阅读:
    声明属性Hibernate的Annotation注解
    索引查询MySQL前缀索引导致的慢查询
    定义最小POJ 1384 PigBank
    执行调用bat文件启用dos命令
    控制器框架Struts与策略模式那点事
    路径位置JDK+tomcat 环境变量配置
    目录设置PHP和Apache环境搭建小记
    驱动源码看门狗用户空间程序(可用来检测服务器死机)
    安装文件MyEclipse6.5安装与卸载SVN插件方法
    问题文件Android Studio 安装完成不能打开等问题解决记录
  • 原文地址:https://www.cnblogs.com/songliquan/p/13164428.html
Copyright © 2011-2022 走看看