我就是
张龙飞张老二
profession
职业是一个 无产阶级工农 并且是一个 业余金融风投外汇操盘手. 还是一个 灵魂歌手 此外顺带着 敲点代码的前端码农
Image









resume
没啥可说的,该吃吃该睡睡,逍遥又快活,赛过活神仙,下面我给大家吟诗一首:"
君不见黄河之水天上来。
奔流到海不复回。
君不见高堂明镜悲白发。
朝如青丝暮成雪。
人生得意须尽欢。
莫使金樽空对月。
天生我材必有用。
千金散尽还复来。
烹羊宰牛且为乐。
会须一饮三百杯。
岑夫子。
丹丘生。
将进酒
君莫停。
与君歌一曲。
请君为我侧耳听。
钟鼓馔玉不足贵。
但愿长醉不愿醒。
古来圣贤皆寂寞。
惟有饮者留其名。
陈王昔时宴平乐。
斗酒十千恣欢谑。
主人何为言少钱。
径须沽取对君酌。
五花马。
千金裘。
呼儿将出换美酒。
与尔同销万古愁
"
再来一首:"
赵客缦胡缨。
吴钩霜雪明。
银鞍照白马。
飒沓如流星。
十步杀一人。
千里不留行。
事了拂衣去。
深藏身与名。
闲过信陵饮。
脱剑膝前横。
将炙啖朱亥。
持觞劝侯嬴。
三杯吐然诺。
五岳倒为轻。
眼花耳热后。
意气素霓生。
救赵挥金槌。
邯郸先震惊。
千秋二壮士。
煊赫大梁城。
纵死侠骨香。
不惭世上英。
谁能书阁下。
白首太玄经。
"
吟诗,喝酒,醉卧沙场,人生不过一场戏,梦醒云烟散,又何必在意,一花一世界 一叶一菩提,菩提本无树,明镜亦非台,本来无一物,何处惹尘埃。
猫缘很好,08年遇见张三,共度余生,转眼11年,又遇110斤,与子携老。张某人生亦无悔无憾已。
Box skill
HTML & CSS 表演艺术家;高级IF-ELSE开发工程师;API调用专家;初级PPT专员,前端工程师。
精通 :
es6, css3, html5,
掌握 :
vue, 小程序, webStorm工具DEI, apiCloud 混合开发工具, iView UI框架, Element UI框架
了解 :
React, Angular, postman 自动化API测试, Ts, node, php, mysql, 初级开发模式, 初级算法, npm, webpack, ESLint
SimplePagination Code
SimplePagination: function () {
function SimplePagination(totalPageCount) {
if (!totalPageCount)
return;
this.state = {
pageNumber: 1,
totalPageCount: totalPageCount
};
}
SimplePagination.prototype.init = function (paramsObj) {
var state = this.state;
// 页面元素的外部容器
state.container = paramsObj.container || '.pagination';
state.totalPageCount = paramsObj.totalPageCount || 10;
state.pageNumber = paramsObj.pageNumber || 1;
// 不包括开头和结尾的两个固定按钮外,中间最多展示几个数字页码按钮
state.maxShowBtnCount = paramsObj.maxShowBtnCount || 3;
// 所有的页码元素,包括上一页、下一页
state.pCName = paramsObj.pCName || 'page',
// 当选中页码时添加的类名class
state.activeCName = paramsObj.activeCName || 'active',
// 代表页码数字的属性
state.dataNumberAttr = paramsObj.dataNumberAttr || 'data-number',
// 上一页 按钮的类名class
state.prevCName = paramsObj.prevCName || 'previous',
// 下一页 按钮的类名class
state.nextCName = paramsObj.nextCName || 'next',
// 禁用 上一页 按钮时给此按钮添加的类名class
state.disbalePrevCName = paramsObj.disbalePrevCName || 'disabled',
// 禁用 下一页 按钮时给此按钮添加的类名class
state.disbaleNextCName = paramsObj.disbaleNextCName || 'disabled',
// 不包括 上一页 下一页 省略号 按钮的页码元素类名
state.pageNumberCName = paramsObj.pageNumberCName || 'page-number';
// 触发切换页面的事件
state.swEvent = paramsObj.swEvent || 'click';
// 切换页面时调用的函数
state.onPageChange = paramsObj.onPageChange || state.onPageChange;
// 当需要省略符号占位时,确定 active的位置
state.totalPageCount > state.maxShowBtnCount + 2 && (state.activePosition = Math.ceil(state.maxShowBtnCount / 2));
this.renderPageDOM();
};
SimplePagination.prototype.switchPage = function () {
var _this = this;
var state = this.state;
var pCNameList = this.selectorEle('.' + state.pCName, true);
var pageNumber;
pCNameList.forEach(function (item) {
item.addEventListener(state.swEvent, function (e) {
var currentPageEle = e.target;
if (_this.hasClass(currentPageEle, state.activeCName))
return;
var dataNumberAttr = currentPageEle.getAttribute(state.dataNumberAttr);
if (dataNumberAttr) {
// 点击 数字 按钮
pageNumber = +dataNumberAttr;
}
else if (_this.hasClass(currentPageEle, state.prevCName)) {
// 点击 上一页 按钮
state.pageNumber > 1 && (pageNumber = state.pageNumber - 1);
}
else if (_this.hasClass(currentPageEle, state.nextCName)) {
// 点击 下一页 按钮
state.pageNumber < state.totalPageCount && (pageNumber = state.pageNumber + 1);
}
pageNumber && _this.gotoPage(pageNumber);
});
});
};
SimplePagination.prototype.gotoPage = function (pageNumber) {
var state = this.state;
var evaNumberLi = this.selectorEle('.' + state.pageNumberCName, true);
var len = evaNumberLi.length;
if (!len || this.isIllegal(pageNumber))
return;
// 清除 active 样式
this.removeClass(this.selectorEle("." + state.pCName + "." + state.activeCName), state.activeCName);
if (state.activePosition) {
var rEllipseSign = state.totalPageCount - (state.maxShowBtnCount - state.activePosition) - 1;
// 左边不需要出现省略符号占位
if (pageNumber <= state.maxShowBtnCount && (pageNumber < rEllipseSign)) {
if (+evaNumberLi[1].getAttribute(state.dataNumberAttr) > 2) {
for (var i = 1; i < state.maxShowBtnCount + 1; i++) {
evaNumberLi[i].innerText = i + 1;
evaNumberLi[i].setAttribute(state.dataNumberAttr, i + 1);
}
}
this.hiddenEllipse('.ellipsis-head');
this.hiddenEllipse('.ellipsis-tail', false);
this.addClass(evaNumberLi[pageNumber - 1], state.activeCName);
}
// 两边都需要出现省略符号占位
if (pageNumber > state.maxShowBtnCount && pageNumber < rEllipseSign) {
// 针对 maxShowBtnCount===1 的特殊处理
this.hiddenEllipse('.ellipsis-head', pageNumber === 2 && state.maxShowBtnCount === 1);
this.hiddenEllipse('.ellipsis-tail', false);
for (var i = 1; i < state.maxShowBtnCount + 1; i++) {
evaNumberLi[i].innerText = pageNumber + (i - state.activePosition);
evaNumberLi[i].setAttribute(state.dataNumberAttr, pageNumber + (i - state.activePosition));
}
this.addClass(evaNumberLi[state.activePosition], state.activeCName);
}
// 右边不需要出现省略符号占位
if (pageNumber >= rEllipseSign) {
this.hiddenEllipse('.ellipsis-tail');
this.hiddenEllipse('.ellipsis-head', false);
if (+evaNumberLi[len - 2].getAttribute(state.dataNumberAttr) < state.totalPageCount - 1) {
for (var i = 1; i < state.maxShowBtnCount + 1; i++) {
evaNumberLi[i].innerText = state.totalPageCount - (state.maxShowBtnCount - i) - 1;
evaNumberLi[i].setAttribute(state.dataNumberAttr, state.totalPageCount - (state.maxShowBtnCount - i) - 1);
}
}
this.addClass(evaNumberLi[(state.maxShowBtnCount + 1) - (state.totalPageCount - pageNumber)], state.activeCName);
}
}
else {
// 不需要省略符号占位
this.addClass(evaNumberLi[pageNumber - 1], state.activeCName);
}
state.pageNumber = pageNumber;
state.onPageChange && state.onPageChange(state);
// 判断 上一页 下一页 是否可使用
this.switchPrevNextAble();
};
SimplePagination.prototype.switchPrevNextAble = function () {
var state = this.state;
var prevBtn = this.selectorEle('.' + state.prevCName);
var nextBtn = this.selectorEle('.' + state.nextCName);
// 当前页已经是第一页,则禁止 上一页 按钮的可用性
state.pageNumber > 1
? (this.hasClass(prevBtn, state.disbalePrevCName) && this.removeClass(prevBtn, state.disbalePrevCName))
: (!this.hasClass(prevBtn, state.disbalePrevCName) && this.addClass(prevBtn, state.disbalePrevCName));
// 当前页已经是最后一页,则禁止 下一页 按钮的可用性
state.pageNumber >= state.totalPageCount
? (!this.hasClass(nextBtn, state.disbaleNextCName) && this.addClass(nextBtn, state.disbaleNextCName))
: (this.hasClass(nextBtn, state.disbaleNextCName) && this.removeClass(nextBtn, state.disbaleNextCName));
};
SimplePagination.prototype.renderPageDOM = function () {
// 渲染页码DOM
var state = this.state;
var pageContainer = this.selectorEle(state.container);
if (!pageContainer)
return;
var totalPageCount = state.totalPageCount, pCName = state.pCName, prevCName = state.prevCName,
disbalePrevCName = state.disbalePrevCName, pageNumberCName = state.pageNumberCName,
activeCName = state.activeCName, dataNumberAttr = state.dataNumberAttr,
maxShowBtnCount = state.maxShowBtnCount, nextCName = state.nextCName,
disbaleNextCName = state.disbaleNextCName;
var paginationStr = "Prev
1";
if (totalPageCount - 2 > maxShowBtnCount) {
paginationStr += "…";
for (var i = 2; i < maxShowBtnCount + 2; i++) {
paginationStr += "${i}";
}
paginationStr += "
…
${totalPageCount}
";
}
else {
for (var i = 2; i <= totalPageCount; i++) {
paginationStr += "${i}"
}
}
paginationStr += "Next"
pageContainer.innerHTML = paginationStr;
// 切换页码
this.switchPage();
};
SimplePagination.prototype.isIllegal = function (pageNumber) {
var state = this.state;
return (state.pageNumber === pageNumber || Math.ceil(pageNumber) !== pageNumber ||
pageNumber > state.totalPageCount || pageNumber < 1 ||
typeof pageNumber !== 'number' || pageNumber !== pageNumber);
};
SimplePagination.prototype.hiddenEllipse = function (selector, shouldHidden) {
if (shouldHidden === void 0) {
shouldHidden = true;
}
this.selectorEle(selector).style.display = shouldHidden ? 'none' : '';
};
SimplePagination.prototype.selectorEle = function (selector, all) {
if (all === void 0) {
all = false;
}
return all ? document.querySelectorAll(selector) : document.querySelector(selector);
};
SimplePagination.prototype.hasClass = function (eleObj, className) {
return eleObj.classList.contains(className);
};
SimplePagination.prototype.addClass = function (eleObj, className) {
eleObj.classList.add(className);
};
SimplePagination.prototype.removeClass = function (eleObj, className) {
if (this.hasClass(eleObj, className)) {
eleObj.classList.remove(className);
}
};
return SimplePagination;
}(),