npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ophiuchus/image

v1.0.2

Published

### 介绍

Downloads

13

Readme

Image 图片

介绍

增强版的 img 标签,提供多种图片填充模式,支持图片懒加载、加载中提示、加载失败提示。

引入

import Vue from 'vue';
import Image from '@ophiuchus/image';

Vue.use(Image);

代码演示

基础用法

基础用法与原生 img 标签一致,可以设置 srcwidthheightalt 等原生属性。

<sf-image
  width="100"
  height="100"
  src="https://img3.tuhu.org/oySzSsdrSCR36UGcCtVbsQ_w800_h550.jpeg"
/>

填充模式

通过 fit 属性可以设置图片填充模式,可选值见下方表格。

<sf-image
  width="10rem"
  height="10rem"
  fit="contain"
  src="https://img3.tuhu.org/oySzSsdrSCR36UGcCtVbsQ_w800_h550.jpeg"
/>

圆形图片

通过 round 属性可以设置图片变圆,注意当图片宽高不相等且 fitcontainscale-down 时,将无法填充一个完整的圆形。

<sf-image
  round
  width="10rem"
  height="10rem"
  src="https://img3.tuhu.org/oySzSsdrSCR36UGcCtVbsQ_w800_h550.jpeg"
/>

图片懒加载

设置 lazy-load 属性来开启图片懒加载,需要搭配 Lazyload 组件使用。

<sf-image
  width="100"
  height="100"
  lazy-load
  src="https://img3.tuhu.org/oySzSsdrSCR36UGcCtVbsQ_w800_h550.jpeg"
/>
import Vue from 'vue';
import Lazyload from '@ophiuchus/lazyload';

Vue.use(Lazyload);

加载中提示

Image 组件提供了默认的加载中提示,支持通过 loading 插槽自定义内容。

<sf-image src="https://img3.tuhu.org/oySzSsdrSCR36UGcCtVbsQ_w800_h550.jpeg">
  <template v-slot:loading>
    <sf-loading type="spinner" size="20" />
  </template>
</sf-image>

加载失败提示

Image 组件提供了默认的加载失败提示,支持通过 error 插槽自定义内容。

<sf-image src="https://img3.tuhu.org/oySzSsdrSCR36UGcCtVbsQ_w800_h550.jpeg">
  <template v-slot:error>加载失败</template>
</sf-image>

API

Props

| 参数 | 说明 | 类型 | 默认值 | | --- | --- | --- | --- | | src | 图片链接 | string | - | | fit | 图片填充模式 | string | fill | | alt | 替代文本 | string | - | | width | 宽度,默认单位为px | number | string | - | | height | 高度,默认单位为px | number | string | - | | radius | 圆角大小,默认单位为px | number | string | 0 | | round | 是否显示为圆形 | boolean | false | | lazy-load | 是否开启图片懒加载,须配合 Lazyload 组件使用 | boolean | false | | show-error | 是否展示图片加载失败提示 | boolean | true | | show-loading | 是否展示图片加载中提示 | boolean | true | | error-icon | 失败时提示的图标名称或图片链接 | string | photo-fail | | loading-icon | 加载时提示的图标名称或图片链接 | string | photo | | icon-prefix | 图标类名前缀,同 Icon 组件的 class-prefix 属性 | string | sf-icon |

图片填充模式 

| 名称 | 含义 | | ---------- | ------------------------------------------------------ | | contain | 保持宽高缩放图片,使图片的长边能完全显示出来 | | cover | 保持宽高缩放图片,使图片的短边能完全显示出来,裁剪长边 | | fill | 拉伸图片,使图片填满元素 | | none | 保持图片原有尺寸 | | scale-down | 取nonecontain中较小的一个 |

Events

| 事件名 | 说明 | 回调参数 | | ------ | ------------------ | -------------- | | click | 点击图片时触发 | event: Event | | load | 图片加载完毕时触发 | - | | error | 图片加载失败时触发 | - |

Slots

| 名称 | 说明 | | ---------------- | -------------------------- | | default | 自定义图片下方的内容 | | loading | 自定义加载中的提示内容 | | error | 自定义加载失败时的提示内容 |

样式变量

组件提供了下列 Less 变量,可用于自定义样式,使用方法请参考主题定制

| 名称 | 默认值 | 描述 | | ----------------------------------- | ------------------- | ---- | | @image-placeholder-text-color | @gray-6 | - | | @image-placeholder-font-size | @font-size-md | - | | @image-placeholder-background-color | @background-color | - | | @image-loading-icon-size | 32px | - | | @image-loading-icon-color | @gray-4 | - | | @image-error-icon-size | 32px | - | | @image-error-icon-color | @gray-4 | - |

常见问题

如何引用本地图片?

在 .vue 文件中通过相对路径引用本地图片时,需要在图片的链接外包上一层 require(),将图片 URL 转换为 webpack 模块请求,并结合 file-loader 或者 url-loader 进行处理。

<!-- 错误写法 -->
<sf-image src="./image.png" />

<!-- 正确写法 -->
<sf-image :src="__require__('./image.png')" /> // 由于md插件解析的bug,实际使用请把 __require__ 替换成 require。

对此更详细的解释可以参考 vue-loader 的处理资源路径章节。

使用 image 标签无法渲染?

使用 Image 组件时,可能会遇到将 <image> 作为标签名时无法渲染的问题,比如下面的写法:

<template>
  <image src="xxx" />
</template>

<script>
import { Image } from '@ophiuchus/image';

export default {
  components: {
    Image,
  },
};
<script>

这是因为 <image> 标签是原生的 SVG 标签,Vue 不允许将原生标签名注册为组件名,使用 <sf-image> 即可规避这个问题。