当前位置:   article > 正文

css自制icon图标(最简单的一种方式)_css 自制矢量图标

css 自制矢量图标

前言

        近期在系统开发过程中,想在文件上传框下方增加一个公告类的图标,使用的是 element-ui组件库,去官网查了一下发现并没有 el-icon-notice 类型的公告图标(但是在 vant 与 vux 等移动端组件库中是有的),于是想着使用 css 来实现自制 icon 图标,其实自定义 icon 图标方式有好几种,但是笔者只使用了一种较为简单的方式,亲测有效,现分享给同行开发者们。

官网icon总览(未找到公告icon)​​​

 

实现方式

步骤1

        从网上下载自己喜欢的图标或者自制一个 logo 图标,将其放于项目的 /static/images 目录下(根据自己的需求放,也可以放在 assets 目录下,笔者是放在 /static/images 目录下),如下是我自己从网上下载的喇叭图标,图片命名为 notice.jpg

步骤2:

        在 vue 页面中添加如下 html 代码 (el-icon-notice 就是我们自定义的一个图标名称):

  1. <div class="el-upload__tip" slot="tip">
  2. <i class="el-icon-notice"></i>
  3. Only file of Excel type permits and the size of this file can not exceed 10Mb
  4. </div>
步骤3:

        在 vue 页面中继续添加如下的 css 代码:

  1. .el-icon-notice {
  2. content: url('/static/images/notice.jpg'); //图标内容
  3. height: 20px; //图标的高度
  4. width: 25px; //图标的宽度
  5. margin-right: 10px; //图标与后面文字的距离
  6. vertical-align: -5px; //图标的纵向位置,目的是为了保持与提示文字
  7. 位于同一行
  8. }
效果图:

完整代码:

  1. <template>
  2. <el-dialog
  3. :visible.sync="visible"
  4. title="FILE UPLOAD"
  5. @close="close()"
  6. :close-on-click-modal="false"
  7. :close-on-press-escape="false"
  8. width="40%"
  9. >
  10. <el-upload
  11. class="upload"
  12. action="string"
  13. ref="uploadFile"
  14. :auto-upload="false"
  15. :file-list="fileList"
  16. :on-exceed="handleExceed"
  17. :http-request="startUpload"
  18. :on-change="handleChange"
  19. :on-remove="handleRemove"
  20. :before-upload="checkSizeAndType"
  21. accept=".xls,.xlsx"
  22. :limit="1"
  23. drag
  24. >
  25. <i class="el-icon-upload"></i>
  26. <div class="el-upload__text">
  27. Drag file here or<em>click here to upload</em>
  28. </div>
  29. <div class="el-upload__tip" slot="tip">
  30. <i class="el-icon-notice"></i>
  31. Only file of Excel type permits and the size of this file can not exceed 10Mb
  32. </div>
  33. </el-upload>
  34. <el-row class="buttonStyle">
  35. <el-col :span="24">
  36. <el-button type="primary" size="mini" @click="submitUpload">SUBMIT
  37. </el-button>
  38. <el-button type="default" size="mini" plain @click="close()">CANCEL
  39. </el-button>
  40. </el-col>
  41. </el-row>
  42. </el-dialog>
  43. </template>
  44. <script type="text/javascript">
  45. export default {
  46. data() {
  47. return {
  48. fileList: [],
  49. fileNameShow: '',
  50. visible: true,
  51. }
  52. },
  53. mounted() {},
  54. methods: {
  55. handleExceed(files, fileList) {
  56. //文件个数超出限制提示
  57. this.$message.warning('Allowed uploading one file !')
  58. },
  59. handleRemove(file, fileList) {
  60. //删除上传文件
  61. this.fileNameShow = ''
  62. this.fileList = []
  63. },
  64. handleChange(file, fileList) {
  65. // 文件状态钩子,选择文件时触发
  66. this.fileList = fileList
  67. this.fileNameShow = file.name
  68. },
  69. //上传前检查文件的类型和大小
  70. checkSizeAndType(file) {
  71. //允许上传的Excel文件类型
  72. var allowedFileType = [
  73. 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
  74. 'application/vnd.ms-excel',
  75. ]
  76. if (allowedFileType.indexOf(file.type) == -1) {
  77. this.$msgbox({
  78. title: 'SYSTEM PROMPT',
  79. message: 'Illegal file type, please upload file of Excel type !',
  80. type: 'error',
  81. })
  82. return false
  83. }
  84. if (file.size / 1024 / 1024 > 10) {
  85. this.$msgbox({
  86. title: 'SYSTEM PROMPT',
  87. message: 'The file size can not exceed 10 Mb !',
  88. type: 'error',
  89. })
  90. return false
  91. }
  92. return true
  93. },
  94. submitUpload() {
  95. //提交上传文件
  96. if (this.fileList.length === 0) {
  97. this.$msgbox({
  98. title: 'SYSTEM PROMPT',
  99. message: 'Please select file first !',
  100. type: 'error',
  101. })
  102. } else {
  103. //调文件上传钩子函数
  104. this.$refs.uploadFile.submit()
  105. }
  106. },
  107. startUpload(param) {},
  108. close() {},
  109. },
  110. }
  111. </script>
  112. <style type="text/css">
  113. .buttonStyle {
  114. text-align: right;
  115. margin-top: 30px;
  116. }
  117. .upload {
  118. margin-top: 20px;
  119. text-align: center;
  120. }
  121. .el-icon-notice {
  122. content: url('/static/images/notice.jpg');
  123. height: 20px;
  124. width: 25px;
  125. margin-right: 10px;
  126. vertical-align: -5px;
  127. }
  128. .el-upload-dragger{
  129. border: 2px dashed #b881d1
  130. }
  131. .el-upload__tip{
  132. color:#ff0000;
  133. font-size:12px
  134. }
  135. .el-upload-dragger .el-icon-upload{
  136. color:#b881d1
  137. }
  138. </style>

完整结果图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/114020
推荐阅读