width: 100px;
whiteSpace: nowrap
overflow: hidden;
textOverflow: ellipsis;
使用指令效果:
image.png
指令的代码如下:
export default function (el, binding) {
el.style.width = binding.arg || 100 + ‘px’
el.style.whiteSpace = ‘nowrap’
el.style.overflow = ‘hidden’;
el.style.textOverflow = ‘ellipsis’;
}
参数 Attributes:
| 参数 | 说明 | 默认值 | 类型 | 可选 |
| — | — | — | — | — |
| width | 元素宽度 | 100 | Number | 必填 |
然后你可以在模板中任何元素上使用新的 v-ellipsis
property
,如下:
回到顶部指令 v-backtop
使用该指令可以让页面或指定元素回到顶部。
可选指定元素,如果不指定则全局页面回到顶部。可选在元素偏移多少 px
后显示 backtop
元素,例如在滚动 400px
后显示回到顶部按钮。
image.png
指令的代码如下:
export default {
bind (el, binding, vnode) {
// 响应点击后滚动到元素顶部
el.addEventListener(‘click’, () => {
const target = binding.arg ? document.getElementById(binding.arg) : window
target.scrollTo({
top: 0,
behavior: ‘smooth’
})
})
},
update (el, binding, vnode) {
// 滚动到达参数值才出现绑定指令的元素
const target = binding.arg ? document.getElementById(binding.arg) : window
if (binding.value) {
target.addEventListener(‘scroll’, (e) => {
if (e.srcElement.scrollTop > binding.value) {
el.style.visibility = ‘unset’
} else {
el.style.visibility = ‘hidden’
}
})
}
// 判断初始化状态
if (target.scrollTop < binding.value) {
el.style.visibility = ‘hidden’
}
},
unbind (el) {
const target = binding.arg ? document.getElementById(binding.arg) : window
target.removeEventListener(‘scroll’)
el.removeEventListener(‘click’)
}
}
参数 Attributes:
| 参数 | 说明 | 默认值 | 类型 | 可选 |
| — | — | — | — | — |
| id | 给需要回到顶部的元素添加的id
| / | String | 可选 |
| offset | 偏移距离为 height
时显示指令绑定的元素 | / | Number | 可选 |
然后你可以在模板中任何元素上使用新的 v-backtop
property
,如下表示在 id
为 app
的元素滚动 400px
后显示绑定指令的元素:
也可以这样使用,表示为一直显示绑定指令的元素,并且是全局页面回到顶部:
空状态指令 v-empty
使用该指令可以显示缺省的空状态。可以传入默认图片(可选,默认无图片)、默认文字内容(可选,默认为暂无数据)、以及标示是否显示空状态(必选)。
image.png
指令的代码如下:
import Vue from “vue”;
export default {
update (el, binding, vnode) {
el.style.position = el.style.position || ‘relative’
const { offsetHeight, offsetWidth } = el
const { visible, content, img } = binding.value
const image = img ? <img src="${img}" height="30%" width="30%"></img>
: ‘’
const defaultStyle = “position:absolute;top:0;left:0;z-index:9999;background:#fff;display:flex;justify-content: center;align-items: center;”
const empty = Vue.extend({
template: `
})
const component = new empty(). m o u n t ( ) . mount(). mount().el
if (visible) {
el.appendChild(component)
} else {
el.removeChild(el.lastChild)
}
},
}
参数 Attributes:
| 参数 | 说明 | 默认值 | 类型 | 可选 |
| — | — | — | — | — |
| emptyValue | 包含文字内容 content
、图片 img
、是否显示 visible
,仅 visible
必传 | / | Object | 必须 |
然后你可以在模板中任何元素上使用新的 v-empty
property
,如下传入对象 emptyValue
:
需要传入一个参数对象,例如显示文字为:暂无列表,图片路径为 ../../assets/images/blue_big.png
,控制标示 visible
:
emptyValue = {
content: ‘暂无列表’,
img: require(‘…/…/assets/images/blue_big.png’),
visible: true,
},
徽标指令 v-badge
使用该指令在元素右上角显示徽标。
支持配置徽标的背景颜色、徽标形状;支持传入徽标上显示的数字。
指令的代码如下:
import Vue from ‘vue’
const SUCCESS = ‘#72c140’
const ERROR = ‘#ed5b56’
const WARNING = ‘#f0af41’
const INFO = ‘#4091f7’
const HEIGHT = 20
let flag = false
export default {
update (el, binding, vnode) {
const { modifiers, value } = binding
const modifiersKey = Object.keys(modifiers)
let isDot = modifiersKey.includes(‘dot’)
let backgroundColor = ‘’
if (modifiersKey.includes(‘success’)) {
backgroundColor = SUCCESS
} else if (modifiersKey.includes(‘warning’)) {
backgroundColor = WARNING
} else if (modifiersKey.includes(‘info’)) {
backgroundColor = INFO
} else {
backgroundColor = ERROR
}
const targetTemplate = isDot
? <div style="position:absolute;top:-5px;right:-5px;height:10px;width:10px;border-radius:50%;background:${backgroundColor}"></div>
: <div style="background:${backgroundColor};position:absolute;top:-${HEIGHT / 2}px;right:-${HEIGHT / 2}px;height:${HEIGHT}px;min-width:${HEIGHT}px;border-radius:${HEIGHT / 2}px;text-align:center;line-height:${HEIGHT}px;color:#fff;padding:0 5px;">${value}</div>
el.style.position = el.style.position || ‘relative’
const badge = Vue.extend({
template: targetTemplate
})
const component = new badge(). m o u n t ( ) . mount(). mount().el
if (flag) {
el.removeChild(el.lastChild)
}
el.appendChild(component)
flag = true
}
}
参数 Attributes:
| 参数 | 说明 | 默认值 | 类型 | 可选 |
| — | — | — | — | — |
| normal、dot | 徽标形状normal为正常徽标;dot 仅为一个点 | normal | String | 可选 |
| success、error、info、warning | 徽标颜色 | error | String | 可选 |
| number | 徽标上显示的数字 | / | Number | 可选 |
然后你可以在模板中任何元素上使用新的 v-badge
property
,如下:
拖拽指令 v-drag
使用该指令可以对元素进行拖拽。
指令的代码如下:
export default {
let _el = el
document.onselectstart = function() {
return false //禁止选择网页上的文字
}
_el.onmousedown = e => {
let disX = e.clientX - _el.offsetLeft //鼠标按下,计算当前元素距离可视区的距离
let disY = e.clientY - _el.offsetTop
document.onmousemove = function(e){
let l = e.clientX - disX
let t = e.clientY - disY;
_el.style.left = l + “px”
_el.style.top = t + “px”
}
document.onmouseup = e => {
document.onmousemove = document.onmouseup = null
}
return false
}
}
然后你可以在模板中任何元素上使用新的 v-drag
property
,如下:
响应缩放指令 v-resize
使用该指令可以响应元素宽高改变时执行的方法。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
我特地针对初学者整理一套前端学习资料
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
难**』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
我特地针对初学者整理一套前端学习资料
[外链图片转存中…(img-WeDaqkE2-1712247277352)]
[外链图片转存中…(img-SNZtGhZ5-1712247277353)]
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算